Мини-HOWTO: Удаленная загрузка и Linux: Настройка удаленно загружаемых рабочих станций с Linux, DOS, Windows 95/98 и Windows NT | ||
---|---|---|
Пред. |
Единственная поддержка сети, встроенная в TCP/IP BootPROM - это TFTP. Поэтому нам интересны специальные версии TFTP-серверов, позволяющих немного больше, чем обычные.
Фирма InCom GmbH вместе со своим TCP/IP BootPROM распространяет улучшенную версию TFTP-сервера, который может посылать пакеты размером до 1408 байт, вместо стандартных 512. Это очень важное дополнение, которое мы рекомендуем использовать. Этот сервер есть на диске утилит TCP/IP Bootprom в вариантах для Solaris, Windows и Netware NLM.
Мы собрали модифицированную версию TFTP-сервера для Linux, работающего аналогично улучшенной версии TFTP-сервера фирмы Incom. На самом деле, мы просто увеличили размер пакета с 512 до 1408 байт и поменяли порт с 69 на 59. Его можно получить по адресу http://cuiwww.unige.ch/info/pc/remote-boot/soft/etdtpd.tar.gz.
Мы также написали специальную версию TFTP-сервера, работающего, как шлюз системы безопасности для авторизации пользователей. Этот сервер работает в Linux или Solaris и может авторизовать пользователей в системе паролей Unix (с поддержкой NIS и shadow), на сервере Windows NT (или Samba) server или на сервере Radius. Его можно взять по адресу http://cuiwww.unige.ch/info/pc/remote-boot/soft/stdtpd.tar.gz, вместе с исходными текстами и заранее собранными программами. Заранее собранные программы не включают систему шифрования паролей NT - мы не можем распространять библиотеку libdes, но сборка программы - дело достаточно простое.
Чтобы использовать шлюз безопасности, вам надо настроить достаточно простой файл конфигурации доменов безопасности, в котором описывается соответствие серверов авторизации и доменов (домен Unix соответствует системе паролей Unix на той машине, на которой работает шлюз). Ниже приведен пример конфигурации
# # Файл конфигурации STFTPD # # В этом файле описываются сервера, соответствующие "доменам безопасности". Поддерживаются # два вида серверов - radius или winnt (winnt включает в себя # NT Server и Samba) # # Формат строки для серверов radius # radius <домен> <адрес_сервера> <ключевое_слово> # # ключевое_слово - это слово, указанное в файле /etc/raddb/clients # # Формат строки для SMB-серверов # winnt <домен> <адрес_сервера> <имя_NetBios> # # имя_NetBios - это наименование сервера в NETBIOS # # Примеры radius sec-dom-rad radiusserver testing123 winnt sec-dom-nt1 192.168.1.1 NTSERVER1 winnt sec-dom-smb samba SAMBA1 |
Вы также можете указать шлюзу безопасности файл со списком пользователей, которым нельзя входить в систему при любых обстоятельствах (для них проверка пароля будет всегда давать отрицательный результат).
Мы написали специальную версию TFTP-сервера, включающую в себя самодельную версию широковещательного TFTP. Используя его, мы смогли достичь скорости передачи данных клиентам в 6 Мб/с на сильно загруженной 10-мегабитной сети (этот способ значительно более эффективен - он не посылает подтверждения на каждый пакет). Этот сервер работает в Linux или Solaris. Его можно взять по адресу http://cuiwww.unige.ch/info/pc/remote-boot/soft/btdtpd.tar.gz, вместе с исходными текстами и заранее собранными программами.
TCP/IP-BootPROM не поддерживает этот протокол, поэтому мы загружаем небольшой вариант ядра Linux, использующий электронный диск, при помощи ранее описанных утилит, в котором запускаем Linux-версию программы MrBatch, в которую встроена поддержка широковещательного TFTP. Простой пакетный файл загружает все необходимые файлы в кэш-раздел в течение пары минут одновременно на всех компьютерах. Вам не надо устанавливать Linux для использования этого пакета (за исключением того случая, если ваше очень экзотическое оборудование требует специального ядра).
Процедура состоит из нескольких шагов. Во-первых, загрузите вручную широковещательный сервер, задав ему количество клиентских машин в качестве параметра (запомните, что эта процедура должна производиться не ежедневно, а лишь в тех случаях, когда вы хотите синхронизировать образы дисков на всех машинах). Затем включите все клиентские машины, которые должны выполнить следующий скрипт:
# # Этот файл запускает мини-вариант linux с электронным # диском, который затем запустит mrbatch. # # Широковещательный TFTP-протокол работает только в Linux-версии # mrbatch, потому что в BootPROM нет поддержки широковещания. # # 1. Создаем небольшой раздел, оставляя большое пространство для кэша setpartitions "BIGDOS:50" # 2. Очищаем MBR clean 0 # 3. Запускаем ядро Linux с поддержкой initrd (Загрузочный Электронный Диск) и # используем в качестве этого диска bcastrd.gz (он будет подключен в # качестве корневой файловой системы и запущен через /linuxrc). См. initrd.txt, # в котором приведено подробное описание загрузочных дисков. Вам не надо задавать корневое # устройство) - ядро будет использовать электронный диск. linuxboot "linux.krn" "" "bcastrd.gz" # 4. Сначала linux запустит dhcpcd для настройки сети. # Затем он выполнит команду mrbatch -w bcastlx |
dhcpcd - DHCP-клиент для настройки сети
mrbatch
linuxrc - небольшой скрипт, автоматически запускаемый initrd и запускающий dhcpcd и mrbatch.
usr/lib/terminfo/l/linux - используемый MrBatch
dev/* - устройства, необходимые Linux и mrbatch
# Этот файл выполняется mrbatch, после его загрузки с электронного диска # bcastrd.gz # Его главная задача - "широко скопировать" файлы в кэш # # 1. Выводим диагностические сообщения showlog # 2. Отключаем фразу "press a key" set pauselog="OFF" # 3. Устанавливаем реальные размеры разделов. # Внимание: Так как вы копируете файлы в кэш для дальнейшего использования, # задайте именно те размеры разделов, которые вы будете использовать. setpartitions "BIGDOS:1024" # 4. Очищаем кэш-раздел clean -1 # 5. И копируем файлы в кэш, используя широковещательный TFTP-протокол # (порт 99) # # Вы можете использовать этот скрипт "как есть", но последнюю строку обязательно # измените! В нашем примере мы загружаем файл mblinux.imz, который является образом # нашей инсталляции Linux. copy "$BOOTP-Server-IP@99:mblinux.imz" "{:-1}mblinux.imz" |