Меню

Настройка загрузки через сеть



Настройка загрузки через сеть

Загрузка по сети — старая идея. Ключевая идея в том, что компьютер содержит некоторый код начальной загрузки в энергонезависимой памяти, такой как микросхема ПЗУ, что позволяет соединиться с сервером и получить системные файлы по сети.

Для загрузки по сети, компьютер должен получить

образ операционной системы и

обычно, рабочую файловую систему.

Рассмотрим бездисковый компьютер (DC) у которого есть загрузочная сетевая ПЗУ. Возможно наличие нескольких идентичных бездисковых компьютеров. Как же их различать? У этих компьютеров (фактически у их сетевых карт) есть некоторая уникальная информация, это — сетевой Ethernet адрес. Каждая Ethernet карта в мире имеет уникальный 48 битный Ethernet адрес, так как каждый производитель Ethernet аппаратуры зарезервировал для себя блок адресов. По соглашению эти адреса записываются в виде шестнадцатеричных чисел разделенных двоеточием по группам, в каждой группе по две цифры, например — 00:60:08:C7:A3:D8 .

Используемые для получения IP адреса по данному Ethernet адресу протоколы называются Boot Protocol (BOOTP) и Dynamic Host Configuration Protocol (DHCP) . DHCP — развитие BOOTP. В наших рассуждениях, если не указано иное, все что применимо к BOOTP также применимо к DHCP. (Фактически немного неправильно говорить, что BOOTP и DHCP всего лишь транслируют Ethernet адреса, в них предусмотрено обеспечение работы BOOTP и DHCP с любым типом аппаратных адресов, но большинство использует Ethernet.)

Пример обмена информацией BOOTP выглядит подобным образом:

DC: Привет, мой аппаратный адрес 00:60:08:C7:A3:D8 , дай мне мой IP адрес.

BOOTP сервер: (Смотрит в базу данных адресов.) Твое имя aldebaran, твой IP адрес 192.168.1.100, твой сервер 192.168.1.1, твой предполагаемый загрузочный файл /tftpboot/vmlinux.nb (и еще несколько частей информации).

Вы удивитесь, как бездисковый компьютер изначально находит адрес BOOTP сервера. Ответ таков — он его не ищет. Запрос BOOTP широковещательный по локальной сети и любой BOOTP может ответить на запрос.

После получения IP адреса, DC должен загрузить образ операционной системы и выполнить его. Другой используемый тут Интернет протокол называется Trivial File Transfer Protocol (TFTP) . TFTP подобен обрезанной версии FTP — тут нет идентификации, и он работает поверх User Datagram Protocol (UDP), а не поверх Transmission Control Protocol (TCP). UDP был выбран вместо TCP для упрощения. Реализация UDP на DC может быть маленькой, посему код легко помещается в ПЗУ. Так как UDP блочно-ориентированный протокол, в отличие от потоково-ориентированных протоколов, передача следует блок за блоком, как например:

DC: Дай мне 1 блок файла /tftpboot/vmlinux.nb. TFTP сервер: Лови. DC: Дай мне блок 2.

и так далее, пока не будет передан весь файл. Переговариваясь, он подтверждает передачу каждого блока, и потеря пакета будет обнаружена и пакет будет передан через таймаут. Когда все блоки получены, сетевой boot ROM передает управление в точку входа образа операционной системы.

В конце, в случае запуска операционной системы, должна быть предоставлена корневая файловая система. Linux и другими Unix-ами обычно используется Network File System (NFS) , однако возможны другие варианты. В этом случае код не должен находиться в ROM, а должен быть частью загружаемой операционной системы. Однако операционная система вместо реального диска должна запустить корневую файловую систему — NFS. Linux содержит требуемые для этого настройки.

Сетевой загрузчик — небольшая программа, запускаемая как расширение BIOS, расположена обычно на EPROM сетевой платы. Она обрабатывает BOOTP запрос и загрузку по TFTP, а затем передает управление загруженному образу. Она использует TCP/IP протокол, но загруженный образ не обязательно должен быть Linux. Загруженный образ может быть любым, даже DOS. Он также может быть загружен с дискеты для проверки и временных настроек.

Наряду с коммерческими ROM, есть ДВА свободных пакета сетевой загрузки. Свободные реализации TCP/IP сетевых загрузчиков —

Etherboot использует встроенные драйвера, в то время как Netboot использует Packet драйвера. Сначала вы должны проверить, что ваша сетевая карта поддерживается Etherboot или Netboot. До того как вы, в конечном счете, найдете того, кто захочет вставить для вас код в EPROM (Erasable Programmable Read Only Memory), вы можете загружаться по сети с дискеты .

Для создания загрузочной дискеты требуется специальный загрузочный блок, присутствующий в дистрибутиве. Это — маленькая 512 байтная программа загружает следующие далее на дискете блоки в память и предает им выполнение. Таким образом, для создания загрузочной дискеты, требуется соединить загрузочный блок с содержащим драйвер сетевой карты исполняемым файлом Etherboot следующим образом:

# cat floppyload.bin 3c509.lzrom > /dev/fd0

Возьмите пакет nfsboot (пакет доступен на вашем любимом зеркале linux в каталоге /pub/Linux/system/Linux-boot directory). Он содержит booteprom образ вашей сетевой карты (например wd8013), который можно непосредственно записать. Также смотрите LTSP сайт http://www.ltsp.org

Читайте также:  Как в настройках посмотреть пароль сети

Перед тем, как ставить дискету для загрузки по сети, вам следует настроить три службы на Linux —

Вам не следует настраивать их одновременно, вы можете делать поэтапно, проверяя работоспособность каждого этапа перед тем, как переходить к следующему.

либо используя inetd, отредактируйте файл /etc/inetd.conf и вставьте похожую строку:

bootps dgram udp wait root /usr/sbin/in.bootpd bootpd

Вставьте или раскомментируйте следующие две строки в /etc/services:

bootps 67/tcp # BOOTP server tftp 69/udp # TFTP server

Если вы модифицировали /etc/inetd.conf, перезапустите inetd, послав процессу HUP сигнал.

Далее, вам следует указать bootp базу данных с соответствиями Ethernet адресов IP адресам. Эта база данных находится в /etc/bootptab. Вы должны модифицировать ее вставив IP адрес вашего шлюза (gateway), dns сервера, и ethernet адреса ваших бездисковых машин. Он содержит строки следующего вида:

Можно указать и прочую информацию, но мы начнем с простого.

Другой пример /etc/bootptab:

global.prof:\ :sm=255.255.255.0:\ :ds=192.168.1.5:\ :gw=192.168.1.19:\ :ht=ethernet:\ :bf=linux: machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140: machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141: machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:

global.prof — общий шаблон элементов хостов, где

поле sm содержит маску подсети (subnet mask)

поле ds содержит адрес DNS сервера

поле gw содержит адрес шлюза (gateway)

поле ht содержит аппаратный тип сети

поле bf содержит имя загрузочного файла

После этого, каждая машина должна быть представлена строкой:

первое поле содержит имя хоста,

поле hd содержит каталог загрузочного файла,

общий шаблон может быть указан в поле tc

поле ha содержит аппаратный адрес ethernet карты

поле ip содержит назначаемый ip адрес.

Теперь загрузите бездисковый компьютер с дискеты, и он должен обнаружить вашу Ethernet карту и выдать широковещательный BOOTP запрос. Если все идет как надо, сервер должен вернуть ему требуемую информацию. Так как /tftpboot/vmlinux.nb еще не существует, у него не получится загрузить этот файл. Теперь вам следует скомпилировать специальное ядро, оно должно включать опцию монтирования корневой файловой системы с NFS. Также вам следует включить опцию получения IP адреса из BOOTP ответа. Также вы должны включить в ядро Linux драйвер вашей сетевой карты, а не загружать его как модуль. Можно загружать начальный ramdisk, и таким образом сделать возможной загрузку модулей, но этим лучше заняться позже.

Вы не можете установить zImage полученный непосредственно в результате компиляции ядра. Он должен быть преобразован в помеченный образ. Помеченный образ — обычное ядро со специальным заголовком, который указывает сетевому загрузчику, куда в памяти помещать байты и с какого адреса запускать программу. Для создания этого образа используете программу mknbi-linux. Эта утилиту можно найти в дистрибутиве Etherboot. После создания образа, поместите его в каталог /tftpboot под именем указанным в /etc/bootptab. Проверьте, чтобы этот файл был доступен всем для чтения, так как у tftp сервера нет специальных привилегий.

TFTP ищите в tftp*.rpm на компакт-диске Redhat Linux. TFTP (Trivial File Transfer Protocol) — подобный ftp протокол передачи файлов, но намного более простой, что делает возможным закодировать его в EPROM. TFTP может использоваться двумя путями:

Простой tftp: обозначает, что клиент получает доступ ко всем файлам вашей системы. Это просто, но образуется большая дыра в безопасности (любой может получить по tftp ваш файл с паролями).

Безопасный tftp: tftp сервер использует систему chroot.2 для смены собственного корневого каталога. Все, что находится вне нового корневого каталога полностью недоступно. Так как chroot каталог становится новым корневым каталогом, поле hd в файле bootptab должно отражать эту ситуацию. Например: при использовании небезопасного tftp, поле hd содержит полный путь к загрузочному каталогу: /export/root/machine1. При использовании безопасного tftp с каталогом /export в качестве корневого каталога, каталог /export станет / , и поле hd должно быть /root/machine1.

Обычно tftpd запускается из inetd подобного вида строкой в /etc/inetd.conf.

tftp dgram udp wait root /usr/sbin/tcpd in.tftpd -s /tftpboot #tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export

Еще раз перезапустите inetd, послав ему HUP сигнал, и снова попробуйте загрузиться по сети, на этот раз должно загрузиться и выполниться ядро. Вы заметите, что загрузка продолжается до точки, где ядро пытается смонтировать корневую файловую систему. Теперь вы должны настроить экспорт NFS разделов.

По различным причинам, использовать корневую файловую систему сервера в качестве корневой файловой системы бездискового компьютера — плохая идея. Одна из них: есть множество различных конфигурационных файлов, и бездисковый компьютер таким путем будет получать неправильную информацию. Другая — безопасность. Опасно разрешать доступ на запись (а доступ на запись требуется корневой файловой системе по различным причинам) к вашему серверу. Однако хорошей новостью является то, что корневая файловая система бездискового компьютера невелика, всего лишь около 30 Мб и большая ее часть разделяется всеми бездисковыми компьютерами.

В идеале, для создания корневой файловой системы вам нужно знать какие из файлов вашего дистрибутива должны присутствовать. Критичными для загрузки являются файлы устройств, файлы в /sbin и /etc. Вы можете избежать тяжелой работы, создав копию корневой файловой системы и модифицировав несколько файлов для бездискового компьютера. В дистрибутиве Etherboot есть учебник и ссылки на группу скриптов, которые создают корневую файловую систему бездискового компьютера из существующей корневой файловой системы сервера. Также в документации Etherboot есть подсказки, так как это часто сложная часть установки.

Подстроенное для бездискового компьютера ядро Linux ожидает увидеть корневую файловую систему в /tftpboot/(IP адрес бездискового компьютера), например: /tftpboot/192.168.1.100 в вышеприведенном случае. По желанию его можно изменить при конфигурировании ядра.

Теперь создайте или отредактируйте на сервере /etc/exports (см. ‘man 5 exports’ и ‘man 8 exportfs’) и поместите строку следующего вида:

Доступ rw требуется различным системным службам. Атрибут no_root_squash предохраняет NFS систему от отображения root идентификатора на другой. Если это не указано, различные демоны и программы регистрации будут несчастны.

Запустите или перезапустите службы NFS (rpc.portmap и rpc.mountd) и попробуйте загрузить бездисковый компьютер. Если вам повезет, ядро смонтирует корневую файловую систему и загрузится до приглашения к входу. Скорее всего, вы обнаружите, что что-то упустили из виду. Большинство дистрибутивов Linux не предусмотрены для бездисковой загрузки и требуют небольшой модификации. Наиболее частая неисправность — система, в процессе загрузки, полагается на файлы в каталоге /usr, который при загрузке обычно импортируется с сервера позже. Два возможных решения —

Предоставить несколько требуемых файлов в небольшом каталоге /usr на корневой файловой системе, который далее будет перекрыт при импорте /usr, и

Модифицировать пути для поиска файлов в корневой файловой системе. Файлы нужно редактировать в каталоге /tftpboot/192.168.1.100 (помните, что это корневой каталог бездискового компьютера).

Возможно, вы захотите монтировать сервера и другие каталоги, такие как /usr (который должен экспортироваться в режиме только для чтения).

Когда вы уверены, что без проблем сможете загружаться по сети, вы можете поместить код в EPROM.

Одним из основных способов использования загрузки по сети являются X-терминалы. Отсутствие диска на терминале делает его более тихим и предоставляет удобное рабочее окружение. В идеале, машина должна иметь 16 или более мегабайт памяти и самую лучшую видео карту, которую вы сможете для нее найти. Это идеальное использование устаревших старших 486 и нижних Pentium моделей. Некоторые люди используют загрузку по сети для создания кластеров машин, с упрощенным обслуживанием, например кластера из машин в одной комнате.

Для начала вам следует остановиться на домашней странице Etherboot: http://www.slug.org.au/etherboot/ или зеркале и google-сайт

Там вы найдете ссылки на другие ресурсы, включая списки рассылки на которые вы можете подписаться, и где обсуждаются проблемы и решения по данной теме.

NFS-root Mini Howto на /usr/doc/HOWTO/mini или на компакт-диске Linux.

Linux Networking-HOWTO by Terry Dawson, на /usr/doc/HOWTO или на компакт-диске linux 94004531@postoffice.csu.edu.au

NET-3-Howto на /usr/doc/HOWTO или компакт-диске Linux.

/usr/src/linux/README о настройке и компиляции ядра

Источник

Загрузка компьютера по сети с практически любого образа диска

Посетителей: 132510 | Просмотров: 218353 (сегодня 10)

Шрифт:

В данной статье опубликованы способы загрузки компьютера по сети с использованием образов дискет/HDD дисков (возможно использование размеров отличных от 1.44 Мб). Это может понадобиться при отсутствии под рукой другого загрузочного носителя, или для удобства эксплуатации в определенных условиях. Способы как минимум раз были успешно испробованы в реальной ситуации, а если вам известны другие, то присылайте свои варианты администратору сайта. Если вы знаете, как упростить существующие способы, то присылайте свои варианты авторам способов или опубликуйте их на форуме.

Способ 1: Thinstation и RIS сервер

Представляю статью о загрузке по сети, которую написал участник конференции OSZone vserd.

Предисловие

Возникла у меня такая ситуация. Принесли компьютер, еле живой, Asus S200, та еще штучка как оказалось впоследствии. Диск был разбит по грамотному (два раздела), и на втором был дистрибутив Windows, спасибо предыдущему настройщику, облегчил задачку.

Итак, имеем компьютер без флоппа и CDROM. Есть сетевая карта SIS900. В BIOS есть возможность загрузиться с HDD, USB Floppy, USB Flash, USB CDROM и по сети.

На момент начала мучений с ним была только флешка, но грузиться с нее он отказался. Достать USB СD или Floppy не удалось. Оставалась только сетевая загрузка. Кстати, как оказалось впоследствии, что реально помог бы только USB флоп. USB СD не опознался.

Читая доки MS и форумы по автоустановке, натыкался на сокращение RIS и упоминание того, что можно загрузиться с сетевой карты и установить ось. Вот и решил проверить. Поставил RIS, создал образ, настроил DHCP и . получил огромный облом. Система действительно загружалась, проходила текстовую часть установки и вываливалась в BSOD с кодом 0x000000BB. Согласно толкованиям, найденным на просторах Интернета, для исправления нужно всего ничего, заменить драйвера сетевой карты в дистрибутиве или заменить сетевую карту. Скачал новую версию драйверов, прочитал KB315279 и ссылки по ней, сделал все как описано, и танцы с бубном окончились продолжительным BSOD-ом с тем же кодом.

Ладно, если не получается с наскока давайте читать инструкции. Изучал, изучал и наткнулся на возможность использования практически любого образа диска для загрузки по сети.

Что понадобится

  • Утилита для создания загрузочных сетевых образов из обычных. Загружаем
  • Perl. Загружаем. (эта версия сработала у меня, другие пробуйте сами, я в Perl не игрок)
  • Блокнот из стандартной поставки Windows или любой другой ASCII редактор
  • Thinstation. Сайт, файл (8.86 Мб) (вполне возможно, что файл и другой подойдет)
  • Установочный диск с Windows 2000 Server
  • Прямые руки, желание научиться 🙂

Приступаем

Шаг 1

Скачиваем и распаковываем утилиту преобразования. Для ясности, в D:\BootDisk\.

Шаг 2

Скачиваем и устанавливаем Perl.

Шаг 3

Создаем образ дискеты или используем готовый образ.

  • Если нет образа загрузочной дискеты в виде файла, тогда вставляем загрузочную дискету с MS-DOS и выполняем команду D:\BootDisk\MKIMAGE.BAT DOS . Поддерживаются стандартные 1.44 Mb приводы.
  • Если образ уже есть, тогда модифицируем файл создания загрузочного образа.
    1. Открываем блокнот и копируем/записываем следующий код

@echo off
cd mknbi-1.4.1-win
perl.exe mknbi.pl —nosquash —format=nbi —target=dos ..\image.dos >..\dos.bin
rem Если хочется универсальности, тогда комментируем верхнюю строчку (дописываем REM)
rem и раскомментируем нижнюю (удаляем REM) (запуск MKIMAGE2 имя_образа_с_расширением)
rem perl.exe mknbi.pl —nosquash —format=nbi —target=dos ..\%1 >..\dos.bin
cd..
:end

Шаг 4

Ожидаем завершения работы батника. Проверяем, что размер dos.bin больше размера image.dos примерно на 4 кб.

Шаг 5

Распаковываем thinstation. Из архива нам нужен файл TFtpdRoot\thinstation.nbi.zpxe. Копируем его в D:\BootDisk\ с именем dos.bin.zpxe. Это загрузчик PXE.

Шаг 6

Настраиваем DHCP (если настроен, то переходим к шагу 7). У меня Win 2000 Server так что буду описывать для него.

Если DHCP не установлен, тогда его сначала нужно установить. (Панель управления>Установка удаление программДобавление и удаление компонент Windows, затем выделить Сетевые службы, Состав и поставить галочку на DHCP).

Настраиваем DHCP. Панель управленияАдминистрирование, запускаем оснастку DCHP. Выбираем сервер DHCP который мы хотим настраивать. Затем из контекстного меню выбираем Создать область. В появившемся мастере вводим имя области и комментарий. Давайте осмысленные имена, чтобы и через пару-тройку лет с этим мог разобраться другой админ или вы сами. Затем вводим начальный и конечный адрес который хотим раздавать через DHCP. Максимальная емкость зависит от числа одновременно устанавливаемых машин. Если в диапазон адресов попал статический адрес, можете его ввести на следующей странице в список исключаемых. Дальше по вашему усмотрению. После создания области в секции Параметры области, нужно настроить параметры 066 IP сервера и 067 Имя файла для загрузки. В параметр 067 вписываем имя dos.bin.zpxe.

Шаг 7

Устанавливаем и конфигурируем RIS

Панель управленияУстановка удаление программДобавление и удаление компонент Windows, ставим галочку на Служба удаленной загрузки. После завершения установки идем в АдминистрированиеСлужбы и запускаем службу Упрощенный FTP-демон.

Шаг 8

Копируем в C:\tftpdroot файлы dos.bin.zpxe и dos.bin.

Шаг 9

Устанавливаем на компе загрузку с сетевого адаптера по PXE и пробуем загрузиться.
Если все нормально, то на компьютере, который загружается, будет идти поиск DHCP сервера, затем загрузчик покажет что присвоен IP адрес, и пошла загрузка с образа.

Общие примечания

Для редактирования/создания образа дискеты можно пользоваться WinImage, плугином к Total Commander Virtual Disk или другими утилитами. Если у вас один компьютер, и нет серверной платформы, вы можете использовать одну из виртуальных машин (например, VMWare), установить на ней сервер и настроить на взаимодействие с другим компом. Судя по отзывам на форумах, это вполне реально.

Также в сети можно найти DOS стек TCP/IP. Или настроить NetBios/NetBEUI. В таком случае вы можете загрузить дистрибутив с шары.

Источник

Adblock
detector