Тонкие клиенты. Тоньше не бывает!

Anton Karpov

Xakep, номер #063, стр. 063-104-1

(toxa@real.xakep.ru)

Сажаем пингвина на бездисковую станцию

Идея создания бездисковой станции с загрузкой по Сети далеко не нова. Уже десятилетиями применяется это удобное и безопасное решение. Представь, что в предельно короткие сроки без заморочек с клонированием винчестеров тебе нужно установить любую операционку на сотню-другую одинаковых машин. Сервер удаленной загрузки сведет эту операцию к загрузке Linux по сети, а далее к поблочному копированию на локальный винчестер образа один раз установленной и настроенной ОС. Все, что нужно - это поддержка сетевой карточкой возможности загрузки по сети и наличие соответствующей опции в BIOS.

Карточные игры в дистрибутивы

Существует несколько спецификаций прошивок (ROM) сетевых карт для загрузки по сети. Самая популярная из них – это Intel PXE (Pre-Execution Environment). Твоя карточка либо уже прошита соответствующим образом, либо имеет возможность (микросхему), но не имеет прошивки. В таком случае тебе нужно будет поискать подходящую прошивку на netboot.sf.net.

В этой статье и сервер, и бездисковый клиент будут работать под ОС Linux. В описании я использую дистрибутив Slackware Linux, так как он больше остальных подходит для наших нужд, но все описанное вполне применимо к любому дистрибутиву с незначительными изменениями в расположении конфигурационных файлов и управляющих скриптов. Ядро будем грузить по сети, а корневая файловая система будет монтироваться по nfs. Таким образом, наличие какого-либо носителя информации на клиенте не обязательно. В итоге мы получим полноценную бездисковую Linux-машину, с рабочим ядром и файловой системой.

Удаленная загрузка под прицелом

Для начала нам понадобится сервер удаленной загрузки. Это может быть bootp-сервер или dhcp-сервер, оба они выполняют необходимые функции. Т.к. протокол dhcp умеет все то же, что и bootp, только больше и лучше :), то нет никакого резона использовать bootp-сервер. Поэтому качаем и ставим ISC DHCP сервер, последняя версия которого на момент написания статьи - 3.0.1rc13. Протокол dhcp позволяет намного больше, чем просто раздачу IP-адресов. Нам нужно будет не только "оформиться" у сервера, но и загрузить с сервера ядро. Сам dhcp не умеет предоставлять файлы, для этого используется tftp (trivial file transport protocol) – урезанный, по сравнению с ftp, протокол, не имеющий авторизации и работающий по udp. Также нам необходимо скачать и поставить поддерживающий команду tsize tftp-сервер, к примеру, hpa-tftp. И то и другое требует конфигурирования. Dhcp-сервер читает все настройки из файла /etc/dhcpd.conf:

Конфиг /etc/dhcpd.conf

allow booting;

allow bootp;

# Глобальные опции

option domain-name "nwudc.lan";

option broadcast-address 192.168.1.255;

option subnet-mask 255.255.255.0;

default-lease-time -1;

use-host-decl-names on;

ddns-update-style ad-hoc;

filename "pxelinux.0";

# Опции для подсети

subnet 192.168.1.0 netmask 255.255.255.0

range 192.168.1.10 192.168.1.30;

option routers 192.168.1.1;

Запуск демона происходит следующим образом:

# /usr/sbin/dhcpd -cf /etc/dhcpd.conf

Содержание  Вперед на стр. 063-104-2
ttfb: 3.2699108123779 ms