60ecac49

Широковещательный TFTP-сервер


Мы написали специальную версию 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



Все программы собраны статически и из них удалена отладочная информация - таким образом мы избегаем включения в электронный диск файла libc.so, имеющего достаточно серьезный размер. Полученный электронный диск сжат GZIP и имеет размер меньше 300 Кб. Ядро занимает около 450 Кб (с поддержкой многих сетевых карт и initrd). После загрузки 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"



После завершения пересылки вы можете просто выключить клиентские машины и изменить их загрузочные скрипты на любимое меню.



Содержание раздела