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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

10.3.4 Опрос терминала

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

10.3.4 Опрос терминала Иногда удобно производить опрос устройства, то есть считывать с него данные, если они есть, или продолжать выполнять обычную работу — в противном случае. Программа на Рисунке 10.18 иллюстрирует этот случай: после открытия терминала с параметром "no delay"


10.3.5 Назначение операторского терминала

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

10.3.5 Назначение операторского терминала Операторский терминал — это терминал, с которого пользователь регистрируется в системе, он управляет процессами, запущенными пользователем с терминала. Когда процесс открывает терминал, драйвер терминала открывает строковый


10.3.6 Драйвер косвенного терминала

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

10.3.6 Драйвер косвенного терминала Зачастую процессам необходимо прочитать ил записать данные непосредственно на операторский терминал, хотя стандартный ввод и вывод могут быть переназначены в другие файлы. Например, shell может посылать срочные сообщения непосредственно


2.3.2 Доступ с терминала

Из книги Руководство по переходу на Ubuntu 10.04 LTS «Lucid Lynx» автора Неворотин Вадим

2.3.2 Доступ с терминала В начале 70-х гг. многие производители компьютеров создавали модели терминалов, которые были совместимы только с их собственными компьютерными системами. Министерство обороны США закупало оборудование у различных производителей и, естественно,


13.4 Модель эмуляции терминала в Telnet

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

13.4 Модель эмуляции терминала в Telnet Как показано на рис. 13.2, пользователь с реального терминала взаимодействует с локальной клиентской программой telnet. Эта программа принимает введенные с клавиатуры символы, интерпретирует их и выводит результат на пользовательский


13.6.3 Согласование характеристик терминала 3270

Из книги автора

13.6.3 Согласование характеристик терминала 3270 Аналогичный обмен происходит при установке эмуляции типа терминала IBM 3270. Показанный ниже диалог представляет согласование регистрации на хосте IBM VM с терминала 3270. В этом примере удаленный хост выводит на экран сведения для


16.1.3. Принадлежность терминала

Из книги автора

16.1.3. Принадлежность терминала Существуют две системные базы данных, используемые для отслеживания зарегистрированных пользователей; utmp применяется для пользователей, зарегистрированных в данный момент, a wtmp является записью всех предыдущих регистраций со времени


24.1.2. Восстановление состояния терминала

Из книги автора

24.1.2. Восстановление состояния терминала После того как состояние терминала было изменено с помощью функции SLang_init_tty(), программа, прежде чем завершить свою работу, должна явным образом восстановить первоначальное состояние терминала. Если этого не сделать, то вряд ли


24.1.3. Чтение символов с терминала

Из книги автора

24.1.3. Чтение символов с терминала После правильной инициализации терминала чтение одиночных нажатий клавиш не составит труда. Функция SLang_getkey() возвращает одиночный символ из терминала. Однако это не означает, что функция возвращает одиночное нажатие клавиши, ведь в


14.4 Разные полезности терминала

Из книги автора

14.4 Разные полезности терминала На всякий случай немного коснусь ещё одной темы. Бывает так, что вы что-то запустили в терминале и хотите прервать работу этого чего-то. Обычно это сделать очень просто, достаточно нажать на клавиатуре сочетание клавиш Ctrl-C[55].Есть и другие


Функции вода/вывода с консольного терминала и порта

Из книги автора

Функции вода/вывода с консольного терминала и порта Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера IBM/PC (наличие специального видеоадаптера) и не являются переносимыми на


21.2.7. Определение атрибутов терминала

Из книги автора

21.2.7. Определение атрибутов терминала Рассмотрим сценарий, в котором с помощью команды tput производится обращение к базе данных terminfo. С помощью некоторых команд tput отображаются управляющие коды терминала.$ pg termput#!/bin/sh#termput#инициируйте tput для терминала tput initclearecho "tput <>


Программы эмуляции терминала

Из книги автора

Программы эмуляции терминала Роль терминальных программ в жизни современного применителя Linux переоценить трудно. Это связано с постепенным отмиранием чисто текстовой консоли — ведь давно минули времена, когда она обеспечивала больший комфорт для глаз, нежели любой