20.7. Настройка Х-терминала

20.7. Настройка Х-терминала

В этом пункте вы узнаете, как можно использовать старенький припавший пылью компьютер с 486-м процессором в качестве X-терминала. Для начала нужно сказать, что такое X-терминал. Как и в обыкновенном терминале, в X-терминале мы видим лишь результаты выполнения программ, а сама программа выполняется на сервере. На обыкновенном терминале нельзя запускать программы, использующие систему X Window, a X-терминал снимает это ограничение. Благодаря этому, даже на самых медленных и старых компьютерах можно работать с новым программным обеспечением. Вы когда- нибудь пробовали установить систему X Window на компьютере IP166/16MB и запустить последнюю версию Netscape (на то время 4.51)? Для тех, кто не испытывал этого удовольствия, скажу, что запуск Netscape длился около 70-80 секунд. При работе с X-терминалом скорость выполнения программ даже на 486-м компьютере будет примерно такая же, как и на сервере. Естественно, это сильно зависит от загрузки сервера и количества Х-терминалов.

При запуске X-терминала вы увидите приглашение для входа в систему в графическом режиме, подобно тому, которое вы видите при запуске вашего сервера, если сервер X у вас запускается автоматически.

Какую аппаратуру можно использовать в качестве X-терминала? Подойдет любой компьютер, даже с процессором 386DX. Обратите внимание на наименование процессора! Нужен именно DX, а не SX. В отличие от последнего, процессор 386DX полностью 32-разрядный. При использовании процессора 486 тип (DX или SX) не имеет значения, потому что они отличаются только наличием или отсутствием математического сопроцессора. Минимальный объем оперативной памяти — 8 Мб. Объем оперативной памяти сильно зависит от дистрибутива и версии X Window, которые мы будем использовать для X-терминала. Я рекомендую установить 16 или даже 32 Мб. Устанавливать ОЗУ объемом более 32 Мб не имеет смысла, так как нам нужно будет запустить только ядро системы и X Window.

Сейчас мы рассмотрим базовую настройку X-терминала. Для начала нам нужно где-нибудь достать или подготовить самостоятельно корневую файловую систему для X-терминала. В качестве операционной системы для Х-терминала я рекомендую использовать Slackware-подобную систему, например, тот же Slackware или Debian. Это обусловлено двумя причинами. Во-первых, Slackware-подобные системы обладают меньшими требованиями к аппаратуре: чтобы более или менее нормально работать в Slackware нужен компьютер 386DX/4 Мб ОЗУ, а при использовании RedHat-подобных дистрибутивов (Mandrake, Black Cat) нужен как минимум 486/8 Мб ОЗУ. Во-вторых, я решил не создавать корневую файловую систему самостоятельно, а пойти по пути минимального сопротивления и достать корневую систему Slackware-подобной системы и использовать ее. В этом случае достаточно просто развернуть один архив и не тратить время на выбор нужных пакетов RPM. Конечно, можно достать tar-файл с корневой файловой системой и для RedHat, но тут напомнила о себе первая причина — системные требования Red Hat.

О данном методе установке я прочитал в статье Patrick Swieskowski, за что я ему очень благодарен. После того, как я все настроил самостоятельно, я написал этот пункт.

Итак, у нас есть два компьютера: более мощный (сервер) и самый обыкновенный компьютер с процессором 486.

Примечание. Вот конфигурация «более мощного» компьютера: Intel Celeron 600MHz/192MB/Quantum FireBall 7200rpm/Riva TNT2/Netcard Realtek 10/100 Mbit PCI.

Конфигурация терминала: Intel 486DX-100/16MB/Floppy 1,44МВ/без HDD/Video S3 2MB PCI/PCI Netcard Realtek 10/100Mbit. Конфигурация терминала даже несколько превышает минимальную, но ничего более старого тогда я не смог найти. Желательно, если есть такая возможность, использовать сетевые платы для шины PCI, обеспечивающие передачу данных со скоростью 100 Mbps. У меня обе платы работали в режиме 10 Mbps, потому что я соединял их напрямую, то есть без концентратора.

На сервере может быть установлен любой дистрибутив Linux. Желательно, конечно, использовать один дистрибутив как для сервера, так и для Х-терминала.

Я установил на обоих, точнее только на сервере, дистрибутив Debian Linux. Корневую файловую систему можно скачать на сайте Debian — www.debian.org. Архив с файловой системой называется base2_2.tgz. Я выразился не совсем корректно, поскольку в архиве файловая система как таковая не содержится, а в нем запакованы файлы, которые должны находиться в корневой файловой системе: утилиты (каталог bin), файлы конфигурации (etc) и так далее. Вам также понадобится установочный компакт-диск с выбранным дистрибутивом для установки системы X Window. Распакуйте только что выкачанный файл в каталог /usr/xterm:

tar –xvzf base2_2.tgz /usr/xterm

После выполнения этой команды в каталоге /usr/xterm появятся файлы корневой файловой системы. Теперь немного настроим нашу корневую файловую систему, для этого сделаем ее корневой для нашей операционной системы: chroot /usr/xterm

Создадим файл /etc/resolv.conf подобный тому, который используется на сервере. Это нужно для корректного разрешения имен на Х-терминале. Можно прописать необходимые IP-адреса и имена в файле /etc/hosts. В большинстве случаев, нужно указать только IP-адрес сервера. Затем отредактируем файл /etc/fstab так:

192.168.0.1:/usr/xterm / nfs defaults 0 0

proc /proc proc defaults 0 0

Вы, естественно, замените 192.168.0.1 на IP-адрес сервера для Х-терминалов.

Теперь установим и настроим систему X Window для Х-терминала. Вместо менеджера пакетов RPM в Debian нужно использовать программу apt-get. Установить X можно с помощью следующих команд:

apt-get update

apt-get install xserver-s3 xfonts-100dpi xfonts-base

Вторая команда устанавливает сервер X для видеокарт S3. Если у вас другая видеокарта, измените название пакета. Для SVGA-видеокарт сервер называется xserver-svga. Пока других пакетов устанавливать не нужно. Позже можно будет установить пакет с русскими шрифтами и необходимые приложения. Сейчас нас интересует функционирование самой X Window на терминале.

Если вы используете Linux Mandrake (или Red Hat) как операционную систему для терминала, установка системы X Window выполняется так, как описано выше в этой главе (см. пункт 20.1). Программа apt-get задаст вам несколько вопросов и на основании ваших ответов создаст файл XF86Config. В большинстве случаев его не нужно редактировать (пока не нужно: после установки русских шрифтов его нужно будет немного поправить).

У нас в данный момент нет учетных записей пользователей, кроме пользователя root, поэтому систему X Window лучше запускать из файла inittab:

X:123456:respawn:/usr/bin/Xll/X –query 192.168.0.1

Осталось только перекомпилировать ядро и создать загрузочный диск (компилирование ядра подробно рассматривалось в главе 18). С этой целью перейдите в каталог /usr/src/linux и введите команду make menuconfig. Включите следующие опции: в разделе Networking options включите опцию IP: kernel level configuration, а в появившихся новых опциях отметьте ВООТР support. Если вам также нужна поддержка DHCP, включите поддержку DHCP (DHCP support). Кстати, эту опцию нужно учитывать при настройке DHCP-клиентов. В разделе Filesystems?Network filesystems включите поддержку файловой системы NFS — NFS filesystem support. После ее включения (с учетом того, что поддержка ВООТР уже включена) появится новая опция — Root file system on NFS. Ее тоже нужно включить.

Старайтесь сделать ядро как можно более компактным, исключив из его состава лишние опции. Я вообще рекомендую использовать ядра 2.2.x — они более компактны, чем 2.4.x.

Не забудьте включить в состав ядра драйвер для вашей сетевой платы. Итак продолжим — откомпилируем ядро:

make dep

make bzImage

Если вы использовали модули, откомпилируйте их:

make modules

make modules_install

После того как ядро откомпилировано, нужно записать его на дискету командой:

dd if=bzImage of=/dev/fd0

Перед этим нужно перейти в каталог /usr/src/linux/arch/i386/boot. Теперь укажем ядру, где искать корневую файловую систему. Если бы мы создавали обыкновенную загрузочную дискету, мы бы ввели команду: rdev /dev/fd0 /dev/fd0

Так как наше ядро должно искать корневую систему по NFS, мы должны выполнить следующие действия:

mknod /dev/boot255 с 0 255

rdev /dev/fd0 /dev/boot255

rm –f /dev/boot255

Первая команда создает псевдоустройство /dev/boot255, вторая указывает ядру, что корневую файловую систему нужно искать по NFS, а третья удаляет только что созданное устройство, потому что оно больше не нужно нам. Установите корневую файловую систему сервера с помощью команды chroot.

Теперь нужно настроить сервер. Настройка NFS рассматривалась в главе 8, а здесь я лишь напомню некоторые моменты. На вашем сервере должен быть запущен демон nfs (nfsd). Если он не установлен, установите пакет nfs-utils в Mandrake и Red Hat. Если же вы последовали моему примеру и использовали Debian на сервере, введите команду apt-get nfs-user-server. Затем добавьте следующую строчку в файл /etc/exports на сервере:

/usr/xterm 192.168.0.2/255.255.255.0(rw,no_root_squash)

192.168.0.2 — это IP-адрес X-терминала. Вы можете указать маску подсети, как это сделал я, тогда при подключении новых X-терминалов вам не нужно будет перечислять каждый терминал отдельно. После этого установите сервер ВООТР:

в Mandrake и RedHat — rpm -ih /mnt/cdrom/Mandrake/RPMS/bootparamd*

в Debian — apt-get install bootp

Затем в файл /etc/bootptab (или /etc/bootparams) добавьте строчку

xterm01:vm=auto:ip=192.168.0.2:ht=ethernet:ha=xxxxxxxxxxx:rp=/usr/xterm

где: xterm01 — имя Х-терминала;

 192.168.0.2 — его IP-адрес;

 xxxxxxxxxxx — МАС-адрес X-терминала.

В файл /etc/inetd.conf, если вы используете суперсервер inetd, добавьте строчку (или раскомментируйте ее):

bootps dgram udp wait root /usr/sbin/tcpdbootpd –i –t 120

Можно также использовать:

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

При использовании xinetd:

service bootps

{

 socket_type = dgram

 protocol = udp

 user = root

 wait = yes

# в Linux Mandrake / Red Hat

 server = /usr/sbin/rpc.bootparamd

# в Debian

 server = /usr/sbin/bootpd

}

Заставьте xinetd (inetd) перечитать файл конфигурации:

killall -HUP inetd

Теперь осталось настроить диспетчер дисплеев — xdm. При использовании Red Hat или Mandrake xdm, скорее всего, будет уже установлен. А вот если вы использовали «укороченную» файловую систему от Debian, xdm установлен не будет. Для его установки выполните (на файловой системе сервера) команду:

apt-get install xdm

Файлы конфигурации xdm находятся в каталоге /etc/X11/xdm. В файл Xservers добавьте строку:

192.168.0.2:0 foreign

Эта строка обеспечит подключение X-терминала. В файл Xaccess добавьте строку: 192.168.0.2

Если в вашем файле xdm-config будет строка DisplayManager.requestPort: 0, то закомментируйте ее. Примеры используемых файлов конфигурации xdm приведены в листингах 20.3…20.5. Вот, собственно, и все.

Листинг 20.3. Файл /etc/X11/xdm/Xservers

# $XConsortium: Xserv.ws.срр,v 1.3 93/09/28 14:30:30 gildea Exp $

#

#

# $XFree86: xc/programs/xdm/config/Xserv.ws.cpp,v 1.1.1.1.12.2 1998/10/04 15:23:14 hohndel Exp $

#

#  Xservers file, workstation prototype

#

#  Each X terminal line should

#  look like:

# XTerminalName:0 foreign

#

:0 local /usr/X11R6/bin/X 192.168.0.2:0 foreign

Листинг 20.4. Файл /etc/X11/xdm/Xaccess

192.168.0.2

Листинг 20.5. Файл /etc/X11/xdm/xdm-config

! $XConsortium: xdm-conf.cpp /main/3 1996/01/15 15:17:26 gildea $

DisplayManager.errorLogFile: /var/log/xdm-error.log

DisplayManager.pidFile: /var/run/xdm.pid

DisplayManager.keyFile: /etc/X11/xdm/xdm-keys

DisplayManager.servers: /etc/X11/xdm/Xservers

displayManager.accessFile: /etc/X11/xdm/Xaccess

! All displays should use authorization, but we cannot be sure

! X terminals will be configured that way, so by default

! use authorization only for local displays :0, :1, etc.

DisplayManager._0.authorize: true

DisplayManager._1.authorize: true

! The following three resources set up display :0 as the console.

DisplayManager._0.setup:/etc/X11/xdm/Xsetup_0

DisplayManager._0.startup: /etc/X11/xdm/GiveConsole

DisplayManager._0.reset:/etc/X11/xdm/TakeConsole

DisplayManager._0.startAttempts: 1

!

DisplayManager*resources: /etc/X11/xdm/Xresources

DisplayManager*session: /etc/X11/Xsession

DisplayManager*authComplain: false

Данный текст является ознакомительным фрагментом.