LTSP (англ. Linux Terminal Server Project) — пакет дополнений для GNU/Linux, позволяющий подключить большое количество низкопроизводительных тонких клиентов к серверу. Приложения выполняются на сервере, получая входные данные от тонкого клиента и отображая результат на его экране.(c)Wikipedia
PXE (англ. Preboot Execution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, DHCP и TFTP. PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по DHCP) исполняемый файл, после чего передаёт ему управление.(c)Wikipedia
В статье описывается установка сервера LTSP совмещенного с сервером сетевой установки Windows. Загрузка и подключение клиентов к серверу осуществляется посредством PXE которая поддерживается большинством современных сетевых карт. В итоге получим сервер, к которому можно подключиться по терминальной сессии используя реквизиты доменных пользователей, либо посредством которого можно будет установить WindowsXP (или любую другую на ваше усмотрение). Установка будет выполняться в Ubuntu Linux. Почему Ubuntu? Потому что она более юзер-фрэндли.
При написании стать использовался перевод Александра Тарасова – http://rus-linux.net/nlib.php?name=/MyLDP/admin/pxe.html.
адрес сервера – 192.168.10.3
имя сервера – terminals
домен – daevy.lo
1. установка и настройка пакетов для LTSP.
# apt-get install ltsp-server openssh-server
создание системы тонких клиентов (весьма длительная процедура)
# ltsp-build-client
далее на сервре DHCP необходимо добавить выдачу двух дополнительных параметров
066 Boot Server Host Name – присваиваем адрес сервера – 192.168.10.3
067 Bootfile Name – указываем имя и путь к загрузчику – ltsp/i386/pxelinux.0
корневым каталогом TFTP-сервера является каталог /var/lib/tftpboot поэтому путь до загрузчика берется относительно этого пути.
На данный момент можно загрузить клиентский комп посредством PXE и успешно запустить терминальную сессию Gnome. Для входа используются системные пользователи сервера. Следующим этапом будет интеграция с доменом ActiveDirectory. для этого необходимо установить пакет likewise-open и подключить сервер к домену.
# apt-get install likewise-open
# domainjoin-cli join daevy.lo Administrator
Joining to AD Domain: daevy.lo
With Computer DNS Name: terminals.daevy.lo
Administrator@DAEVY.LO’s password:
SUCCESS
You should reboot this system before attempting GUI logins as a domain user.
# update-rc.d likewise-open defaults
# nano /etc/samba/lwiauthd.conf
winbind use default domain = yes
# reboot
Теперь можно запускать терминальные сессии используя учетные записи доменных пользователей.
2. Следующий шаг. Установка сервера сетевой установки Windows. Для этого используем наработки проекта Unattended. Cистема Unattended использует PXE и Linux, а также Samba для передачи установочных данных, также в ней содержится набор Perl, shell и batch-скриптов, которые выполняют всю работу.
Скачиваем дистрибутив Unattended с сайта проекта Unattended (секция Download находится в правой части главной страницы). Распаковываем архив в каталог /opt и переименовываем для удобства
# cd /opt
# unzip /home/daevy/Загрузки/unattended-4.8.zip
# mv unattended-4.8/ unattended
Теперь необходимо создать на DNS-сервере A-запись (или CNAME если машина с ip-адресом сервера уже существует) которое отображает имя ntinstall на ip-адрес хоста – установочного сервера.
# apt-get install samba
Далее необходимо внести дополнения в smb.conf
# nano /etc/samba/smb.conf
[global]
...
guest account = nobody
unix extensions = off
...
[install]
comment = Unattended
writable = no
locking = no
path = /opt/unattended/install
guest ok = yes
# /etc/init.d/samba restart
Теперь необходимо разместить на сервере установочные файлы windows-дистрибутива. Для этого понадобится каталог i386 с дистрибутивного диска. Создаем место для дистрибутива в каталоге /opt/unattended/install/os затем монтируем iso-образ диска Windows и переносим каталог i386 в созданный каталог.
# mkdir /opt/unattended/install/os/winxpsp3/
# mount -o loop WinXPSP3Rus.iso /mnt/cdrom/
# cp -a /mnt/cdrom/i386/ /opt/unattended/install/os/winxpsp3/
Если есть необходимость в двух и более различных дистрибутивах, то создаем дополнительную папку (например win2003) и копируем в нее каталог i386 из дистрибутивного диска. Затем по ходу загрузки будет предложен выбор установки. Единственное замечание, длина имени создаваемого каталога не должна превышать 8 символов.
Теперь сервер Unattended готов к предоставлению установки системы, но еще необходима возможность выбрать установку Unattended из загрузочного меню. Для этого понадобится архив linuxboot от проекта Unattended который также скачивается с сайта проекта. Из него необходимо взять загрузочные файлы bzImage и initrd из каталога tftpboot. Эти файлы нужно поместить в каталог /var/lib/tftpboot/ltsp/i386/ (переименуйте файл bzImage в vmlinuzunat, а файл intird – в initrdunat, чтобы отличать их). Помимо этого скопируем каталог linuxaux из архива unattended-4.8-linuxboot.zip. Без этого каталога загрузка остановится с ошибкой что нехватает этого каталога.
# cd /home/daevy/Загрузки/
# unzip unattended-4.8-linuxboot.zip
# cp unattended-4.8/linuxboot/tftpboot/bzImage /var/lib/tftpboot/ltsp/i386/vmlinuzunat
# cp unattended-4.8/linuxboot/tftpboot/initrd /var/lib/tftpboot/ltsp/i386/initrdunat
# cp -a unattended-4.8/install/linuxaux/ /opt/unattended/install/linuxaux/
Теперь редактируем файл загрузки default. В этом файле содержится набор загрузочных аргументов syslinux, соответствующий конфигурациям серверов LTSP и Unattended. Нужно обратить особое внимание на директивы DISPLAY и LABEL. Директива DISPLAY означает, что при загрузке компьютера будет отображено содержимое файла boot.msg, в котором содержится текст меню. Директива LABEL – это то, что нужно ввести, чтобы произошла загрузка определенного вида. В данном случае, если пользователь введет “1″, система загрузит Ubuntu LTSP сессию (это вариант по умолчанию), а если введет “2″, то сможет установить Windows.
# nano /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default
default 1
timeout 300
prompt 1
display boot.msg
F1 boot.msg
label 1
kernel vmlinuz
append ro initrd=initrd.img quiet splash
label 2
kernel vmlinuzunat
append initrd=initrdunat z_user=guest z_password=guest z_path=//192.168.10.3/install
Напоследок создаем файл boot.msg в котором содержится текст меню. Обратите внимание на теги 0с,07 и 0f,07 они определяют цвет, заключенного в них текста.
# nano -w /var/lib/tftpboot/ltsp/i386/boot.msg
Welcome to 0CUZPS Emergensy Server07 - version 0C1.0
0C*07 Enter 1 to Boot Ubuntu Terminal Session.
0C*07 Enter 2 to Boot Windows Unattended Installation.
0fType 1 or 2 and press Enter07 to boot.
Теперь все готово, можно тестировать.