Создание X-терминала из PC

  Автор: © Patrick Swieskowski
Перевод: © Alex Savvin (savvin@mail.ru).


 

X терминал - это прекрасный способ увеличить количество компьютеров дома и в офисе. (Мы говорим о PC, работающем в качестве X терминала, а не о X-терминальных устройствах NEC.) Они быстрые, крутые и прекрасно демонстрируют системную мощь Unix, и, что более важно, дешевле грязи (dirt cheap). Ниже приводятся хроники моих экспериментов по созданию X терминала из старого PC и подключения его к моей системе Debian GNU/Linux.

Сервером у меня является Pogo Altura с одногигагерцовым процессором AMD Athlon. Pogo - это прекрасная компания, куда можно обратиться, если не хотите составлять по кусочкам собственную систему или оплачивать лицензию предустановленной системы Windows в какой-нибудь другой компании. На сервере у меня установлен Debian, поэтому он будет установлен и на X терминале. На этом предварительной информации достаточно.

Установка корневой файловой системы

X терминал будет загружаться с дискеты с собранным ядром, а затем через NFS получит свою коревую файловую систему на сервере. Первый шаг - создание его корневой файловой системы. Вам нужно будет вручную скопировать по файлу из текущей, уже запущенной системы, или вы можете сократить работу и, как сделал я, просто использовать базовую систему Debian. Все, что вам потребуется сделать - это скачать тарболл базовой системы, который можно найти на веб-сервере Debian в виде файла base2_2.tgz. Я скачал его и выполнил "tar -xvzf base2_2.tgz" в /usr/xterminal и секундами позже у меня появилась полностью функциональная корневая система в каталоге. Независимо от собственного выбора Linux для сервера, любой может использовать базовую систему Debian.

На следующем шаге нужно сконфигурировать корневую файловую систему. Для этого я вошёл рутом и выполнил "chroot /usr/xterminal bash --login". Теперь, поскольку я в "внутри" корневой файловой системы, я дублирую свой реальный /etc/resolv.conf в свою новую корневую файловую систему, чтобы я смог использовать доменные имена во время конфигурирования. Затем мы должны установить X и, о чём знает любой пользователь Debian, это лучше сделать с помощью apt-get. Я выполнил "apt-get update", затем "apt-get install xserver-s3 xfonts-100dpi xfonts-base", но вы должны будете заменить xserver-s3 на что-нибудь другое, если у вас нет карты s3 в вашем X терминале. Эти скачивания и установки являются необходимыми компонентами X-ов. apt-get задаст вам несколько вопросов и создаст для вас файл XF86Config, если его не было; если же вы хотите подстроить сгенерированный им файл, см. XFree86 HOWTO. Корневая файловая система почти закончена. Для X-терминала я создал файл /etc/fstab, похожий на этот:

10.0.0.1:/usr/xterminal / nfs defaults 0 0
proc /proc proc defaults 0 0

Разумеется, вы можете изменить 10.0.0.1:/usr/xterminal на IP вашего сервера и местонахождение корневого каталога NFS. Поскольку у меня нет пользовательских счетов, созданных в этой файловой системе NFS, я решил запускать X-ы из init. Это потребовало подредактировать мой файл /etc/inittab (возможно, в вашем в конце будет другой IP адрес):

X:123456:respawn:/usr/bin/X11/X -query 10.0.0.1

Я не уверен, что это абсолютно корректно, но это работает. Наконец, удалите шелловский скрипт /sbin/unconfigured.sh, чтобы он не орал, когда вы попытаетесь загрузиться со своей новой завершенной корневой файловой системы.

Создание загрузочного флоппи-диска

Давайте теперь соберем ядро. Если вы не знакомы с процессом компиляции ядра, обратитесь к Kernel HOWTO. Я пытался создать загрузочный диск с ядром 2.4.5, но в нём, похоже, не работает bootp, поэтому я выбрал ядро 2.4.4. Пройдите полностью всю процедуру (make xconfig, make dep, make bzImage), но убедитесь, что выбрали следующие опции для компиляции в ядро (не как модули):

  • Поддержку IP:BOOTP под IP:kernel level autoconfiguration в сетевых опциях
  • Поддержку файловой системы NFS и корневую файловую систему на NFS под сетевыми файловыми системами в файловых системах (это нужно выбрать после поддержки BOOTP, поскольку Root на NFS не существует, пока не будет выбран BOOTP)
  • Драйверы для вашей сетевой карты под Ethernet (10 или 100Mbit) в разделе поддержки сетевых устройств

Постройте своё ядро и скопируйте его на дискету командой "dd if=arch/i386/boot/bzImage of=/dev/fd0" (root-ом) или похожей командой, указав своё ядро и дисковод. Поскольку это просто голое ядро на дискете, то нам потребуется заставить его загружаться через NFS. Создайте устройство /dev/boot255, набрав (все еще root) "mknod /dev/boot255 c 0 255". Теперь заставьте ядро с дискеты искать свою корневую файловую систему через NFS, запустив (как root, разумеется) "rdev /dev/fd0 /dev/boot255". После этого, вы можете выполнить команду "rm /dev/boot255", поскольку это устройство больше не понадобиться. Теперь отложите в сторону свою загрузочную дискету до тех пор, пока не подберёте оборудование для своего X терминала.

Настройка сервера

Так как мы еще не готовы перейти на оборудование, займёмся тонкой настройкой сервера. Я это сделал на Debian (такой вот выбор), поэтому ваша настройка в этой части может слегка отличаться. Для начала я установил и сконфигурировал сервер NFS (apt-get nfs-user-server), так чтобы X терминал смог найти его в своей корневой файловой системе. Конфигурирование производится редактированием файла /etc/exports. Ваш файл должен содержать похожую строку (значение no_root_squash важно):

/usr/xterminal 10.0.0.4/255.255.255.0(rw,no_root_squash)

Сетевая маска (/255.255.255.0) назначена так, чтобы я мог добавить ещё клиентов в своей сети без отдельного перечисления каждого, просто срабатывает ip адрес, если только это вам нужно. Затем я установил сервер BOOTP командой "apt-get install bootp". Для его конфигурирования я добавил в файл /etc/bootptab следующую строку:

xterm1:vm=auto:ip=10.0.0.4:ht=ethernet:ha=00a0240d5f52:rp=/usr/xterminal

Возможно, вы захотите изменить IP, аппаратный адрес своей сетевой карточки (он хранится где-то в ней или, если вы не можете его найти в карточке, его можно увидеть во время остановки загрузки ядра с дискеты при поиске серверов bootp) и путь к корневой файловой системе. Вам, также, потребуется добавить в файл /etc/inetd.conf следующую строку:

bootps          dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120

После этого с помощью команды "killall -HUP inetd" в режиме root заставьте inetd перечитать свой конфигурационный файл. Ещё одна вещь для настройки - XDM. И снова Debian делает это до смешного просто ("apt-get install xdm"). Хотя есть несколько конфигурационных файлов для настройки XDM. У меня они находятся в /etc/X11/xdm, а у вас могут быть где-либо ещё. В файл моего X сервера я добавил строку "10.0.0.4:0 foreign" (возможно, у вашего X терминала будет другой IP) и закомментировал строку ". To :0 local /usr/X11R6/bin/X -dpi 100 -nolisten tcp", поэтому мне на сервере не нужно логиниться через XDM. Для Xaccess я добавил строку "10.0.0.4", чтобы мой X терминал смог подключиться к xdm. И, наконец, в xdm-config я закомментировал (поставил в начале #) строку "DisplayManager.requestPort: 0", чтобы xdm не запрещал попытки подключения. Теперь сервер настроен.

Соединим всё это вместе

Теперь найдите старый компьютер. У меня старых ящиков не было, поэтому я пошёл в магазин и нашёл там один использованный компьютер. Моя обновка 486/66 была без какой-либо гарантии, но она стоила всего 30 долларов. Кстати, возможно это была самая мощная аппаратура для X терминала, так как в отделе процессоров ничего более быстрого не нашлось. В компьютере была встроенная видеокарта S3Trio64 (она поддерживала только 800х600х16, поэтому я заменил её на обычную PCI видеокарту на базе Trident Blade3D, работающую под SVGA X-сервером), и у меня было немного ОЗУ (32 мегабайта), почти все, что я смог запихнуть в него. Еще одно замечание по умощнению аппаратуры: ОЗУ 32 мегабайта - это больше, чем требуется X терминалу. Возможно, достаточно будет восемь или шестнадцать, так как всё, что необходимо делать - это запустить ядро и X. Из компьютера я вытащил всё, кроме флоппика и сетевой карты (3Com Etherlink III), поэтому он работал тихо, кроме небольшого шума от вентилятора блока питания. Я подключил монитор, patch-кабель ethernet, клавиатуру и мышь, вставил свою загрузочную дискету и включил, чтобы увидеть (после небольшой задержки на загрузку) прекрасный логотип XFree86 и диалог регистрации в X. С дешёвыми 15-дюймовыми мониторами можно сделать такие высококачественные X терминалы по цене 150-200 долларов за штуку.

X терминал рабтает отлично, словно я сижу в X-ах на своём сервере. Если у вас есть проблемы с его настройкой, смотрите соответствующие HOWTO, перечисленные выше, или спросите своего местного Linux гуру. При выполнении этих инструкций вы получите прекрасные, быстрые и, что лучше всего, дешёвые X терминалы, которые можно раcставить повсюду дома или в офисе.

Patrick Swieskowski

Патрик этой осенью станет старшекурсником в Roosevelt High School and Central Academy в Des Moines, Iowa. Он узнал о Linux в восьмом классе и с тех пор использует его постоянно.

 


Copyright © 2001, Patrick Swieskowski.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 68 of Linux Gazette, July 2001

Вернуться на главную страницу