Ключевые слова:diskless, boot, linux, (найти похожие документы)
From: Андрей Маркелов <http://www.markelov.net>
Newsgroups: http://www.markelov.net
Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC)
Subject: Использование бездисковых Linux-станций с загрузкой по сети
Оригинал: http://www.markelov.net/thinstation.html
Впервые опубликованно в журнале "Системный администратор" No.11/2004
Постановка задачи
Работа сотрудника отдела автоматизации - это постоянная борьба с
проблемами и решение задач, которые попеременно подкидывают
пользователи, разработчики эксплуатируемого программного обеспечения и
руководство организации. И если два первых направления работы - это
просто <<борьба за живучесть корабля>>, то последнее, как правило,
поступательное движение вперед. Как раз в ходе решения одной из таких
задач и появилась на свет данная статья.
Итак, перед отделом автоматизации была поставлена задача в короткие
сроки ввести в строй два новых удаленных офиса, каждый численностью в
пять - десять человек. Оба офиса и <<голову>> связали посредством
технологий VPN в одну сеть. Минимальная ширина канала между тремя
точками составила 256 Кбит, что вполне удовлетворило наши потребности.
В каждом из офисов был развернут дополнительный контроллер домена
Windows 2000, а для минимизации трафика домен разделили на несколько
сайтов. Все вышеописанное является стандартным решением, и здесь я не
ожидал никаких сюрпризов. Главным вопросом для нас было - как поведет
себя основная среда работы сотрудников организации - комплексная
система автоматизации, при работе с которой и в пределах одной
площадки хватало проблем. Изначально ориентированная на Novell/BTRIVE
6.15 после миграции сети на Windows, она работала под
Windows/Pervasive.SQL 7.
После недели тестов этого основного бизнес-приложения организации,
оказалось что разработчик и вовсе не оставил нам выбора, так как
использование встроенного терминального режима используемой
автоматизированной системы по ряду причин нас не устроило. Опять же,
из-за особенностей функционирования, в качестве терминального сервера
была выбрана платформа Microsoft Windows Server. Тестирование же
решений компании Citrix, мы не проводили, так как работа с <<родными>>
терминальными службами Windows нас вполне удовлетворила, а
использование надстроек только увеличивает стоимость всей системы.
Когда с серверной частью все определилось, встал вопрос по клиентской
составляющей системы. В первую очередь хотелось бы снизить
необходимость в администрировании пользовательских машин, так как
держать выделенного администратор на удаленных площадках не
планировалось. Кроме того, желательным представлялось уменьшить
стоимость решения, которая возросла из-за необходимости покупки
терминальных лицензий. Также необходимо было учесть намеренье
разместить в офисах устаревшие компьютеры класса Celeron-400 с ОЗУ от
32 до 64 Мбайт.
Идеальным со всех точек зрения оказалось использование в качестве
рабочих мест бездисковых станций с загрузкой по сети. При этом
единственным компьютером, требующим внимание администратора
становиться дополнительный контроллер домена в каждом офисе,
управляемый по VNC. Само - собой, что рамках данной статьи я оставляю
за пределами внимания оборудование и ПО, обеспечивающее шифрование
трафика, доступ в интернет и т.д.
В роли ОС, которая будет по сети загружаться на рабочие станции, я
выбрал Linux - что обеспечивает лицензионную чистоту решения (по
крайней мере, на сегодняшний момент). Доступ к рабочему столу Windows
2003 должен был осуществляться при помощи разработки проекта
www.rdesktop.org, который стал стандартом для решения данной задачи. В
качестве же необходимых для такой загрузки серверов DHCP и TFTP,
логично было бы использовать уже имеющиеся в каждом сайте
дополнительные контроллеры домена Windows 2000. Благо, существуют как
бесплатные реализации DHCP/TFTP под эту операционную систему, как и
встроенные сервера. При этом TFTP наличествует в рамках службы Remote
Installation Services (RIS).
Сетевые карты клиентских машин, естественно должны поддерживать
возможность загрузки по Etherboot/PXE. В отдельных случаях из-за
несовместимости оборудования я допускал использование загрузчика,
расположенного на дискете.
Выбор реализации Linux
При выборе варианта ОС Linux с возможностью загрузки по сети в первую
очередь я обратил внимание на уже готовые дистрибутивы подобной
направленности со встроенным пакетом rdesktop. Наиболее известный из
них NetStation (netstation.sourceforge.net), который застыл в виде
бета версии с конца 2002 года, и его наследники: PXES
(http://pxes.sourceforge.net), Thinstation (http://thinstation.sourceforge.net), и
DIET-PC (http://diet-pc.sourceforge.net). При этом DIET-PC предназначен в
первую очередь, пользователям, хорошо знакомым с ОС Linux, что сразу
исключает его из области рассмотрения. Поскольку процедура его
настройки достаточно кропотлива, и в DIET-PC присутствует достаточно
много настроек которые простому смертному, а не Linux-гуру, никогда не
пригодяться. PXES - является наиболее <<продвинутым>> с большим числом
дополнительных возможностей, включая собственную графическую среду,
что также лишнее в моем случае. В моей конфигурации клиент, минуя
промежуточные меню, должен был сразу загружать удаленный рабочий стол
и выходить на окно ввода пароля Windows 2003 Server. Таким образом, я
обратил внимание на оставшийся дистрибутив - Thinstation.
Кратко рассмотрим его возможности:
- поддержка протоколов X, RDP, VNC, SSH, Telnet, ICA и Tarantella;
- возможность использовать браузер Firefox;
- загрузка по сети при помощи Etherboot, PXE (при помощи
Etherboot-загрузчика или PXELinux), HDD, CD или floppy-диска. К
сожалению, отсутствует поддержка USB-flash;
- работа на ПК класса x86-100МГц c ОЗУ 16Мбайт;
- наличие pre-build образа, и возможность самостоятельной сборки через
web-интерфейс;
- поддержка локальных дисков, USB и LPT принтеров
Из всех вариантов загрузки наиболее простой - это PXE при помощи
Etherboot-загрузчика. В рамках этой статьи, мы пойдем по самому
простому пути - использовании заранее скомпилированного образа.
Установка и первоначальная настройка
Начнем с того, что скачаем со странички
http://struktur.kemi.dtu.dk/thinstation/download/, доступной по ссылке
в официального сайта последний из архивов, в моем случае - это был
Thinstation-2.0.2-prebuilt-NetBoot.zip. Архив содержит в себе все что
необходимо, включая TFTP/DHCP сервер Tftpd32 который удобен при
первоначальной настройке и конфигурировании. Кстати, если вы будите
его использовать, то я бы порекомендовал сразу же обновить его с
домашней странички, где имеется более свежая версия. Кстати, Tftpd32
(http://tftpd32.jounin.net/) - сама по себе отличная программа. Причем
настолько, что даже рекомендуется Cisco для некоторых потребностей
клиентов компании.
Развернув архив, мы получаем пять директорий:
- BootDisk - образ дискеты с Etherboot-загрузчиком, для ПК, с
неподдерживаемыми сетевыми картами
- BootPXE - загрузчик через PXE для эмуляции Etherboot
- BuildFiles - примеры конфигурационных файлов
- TFtp - сервер Tftpd32
- TftpdRoot - корневая директория TFTP сервера
Итак, первым делом, запускаем самораспаковывающийся архив
thinstation.nbi (autoextract).exe, содержащий один единственный файл
thinstation.nbi. архив сделан для того чтобы у вас была возможность
ознакомиться с <<CITRIX(R) LICENSE AGREEMENT>>.
Теперь копируем TFtp и TftpdRoot на Windows сервер в нашем сегменте
сети. В качестве такого сервера при использовании Tftpd32 может
выступать любая Windows-машина со статическим IP-адресом. Допустим, мы
скопировали обе директории на диск C:\. Запускаем на исполнение
C:\TFtp\Tftpd32.exe. Внешний вид окна программы представлен на
рисунке.
Необходимо задать параметры сервера. Нажимаем кнопку <<Settings>>, и
прописываем в качестве <<Base directory>> значение <<C:\TftpdRoot>>.
Далее идем на вкладку <<DHCP server>>. Там необходимо указать
начальный IP-адрес выделяемый DHCP-сервером (<<IP pool starting
address>>), размер пула адресов (<<Size of pool>>), маску подсети
(<<Mask>>), имя файла с Etherboot-загрузчиком(<<Boot file>>), в нашем
случае это - thinstation.nbi.zpxe. Нажимаем кнопку <<Save>>, для
сохранения настроек, и сворачиваем приложение.
Все готово для работы. Вы можете попробовать включить одну из машин с
сетевой картой, поддерживающей загрузку по протоколу PXE, не забыв
выставить порядок загрузки в BIOS станции. При включении, машина
должна получить IP-адрес из выделенного диапазона и загрузить по
протоколу TFTP файл thinstation.nbi.zpxe. Он содержит загрузчик,
эмулирующий работу сетевой карты с поддержкой Etherboot. Затем,
управление передается загрузчику, который в свою очередь еще раз
запрашивает по DHCP адрес, и загружает файл с именем, совпадающим с
названием файла самого загрузчика минус расширение zpxe, то есть
thinstation.nbi. Данный файл и есть образ Thinstation. Когда образ
загружен, Thinstation пытается загрузить из корневой директории TFTP
сервера конфигурационный файл thinstation.conf-, затем
thinstation.conf-.
Если такие файлы найдены, то Thinstation объединяет их содержимое с
общим конфигурационным файлом thinstation.conf.network, который, в
отличие от двух выше перечисленных обязан присутствовать на
TFTP-сервере. Постарайтесь избежать конфликтов между главным файлом
настроек и специфическим к группе или конкретной станции. Кроме того,
можно объединять одним конфигурационным файлом целые группы IP и
MAC-адресов. Это делается при помощи файла thinstation.hosts,
имеющего следующий формат:
# HOST MAC GROUPS COMMENTS
ws-oper1 0002B3655065 hi_res # Оператор No.1
ws-oper2 0002B3651075 hi_res # Оператор No.2
ws-oper3 0002B365A021 hi_res ssh_en # Оператор No.3
В данном примере предполагается, что имеются два файла
thinstation.conf.group-hi_res и thinstation.conf.group-ssh_en.
Настройки прописанные в первом файле применяются ко всем трем
станциям, а настройки из второго - только к компьютеру ws-oper3.
То, как отображаются сессии терминальных клиентов в оснастке
диспетчера терминальных служб, вы можете увидеть на рисунке.
Клиенты с именами вида ts_ - это как раз клиентские терминалы,
работающие под управлением Thinstation. Клиенты с именами вида P
работают под управлением дистрибутива PXES, рассмотрение которого
выходит за рамки данной статьи. Далее я приведу простой, но вполне
работоспособный вариант конфигурационного файла с комментариями.
# Опции сессий
#
# Первая сессия должна обязательно начинаться с номера 0.
# При отсутствии необходимости выбора сессии, например, когда вы используете
# только rdesktop, можно снять комментарий со следующего параметра, и
# исключить меню выбора сессий.
#AUTOSTART=On
SESSION_0_TITLE="Windows 2003 terminal server (16 bit color depth)"
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=192.168.0.1
SESSION_0_RDESKTOP_OPTIONS="-u Administrator -p password -a 16"
SESSION_1_TITLE="VNC server"
SESSION_1_TYPE=vncviewer
SESSION_1_VNCVIEWER_SERVER=192.168.0.2
SESSION_2_TITLE="Telnet server"
SESSION_2_TYPE=telnet
SESSION_2_TELNET_SERVER=192.168.0.3
SESSION_3_TITLE="SSH server"
SESSION_3_TYPE=ssh
SESSION_3_SSH_SERVER=192.168.0.4
# Общие опции
#
# Раскладка клавиатуры. В случае работы с rdesktop она роли не играет
KEYBOARD_MAP=en_us
# Опции XServer
#
SCREEN_RESOLUTION="1024x768"
SCREEN_COLOR_DEPTH="16"
SCREEN_HORIZSYNC="30-64"
SCREEN_VERTREFRESH="56-87"
MOUSE_RESOLUTION=100
# Опции печати
#
PRINTER_0_NAME=usb
PRINTER_0_DEVICE=/dev/usb/lp0
PRINTER_2_TYPE=U
В заключении статьи, хочу сказать, что после отладки работы с
терминальными клиентами, лучше всего передать функции TFTP- и DHCP-
серверов программному обеспечению, способному работать в режиме службы
на Windows NT/2000/2003/XP, например как я уже говорил, <<родным>>
службам Windows, либо воспользоваться соответствующими сервисами любой
другой операционной системы.
Кроме того, на сайте проекта thinstation.sourceforge.net при помощи
веб-интерфейса вы можете самостоятельно перекомпилировать образ
Thinstation без загрузки исходных кодов, включив какие-либо
отсутствующие в prebuild образе функции, например, браузер, или
исключив ненужные модули.
Андрей Маркелов.
Так там же все еще проще... Нужен только nbi файл, tftp и dhcpd есть в каждой поставке. Конфигурируются они просто - у DHCP можно дже сделать привязку к MAC (не знаю, можно ли у вышерекомендуемого). Дальше в папку tftp выкладываем nbi и конфиги - и все работает. Вроде так. Я года 3 назад такое делал с netstation.
А если есть машина с сетевой картой, не поддерживающей загрузку по протоколу PXE? Что тогда? Если просто давать ей thinstation.nbi образ она пишет, что "File transfer error: image too large to fit in memory." Для etherboot размер должен быть <640K насколько я понял, как тут выкручиваться?