УДАЛЕННАЯ ЗАГРУЗКА
Термин удаленная загрузка (remoteboot) означает, что по крайней мере ядро ОС некоторой станции загружается не с локальных накопителей, а по сети с удаленной станции. Удаленная загрузка как правило используется для бездисковых пользовательских станций, не предназначенных для хранения информации (каждый раз загружается «заготовка» ОС). Таким образом, в состав сети с удаленной загрузкой входит как минимум две станции.
Рисунок -- Удаленная загрузка
Для решения проблемы эмуляции системного диска используются два подхода:
1. Поддержка виртуального диска в памяти (RAM Drive).
2. Поддержка сетевого виртуального диска.
Cуществует специальное соглашение: если сетевому интерфейсу присвоен IP-адрес 0.0.0.0, то ему должен быть назначен динамический адрес.
В настоящее время существуют четыре семейства технологий (в первую очередь выражены в соответствующих протоколах), связанных с удаленной загрузкой:
1. RPL (Remote Program Load) плюс ПО от Novell, Microsoft и др.
2. BOOTP (BOOT Protocol) –> DHCP (Dynamic Host Configuration Protocol) –> PXE (Preboot eXecution Environment) плюс ПО от Intel – 3COM (PXE PDK), InCom – Bootix (BPB), Microsoft (RIS, Microsoft PE), Rembo – IBM (развитие BpBatch), Venturcom – Ardence – Citrix (развитие BXP), Qualystem – Neoware – HP (Image Manager) и др.
3. Прочие протоколы плюс как правило свободно распространяемое ПО (EtherBoot и др.)
4. iSCSI (internet SCSI) плюс ПО от emBoot (netBoot/i), Microsoft (Boot Capable iSCSI Initiator), Intel (ISCSI Boot Firmware) и др.
Для организации удаленной загрузки необходимо включить в состав дополнений системного BIOS (Add-on BIOSes) специальное загрузочное ПЗУ (BootROM).
Рисунок -- Добавление BootROM
Поскольку удаленная загрузка традиционно связана с использованием ЛКС, физически BootROM традиционно располагается на сетевом адаптере, хотя туда можно прошить произвольный код. BootROM может быть припаян к плате сетевого адаптера либо устанавливаться посредством разъема. Если сетевой адаптер интегрирован в материнскую плату, то BootROM как правило имеется и интегрирован в основной BIOS.
Когда загружаемая станция включается выполняется так называемый POST (Power On Self Test). При этом BIOS сканирует память в диапазоне C0000h–EE000h (куда отображаются Add-on BIOSes) с инкрементом, равным 2KB (2048B), в поисках сигнатуры 55AAh, которая свидетельствует о наличии Add-on BIOS. Если сигнатура найдена, то третий байт, содержащий размер Add-on BIOS в 512-тибайтовых страницах, используется для проверки контрольной суммы. Если контрольная сумма равна нулю, то осуществляется вызов подпрограммы по адресу, расположенному со смещением +3 (четвертый байт). В случае BootROM, вызванный код используется для подмены стандартного загрузчика. После просмотра всего диапазона, BIOS выполняет инструкцию INT 18h (перезагрузка). Далее, вернув управление, новый обработчик копирует основное содержимое Boot-ROOM (Loader) в оперативную память и передает ему управление. Далее, загрузчик Loader с помощью подпрограмм BootROM загружает простейший сетевой протокол получает код загрузчика Bootstrap и передает ему управление. Дальнейшие действия зависят от реализации.
Рисунок -- Клиент-серверное взаимодействие по протоколу PXE
Где:
1. Клиент посылает широковещательный запрос (стандартный порт 67). При этом, обычно используется так называемая опция 60 и передаются: уникальный идентификатор клиента, версия UNDI (Universal Network Device Interface), идентификатор аппаратной архитектуры клиента и др.
2. DHCP-сервер посылает ответ (стандартный порт 68), в котором содержится IP-адрес для клиента и другие опции DHCP.
3. Клиент подтверждает, что он запомнил предоставленные сервером параметры.
4. DHCP-сервер подтверждает получение и обмен по протоколу DHCP завершается.
5. Клиент посылает запрос о предоставлении загрузочного сервиса (может быть broadcast – порт 67, multicast/unicast – порт 4011). При этом указывается IP-адрес и другие параметры.
6. Сервер подтверждает предоставление загрузочного сервиса, в частности указывая имя файла с загрузчиком Bootstrap и параметры протокола (M)TFTP.
7. Клиент посылает запрос о предоставлении файла с загрузчиком Bootstrap (стандартный порт 69).
8. Клиент скачивает файл с загрузчиком Bootstrap.
9. Исполнение загрузчика Bootstrap.
Для передачи дополнительных требующихся параметров используются опции DHCP.
Для передачи файлов используется упрощенная и менее надежная версия протокола FTP, называемая TFTP (Trivial FTP).
Существуют особые соглашения об использовании расширений загружаемых файлов (.P и др.)
Таким образом, на загружающей Windows- либо Unix-станции должны быть установлены и настроены как минимум два сервиса:
1. DHCP либо ему подобный.
2. TFTP либо ему подобный.
В Windows используются стандартные или сторонние программы с графическим интерфейсом.
В Unix используются демоны bootpd и dhcpd со стандартными конфигурационными файлами /tftpboot/bootptab и /etc/dhcpd.conf соответственно.
Рисунок -- Пример строк из конфигурационного файла bootptab