Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal
После правильной инициализации загрузочного образа он посылает через сетевой интерфейс широковещательные DHCP-запросы, в надежде найти работающий в локальной сети DHCP-сервер. Если вашему Х-терминалу улыбнулась удача и на его запросы откликнулся DHCP-сервер, то на экране это должно выглядеть примерно так:
Loading ROM image ......................
ROM segment 0x0000 length 0x0000 reloc 0x00020000
Etherboot 5.2.2. (GPL) http://etherboot.org Tagged ELF for [NE2000/PCI]
Relocation _text from [00013d70, 00022800) to [01ef1570, 01f00000)
Boot from (N)etwork or (Q)uit?
Probing pci nic ...
[rtl8029]
NE2000 base 0xfcc0, addr 00:02:44:2B:02:4E
Searching for server (DHCP) ...
..Me: 192.168.1.6, Server: 192.168.1.1, Gateway 192.168.1.1
Loading 192.168.1.1:/lts/vmlinuz-2.4.24-ltsp-1 ... (NBI) .....
.......
Об успешности получения ответа от DHCP-сервера свидетельствует строка, которая начинается с “Me:”. Далее в ней располагаются адрес, присвоенный Х-терминалу (192.168.1.6), адрес сервера (Server: 192.168.1.1) и шлюз по умолчанию (Gateway 192.168.1.1). Теперь смело можно переходить к разделу “Проблемы с TFTP”.
Если вы не увидели на экране строки с присвоенным Х-терминалу сервером IP-адреса, то это означает, что налицо ошибки в функционировании DHCP-сервера. О неполадках в работе DHCP говорит наличие такого текста на экране Х-терминала (сообщение “Searching for server (DHCP) ...” и появляющиеся точки с интервалом в несколько секунд):
Loading ROM image ......................
ROM segment 0x0000 length 0x0000 reloc 0x00020000
Etherboot 5.2.2. (GPL) http://etherboot.org Tagged ELF for [NE2000/PCI]
Relocation _text from [00013d70, 00022800) to [01ef1570, 01f00000)
Boot from (N)etwork or (Q)uit?
Probing pci nic ...
[rtl8029]
NE2000 base 0xfcc0, addr 00:02:44:2B:02:4E
Searching for server (DHCP) ...
.....
Найти причину подобных ошибок иногда бывает очень сложно, но с помощью простых рекомендаций можно значительно сократить количество возможных вариантов.
Перед началом диагностики необходимо проверить:
Если предпринятые меры не привели к положительному результату, значит проблема в самом DHCP-сервере. Для начала следует проверить запущен ли вообще данный демон на сервере Х-терминалов. Выполняем команду:
$ netstat -an | grep ":67"
udp 0 0 0.0.0.0:67 0.0.0.0:*
Полученный ответ свидетельствует, о том что на сервере в фоновом режиме работает программа, которая ожидает датаграммы на UDP-порту с номером 67. Также можно утверждать, что датаграммы ожидаются на всех сетевых интерфейсах (0.0.0.0:*). В принципе такое поведение типично для DHCP-сервера, но чтобы точно удостовериться в этом, давайте выполним еще одну команду:
$ ps aux | grep dhcpd
root 28617 0.0 0.0 2304 512 ? S 2004 0:00 /usr/sbin/dhcpd
mikola 14987 0.0 0.0 3768 600 pts/0 S 16:21 0:00 grep dhcpd
В данном примере первая строка (/usr/sbin/dhcpd) означает, что DHCP-сервер работает. Удостовериться в этом можно также, выполнив интуитивно более понятную команду:
$ /sbin/service dhcpd status
dhcpd (pid 28617) running...
Если вы не увидели ничего похожего, то сейчас самое время вручную запустить на выполнение демон dhcpd. В операционной системе ASPLinux это можно сделать такой командой:
# /sbin/service dhcpd start
Starting dhcpd: [ OK ]
В данном примере демон dhcpd запустился нормально, и сейчас самое время снова проверить загрузку удаленного Х-терминала. Если при ручном запуске вы увидели на экране ошибку, то это означает, что в конфигурационном файле /etc/dhcpd.conf допущены неточности, исправить которые необходимо в первую очередь. Просмотреть сообщения об ошибках при запуске демона dhcpd возможно, если выполнить такую команду:
# grep dhcpd /var/log/messages | tail
Feb 1 10:30:36 xtserver dhcpd: No subnet declaration for eth1 (192.168.0.26).
Feb 1 10:30:36 xtserver dhcpd: ** Ignoring requests on eth1. If this is not what
Feb 1 10:30:36 xtserver dhcpd: you want, please write a subnet declaration
Feb 1 10:30:36 xtserver dhcpd: in your dhcpd.conf file for the network segment
Feb 1 10:30:36 xtserver dhcpd: to which interface eth1 is attached. **
Feb 1 10:30:36 xtserver dhcpd:
Feb 1 10:30:36 xtserver dhcpd: Listening on LPF/eth0/00:80:48:25:a8:ca/WORKSTATIONS
Feb 1 10:30:36 xtserver dhcpd: Sending on LPF/eth0/00:80:48:25:a8:ca/WORKSTATIONS
Feb 1 10:30:36 xtserver dhcpd: Sending on Socket/fallback/fallback-net
Feb 1 10:30:36 xtserver dhcpd: запуск dhcpd succeeded
Пример работоспособной конфигурации DHCP-сервера и файла /etc/dhcpd.conf можно найти в разделе "Конфигурирование сетевых служб" главы "Настройка сервера", которая как раз и посвящена настройке сервера Х-терминалов.
Если ручной запуск демона dhcpd помог устранить проблему с загрузкой Х-терминала, то сейчас необходимо проверить настройку автоматического запуска демона dhcpd в уровне выполнения номер 5 (runlevel 5):
$ /sbin/chkconfig --list dhcpd
dhcpd 0:off 1:off 2:off 3:off 4:off 5:on 6:off
В данном примере с уровнем выполнения все в порядке. Если вы увидели другой результат, выполните от имени суперпользователя такую команду:
# /sbin/chkconfig --level 5 dhcpd on