LTSP
Я сподобился-таки разобраться с этой системой. Как оказалось, она значительно удобнее любых костылей, приделываемых к XDMCP. Правда пришлось немного поколдовать.
Во-первых немного обрисую картинку. Есть DNS/DHCP сервер, который помимо этого обслуживает много что еще, и вешать на него терминалы - занятие неблагодарное. Есть машина, до сих пор работавшая в качестве XDMCP-терминального сервера. Есть парк машин, работающих как XDMCP-терминалы и позволяющие загружаться локально. Задача - сделать так, чтобы все это работало на LTSP.
В качестве механизма загрузки был выбран бездисковый протокол PXE. Причины довольно просты: хотелось минимальными усилиями сохранить возможность загрузки в изолированном режиме (то есть с локального диска). Поскольку терминалы достаточно новые, PXE поддерживается BIOS’ом материнских плат, и с этим проблем не возникло. Позже попробую перенести эту функциональность на grub.
На терминальном сервере был установлен пакет ltsp-server.
sudo apt-get install ltsp-server
На DHCP-сервере конфигурация (/etc/dhcp3/dhcpd.conf) была изменена следующим образом:
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.255;
option domain-name "livid.local.";
option root-path "/opt/ltsp/i386/";
filename "ltsp/i386/pxelinux.0";
next-server 192.168.0.2;
}
Здесь были добавлены строки:
option root-path "/opt/ltsp/i386/";
filename "ltsp/i386/pxelinux.0";
next-server 192.168.0.2;
next-server указывает на адрес терминального сервера.
На терминальном сервере уже стоял и был настроен openssh. В принципе, настраивать там особо нечего, достаточно его поставить:
sudo apt-get install openssh-server
Для создания образа терминального клиента используется команда
sudo ltsp-build-client
Которая, фактически, устанавливает базовую версию ubuntu в /opt/ltsp/i386 и создает ее squashfs-образ.
Чтобы не пришлось перезагружать сервер, для запуска всех служб можно воспользоваться командой
sudo /etc/init.d/inetd reload
Несколько небольших замечаний. Если требуется что-то изменить в базовой системе в /opt/ltsp/i386, делать это следует в chroot:
sudo chroot /opt/ltsp/i386
После внесения любых изменений в эту файловую систему нужно выполнять команду
sudo ltsp-update-image
Если изменится адрес или ssh-ключ терминального сервера, необходимо выполнить команды
sudo ltsp-update-sshkeys
sudo ltsp-update-image
О более тонкой настройке расскажу в другом посте.
P.S. Если хотите, чтобы съемные диски работали через терминал, поставьте на сервере пакет ltspfs. Работает не идеально, но терпимо.
Материалы: http://www.ltsp.org/twiki/bin/view/Ltsp/WebHome https://help.ubuntu.com/community/ThinClientHowto?action=show http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/ https://wiki.ubuntu.com/EdubuntuLtsConfParams