Еще один способ загрузки компьютера по сети с практически любого образа диска
PXELINUX и TFTPD32 сервер
Представляю статью об альтернативном варианте загрузке по сети, которую написал участник конференции OSZone Power User. Предисловие
Прочитал статью с описанием способа RIS и решил поделится своим методом. Дело в том что по работе мне приходится часто кидать образы на компьютеры в школах, к которым у детишек отношение весьма не доброе, а потому большинство CD-ROM сломано, а с дисководом никогда не угадаешь заранее, считает дискетку или нет. Поэтому загрузка образов дискет (и не только) через PXE мне очень близка. Начнем с плюсов моего метода
Не надо иметь выделенный RIS сервер (вообще не надо сервер) - не всегда он есть под рукой, а иногда за него надо платить...
Грузить можно любой 1.44, 2.88 и 5.76 (ага, и такие бывают!) образ дискеты как он есть, без изменений (единственное если прога на 2-х дискетах 1.44, то ее надо слить в один образ 2.88), плюс образ любого размера, который поместится в память клиента (речь уже об образе диска, а не дискеты)
Можно грузить различные линуксы, которые работают с RAM диска (например, thinstation - это RDP клиент, или те же утилиты от Paragon)
Можно грузить различные линуксовые бинарники (например memtest86+)
Легко модифицировать любую сеть для такой работы. Надо всего лишь на DHCP сервере сети указать IP нашего PXE сервера и имя загрузчика. Это в моей статье не описывается, так как уже было описано в первой статье (два параметра для DHCP - 066, 067), и админам думаю проблем не составит сделать нужные изменения)
Можно все нужные файлы таскать с собой на Flash диске - и тогда любой комп быстро превращается в PXE сервер (только надо перенастроить в tftpd32 - путь к файлам и IP адреса, и перезапустить его)
Есть и минусы
У tftpd32 есть баг - при одновременном обращении к нему больше одного клиента - жуткие тормоза на этапе загрузки pxelinux'а и образов. Если кому-то надо грузить, скажем, сразу много клиентов, то tftpd32 придется оставить только как DHCP, убрав в настройках галочку про TFTP Server (если, конечно, нет другого DHCP), а сам TFTP сервер взять другой (к сожалению, те серверы что я видел - коммерческие). Однако, при последовательном обращении клиентов - все летает. Так что как вариант просто грузить компы по очереди.
Что понадобится?
Совсем немного времени и трафика на скачивание нескольких небольших программ, а так же немного времени на настройку (при наличии знаний по сетям). Помимо этого: Компьютер с Windows и сетевой картой (линейку 9х не проверял, но и с ней не должно быть проблем, а под NT семейством и подавно). Как соединять два компа и настраивать сетку описывать не буду - и так много написано. Априори считается, что вы можете соединить между собой два и более компа по сетке. Компьютер, который будет загружаться по сети с наличием сетевой карты с поддержкой загрузки по сети (PXE) tftpd32 (вводим в Google и тыкаем на первую ссылку) pxelinux - часть пакета syslinux - (гуглим по "syslinux" или берем zip-архив тут) Программа для создания образа дискет. Например, WinImage или что-то подобное. рюмочка коньяка для храбрости :)
Поехали!
Распаковываем tftpd32.exe, скажем, в С:\TFTP
Распаковываем файл pxelinux.0 (из архива syslinux'а), memdisk (из sysylinux.zip/memdisk) а так же (опционально) memtest (sysylinux.zip/memtest) в C:\TFTP. Memtest для работы не нужен. Это просто известный тест памяти, который в нашем случае также можно загрузить по сети без дисковода и т.п. Tуда же (C:\TFTP) кладем образ любимой загрузочной дискетки (можно и не только дискетки – но об этом ниже). Например, dos.imz (для экономии места и/или ускорения загрузки можно даже сжатый (winimage) образ класть – imz, a можно и не сжатый ima). Образов может быть сколько угодно. Проверяем, что у нас в сети нету DHCP серверов. Например, если включен ICS (шара интернета), то его выключить на время экспериментов. Конфигурируем tftpd32.exe
Запустили, нажали Settings, в "страшном" окне указываем Base Dirrectory – C:\TFTP. Потом выставляем галочки как на картинке:
Жмем на ОК, еще раз ОК, и перезапускаем tftpd32.
Далее настраиваем наш DHCP сервер:
Выбираем сетевую карточку, к которой подключен пациент
Ставим начало адресов, которые получит первый клиент (этот адрес и количество клиентов не должно пересекаться с вашим IP)
Количество адресов (минимум 1)
Имя загрузчика (pxelinux.0)
Маска сети (мат-часть по сетям)
Сохраняемся....
Далее на всякий случай перезапускаем tftpd32. Почти закончили :) Конфигурируем загрузку
Создаем текстовый файл C:\TFTP\PXELINUX.CFG\default и редактируем его, скажем, так:
default local
prompt 1
label local
localboot 1
label dos
kernel \memdisk
append initrd=\dos.imz
label pqpm8
kernel \memdisk
append initrd=\pqpm8.imz
label mem
kernel \memtest
Подробную информацию можно найти в pxelinux.doc из syslinux'a.
Ну и наконец, устанавливаем на компе загрузку с сетевого адаптера по PXE.
Что получаем?
Компьютер грузится по сетке, подключается к вашему компьютеру, скачивает загрузчик и ждет вашего ввода команды. Ну а там смотря что ввели:
Просто ENTER – загрузится с локального диска (или по команде local)
Mem – загрузится memtest86 (тест памяти)
Dos – загрузится ваша досовская дискетка
Ну и далее только от фантазии зависит :) Можно, например, известные утилиты от Paragon тоже так грузить, но это уже сложнее (надо выковыривать из загрузочных дисков ядра и образы линукса), можно тот же thinstation terminal client и т.д. Послесловие
В статье делается упор на tftpd32, так как он бесплатен, не требует установки, и включает в себя 2 сервера в 1 (DHCP и TFTP), а также запускается под Windows любой версии. Но сам принцип - загрузка и запуск бинарника pxelinux (с последующей загрузкой нашего образа) - не привязан к tftpd32, а требует наличия в сети DHCP сервера с двумя дополнительными параметрами - 067 (имя загружаемого бинарника - pxelinux.0) и 066 (IP адрес TFTP сервера который нам и выдает искомый бинарник), а также собственно TFTP сервер, на который ссылается DHCP. Какими системами, сервисами или железками это реализовано нам совершенно неважно, потому можно использовать любой находящийся в сети сервер (Linux, Windows, Novell). Ну а если его нет, то tftpd32, запущенный на любой машине. Главное - это добраться по сети до PXELINUX.