Менеджеры экрана
Если в предыдущем разделе вы установили и сконфигурировали X на компьютере, на котором ранее X отсутствовал, то вы, вероятно, заметили, что для доступа к любым графическим экранам приходиться регистрироваться в окне виртуального терминала и выполнять команду startx. Это неудобно даже для локального экрана, а для удалённого терминала не работает вообще.
Решение этой проблемы состоит в использовании менеджера экрана для предоставления графического окна регистрации и управления аутентификацией. После того, как пользователь аутентифицирован, менеджер экрана открывает для пользователя сессию на той системе, где он выполняется. Графический вывод производится на том экране, в котором пользователь ввел свои данные регистрации. Это может быть как локальный дисплей, так и X-дисплей, подключенный через сеть. И Xfree86 и X.Org поставляются с менеджером экрана XDM.
Есть ещё два популярных менеджера экрана KDE и GNOME. В этом разделе вы узнаете как устанавливать и настраивать все эти три менеджера экрана.
Для настройки графического окна регистрации вам необходимо понимать процесс инициализации Linux. В оставшейся части этого раздела вы получите достаточно информации для запуска системы с графическим экраном регистрации, но основное внимание будет уделено установке и настройке менеджера экрана.
В Red Hat® и SUSE X запускается с уровнем выполнения 5. Debian рассматривает уровни выполнения со 2 по 5 как эквивалентные и по умолчанию использует уровень 2. Определение уровня выполнения производится в файле /etc/inittab как показано в листинге 9.
Листинг 9. Установка уровня выполнения в /etc/inittab.
# The default runlevel is defined here
id:5:initdefault:
Ещё одна строка показанная в листинге 10 (для SUSE) или листинге 11(для Ubuntu) определяет какая программа или скрипт должна выполняться первой.
Листинг 10. Начальный скрипт для SUSE (или Red Hat)
# First script to be executed, if not booting in emergency (-b) mode
si::bootwait:/etc/init.d/boot
Листинг 11. Начальный скрипт для Ubuntu (или Debian)
# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS
Скрипты инициализации (/etc/init.d/boot или /etc/init.d/rcS) далее запустят другие скрипты. В итоге, будет запущен набор скриптов для заданного уровня выполнения. Для приведённых примеров это набор мог включать скрипты etc/rc2.d/S13gdm (Ubuntu) или /etc/init.d/rc5.d/S16xdm (SUSE), предназначенные для запуска менеджера экрана. Вы обнаружите, что каталоги rcn.d и /etc/init.d обычно содержат символические ссылки на скрипты в /etc/init.d и префиксом S(или K) и числом. S означает, что скрипт должен выполняться при входе на уровень выполнения, а K – при завершении уровня выполнения. Цифры от 1 до 99 определяют порядок выполнения скриптов.
Подсказка: Если вы пытаетесь понять, как запускается менеджер экрана, то обратите внимание на скрипты, имена которых заканчиваются на dm.
Вы можете обнаружить, что скрипт для запуска менеджера экрана, скажем /etc/init.d/rc5.d/S16xdm, может быть короткой программой, содержащей дополнительную логику для определения того, какой менеджер экрана на самом деле будет запущен. Так что, хотя многие системы позволяют это делать через настройки, вы также можете определить, какой менеджер экрана будет запущен изучая ваши файлы инициализации.
Вас не должно удивлять, что для управления запуском менеджера экрана достаточно символических ссылок в соответствующем каталоге rcn.d. Более того, если вам необходимо остановить или запустить менеджер экрана, вы можете напрямую использовать скрипт из каталога /etc/init.d как показано в листинге 12.
Листинг 12. Остановка и запуск менеджера экрана
root@pinguino:~# /etc/init.d/gdm stop
* Stopping GNOME Display Manager... [ ok ]
root@pinguino:~# /etc/init.d/gdm start
* Starting GNOME Display Manager... [ ok ]
Теперь когда вы знаете как запускать и останавливать менеджер экрана, давайте обратимся к вопросу конфигурирования каждого из этих трёх менеджеров.
XDM
X Display Manager (XDM) включен в пакеты Xfree86 и X.Org. В соответствии со стандартом File System Hierarchy Standart, файлы конфигурации должны располагаться в /etc/X11/xdm. Главный файл конфигурации – /etc/X11/xdm/xdm- config. В этом файле находится информация о других файлах, используемых XDM, о требованиях авторизации, имена скриптов для выполнения различных задач пользователя и некоторая другая информация о конфигурации.
Файл Xservers определяет какой локальный дисплей или дисплеи должен управляться XDM. Как правило, он состоит из одной строки как показано в листинге 13.
Листинг 13. Пример файла Xservers
:0 local /usr/X11R6/bin/X :0 vt07
Листинг 13 показывает, что X должен работать на 7-м виртуальном терминале. Для переключения между виртуальными терминалами большинство систем используют сочетания клавиш от Ctrl-Alt-F1 до Ctrl-Alt-F7, где терминалы от vt01 до vt06 – текстовые терминалы, а vt07 – X-терминал.
Для поддержки работы удалённых X-терминалов вам понадобится файл Xaccess. Этот файл управляет взаимодействием XDM с терминалами, поддерживающими X Display Manager Control Protocol (XDCMP)(X протокол управления менеджером экрана). Терминалы, не поддерживающие данный протокол определены в файле Xservers. XDCMP использует хорошо известный UDP порт 177. Из соображений безопасности вы должны ограничить использование XDСMP только доверенной внутренней сетью соответствующей настройкой брандмауэра.
Вы можете настраивать работу XDM обновляя скрипты в /etc/X11/xdm. В частности, скрипт Xsetup (или Xsetup_0) позволяет вам настроить приветствие. На рисунке 2 показано приветствие XDM с добавленными часами.
Рисунок 2. Изменённое приветствие XDM
Исходный код изменённого файла Xsetup_0 показан в листинге 14.
Листинг 14. Пример файла Xsetup_0
#!/bin/sh
xclock -geometry 80x80 -bg wheat&
xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail
Приветствие, показанное на рисунке 2 имеет разрешение 640×480 пикселов и 256 цветов. XDM использует разрешение, установленное по умолчанию в файле XF86Config или xorg.conf. Для изменения разрешения экрана во всей системе, вы можете отредактировать этот файл или воспользоваться утилитами, которые могут иметься в вашей системе. Листинг 15 показывает раздел Screen (Экран) файла XF86Config. Обратите внимание на то, что значение параметра DefaultDepth (глубина цвета по умолчанию) равно 16 и X-сервер попробует запустить экран с первым указанным для этого случая разрешением (в примере 1024×768).
Листинг 15. Настройка разрешения экрана
Section "Screen"
DefaultDepth 16
SubSection "Display"
Depth 15
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480"
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
Параметр Depth (Глубина) указывает количество бит для представления каждого пикселя. Этот параметр также называют числом бит на пиксель (bits per pixel) или bitplanes. Таким образом, использование 8 бит на пиксель (8 бит на каждый цвет) даёт 256 цветов, а 16 бит на пиксель позволяет получить до 65536 цветов. На современных графических картах сейчас используется глубина цвета 24 или 32.
Вы можете уточнить разрешение экрана используя команду xwininfo с параметром -root для отображения характеристик работающего X-сервера как показано в листинге 16.
Листинг 16. Проверка разрешения экрана
ian@lyrebird:~> xwininfo -display 0:0 -root
xwininfo: Window id: 0x36 (the root window) (has no name)
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 1024
Height: 768
Depth: 16
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +0+0 -0+0 -0-0 +0-0
-geometry 1024x768+0+0
KDM
KDM это K Desktop Manager (Менеджер рабочего стола K) для K Desktop Enviroment(KDE)(интегрированная рабочая среда К). KDE версии 3 использует файл конфигурации kdmrc, в отличии от предыдущих версий, использовавших конфигурационную информацию, основанную на файлах конфигурации xdm. Этот файл расположен в $KDEDIR/share/config/kdm, где $KDEDIR может соответствовать /etc/kde3/kdm/ или чему-то ещё. Например, в SUSE SLES8 он находится в /etc/opt/kde3/share/config/kdm.
Листинг 17. Файл конфигурации KDM – kdmrc
[Desktop0]
BackgroundMode=VerticalGradient
Color1=205,205,205
Color2=129,129,129
MultiWallpaperMode=NoMulti
Wallpaper=UnitedLinux-background.jpeg
WallpaperMode=Scaled
[X-*-Greeter]
GreetString=UnitedLinux 1.0 (%h)
EchoMode=OneStar
HiddenUsers=nobody,
BackgroundCfg=/etc/opt/kde3/share/config/kdm/kdmrc
MinShowUID=500
SessionTypes=kde,gnome,twm,failsafe
[General]
PidFile=/var/run/kdm.pid
Xservers=/etc/opt/kde3/share/config/kdm/Xservers
[Shutdown]
HaltCmd=/sbin/halt
LiloCmd=/sbin/lilo
LiloMap=/boot/map
RebootCmd=/sbin/reboot
UseLilo=false
[X-*-Core]
Reset=/etc/X11/xdm/Xreset
Session=/etc/X11/xdm/Xsession
Setup=/opt/kde3/share/config/kdm/Xsetup
Startup=/etc/X11/xdm/Xstartup
AllowShutdown=Root
[Xdmcp]
Willing=/etc/X11/xdm/Xwilling
Xaccess=/etc/X11/xdm/Xaccess
Многие разделы содержат тот же тип конфигурационной информации что и для XDM, но существуют некоторые отличия. Например, поле SessionTypes (типы сессий) позволяет KDM запускать сессии нескольких различных типов, другие команды позволяют KDM выключать или перезагружать систему.
Вы можете сконфигурировать KDM редактируя файл kdmrc. Вы также можете изменить многие настройки менеджера регистрации (Login Manager), используя центр управления KDE, как показано на рисунке 3.
Рисунок 3. Изменение конфигурации KDM с использованием kcontrol
GDM
GDM – это GNOME Desktop Manager (Менеджер виртуального рабочего стола GNOME) для GNOME Desktop Enviroment (интегрированной рабочей среды GNOME). Этот менеджер рабочего стола был написан с нуля, а не основывался на XDM. GDM использует конфигурационный файл gdm.conf, обычно расположенный в каталоге /etc/X11/gdm. В листинге 18 показана часть файла gdm.conf.
Листинг 18. Часть файла конфигурации GDM – gdm.conf
# You should probably never change this value unless you have a weird setup
PidFile=/var/run/gdm.pid
# Note that a post login script is run before a PreSession script.
# It is run after the login is successful and before any setup is
# run on behalf of the user
PostLoginScriptDir=/etc/X11/gdm/PostLogin/
PreSessionScriptDir=/etc/X11/gdm/PreSession/
PostSessionScriptDir=/etc/X11/gdm/PostSession/
DisplayInitDir=/etc/X11/gdm/Init
...
# Probably should not touch the below this is the standard setup
ServAuthDir=/var/gdm
# This is our standard startup script. A bit different from a normal
# X session, but it shares a lot of stuff with that. See the provided
# default for more information.
BaseXsession=/etc/X11/xdm/Xsession
# This is a directory where .desktop files describing the sessions live
# It is really a PATH style variable since 2.4.4.2 to allow actual
# interoperability with KDM. Note that
# for backwards compatibility reasons with 2.4.4.x
#SessionDesktopDir=/etc/X11/sessions/:/etc/X11/dm/Sessions/:/usr/share/gdm/Buil\
tInSessions/:/usr/share/xsessions/
# This is the default .desktop session. One of the ones in SessionDesktopDir
DefaultSession=default.desktop
Снова вы можете заметить сходство в конфигурационной информации, используемой GDM, KDM, XDM, но файл gdm.conf больше с богатым выбором опций.
Вы можете настроить GDM отредактировав файл gdm.conf. Также большую часть этих настроек можно изменить командой gdmsetup. На рисунке 4 приведён выбор различных вариантов приветствия в системе Fedora.
Рисунок 4. Изменение настроек GDM c использованием gdmsetup
Справочное руководство по GDM (см. gdmsetup help) содержит подробную информацию по настройке GDM.
Источник: ibm developerworks