Конфігурація X серверу

Починаючи з Slackware 10.0, Віконне Середовище X (скорочено - X) у Slackware забезпечується Xorg. X відповідає за надання графічного користувацького середовища і, навідміну від Windows або MacOS, не залежить від операційної системи.

Віконна система X втілена завдяки багатьом програмам, що запускаються у користувацькому просторі. Два основні компоненти - це сервер і віконний керівник (window manager). Сервер забезпечує функціональність низького рівня, він відповідає за взаємодію із вашими пристроями відображення. Віконний керівник, в свою чергу, розміщений рівнем вище і забезпечує графічним користувацьким інтерфейсом. Така схема має перевагу у тому, що ви можете мати різноманітні графічні інтерфейси лише помінявши керівника вікон.

Налагодження X, це дещо складний процес, частково тому що на сьогоднішній день існує величезна кількість різноманітних приладів для ПК. Більшість карт, тим не менш, підтримують стандарт VESA, що дозволяє запустити X практично без особливої конфігурації, за допомогою команди startx.

Якщо це не є дійсним для вашої картки або, якщо ви хочете скористатися додатковою функціональністю картки, такою як, скажімо, апаратне прискорення або трьохвимірне апаратне відтворення, тоді вам потрібно буде пареналадити X.

Під час конфігурації, у вас згенерується файл /etc/X11/xorg.conf. Він утримуватиме різноманітну інформацію про ваші графічні пристрої, також мишку, клавіатуру і монітор. Цей файл може бути досить складним, але, на щастя, існують декілька програм що допоможуть вам у його створенні.

xorgconfig

Запускається користувачем root:

# xorgconfig

Це проста, побудована на основі запитань і відповідей, текстова програма. Спочатку вона вказує X-серверу розглянути картку і започаткувати конфігурацію, на основі інформації яку він може зібрати. Генерований таким чином /etc/X11/xorg.conf стане основою подальшої конфігурації.

Користувач отримає спочатку загальну інформацію про саму xorgconfig. Після ознайомлення, притисніть Enter. Далі xorgconfig спитає, чи змінна середовища PATH є вірно встановленою. Тут ви теж можете притиснути Enter.

Ілюстрація 6-1. xorgconfig конфігурація мишки.

+-----------------------------------------------------------------------------+
| First specify a mouse protocol type. Choose one from the following list:    |
|                                                                             |
|  1. Auto                                                                    |
|  2. SysMouse                                                                |
|  3. MouseSystem                                                             |
|  4. PS/2                                                                    |
|  5. Microsoft                                                               |
|  6. Busmouse                                                                |
|  7. IMPS/2                                                                  |
|  8. ExplorerPS/2                                                            |
|  9. GlidePointPS/2                                                          |
| 10. MouseManPlusPS/2                                                        |
| 11. NetMousePS/2                                                            |
| 12. NetScrollPS/2                                                           |
| 13. ThinkingMousePS/2                                                       |
| 14. AceCad                                                                  |
|                                                                             |
| The recommended protocol is Auto. If you have a very old mouse              |
| or don't want OS support or auto detection, and you have a two-button       |
| or three-button serial mouse, it is most likely of type Microsoft.          |
|                                                                             |
| Enter a protocol number:                                                    |
+-----------------------------------------------------------------------------+

Введіть число, що відповідає протоколу який використовує ваша мишка. Якщо у вас мишка на серійному порту і ви не бачите протоку, який вона використовує, виберіть Microsoft, так як це найбільш поширений протокол для серійних мишок. Наступний діалог спитає вас, чи хочете ви вживати ChordMiddle та Emulate3Buttons (емуляцію трьох кнопок). Вам це необхідно лише у випадку з дво-кнопковими мишками, тож, в більшості випадків, відповіддю буде no. У послідуючому діалозі, від вас вимагатиметься назву приладу з каталогу /dev, що відповідає вашій мишці. Як правило, вибір /dev/mouse повинен спрацювати. /dev/mouse - це символічне посилання, яке повинно вже бути автоматично налагоджене програмою setup під час інсталяції Slackware. Якщо у вас запущений GPM, консольний сервер для мишки, у стані повторювача (repeater mode), ви також можете вибрати /dev/gpmdata, тож X буде отримувати інформацію про мишку через gpm. В деяких випадках, особливо із busmouse, останнє спрацьовує краще, більшості користувачів, тим не менш, не варто цього робити.

xorgconfig спитає вас, чи включити спеціальні клавіатурні комбінації (прив'язки). Якщо вам це необхідно, дайте відповідь yes. Більшість користувачів можуть сказати no.

Ілюстрація 6-2. xorgconfig, горизонтальна розгортка.

+----------------------------------------------------------------------------------+
| You must indicate the horisontal sync range of your monitor. You can either      |
| select one of the predefined ranges below that correspond to industry-           |
| standard monitor types, or give a specific range.                                |
|                                                                                  |
| It is VERY IMPORTANT that you do not specify a monitor type with horizontal      |
| sync range that is beyound the capabilities of your monitor. If in doubt,        |
| choose a conservative setting.                                                   |
|                                                                                  |
|      hsync in kHz; monitor type with characteristic modes                        |
|  1   31.5; Standard VGA, 640x480 @ 60 Hz                                         |
|  2   31.5 - 35.1; Super VGA. 800x600 @ 56 Hz                                     |
|  3   31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)       |
|  4   31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz  |
|  5   31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz           |
|  6   31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz         |
|  7   31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz                          |
|  8   31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz                          |
|  9   31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz                          |
| 10   31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz                          |
| 11   Enter your own horizontal sync range                                        |
|                                                                                  |
| Enter your choice (1 - 11):                                                      |
+----------------------------------------------------------------------------------+

Ви повинні вибрати діапазон горизонтальних частот для вашого монітору зі списку, або внести власний діапазон. Для цього варто попередньо проконсультувати посібник до монітору, якщо він у вас у наявності. У найгіршому випадку, якщо у вас відсутня будь-яка документація до монітору, перевірте задню панель. Багато моніторів включають інформацію про максимальну дозволену частоту і резолюцію (роздільну здатність) на самому моніторі. Навіть якщо ця інформація відсутня, ви можете вибрати мінімальну резолюцію і частоту, скажімо 800x600 @ 60 Hz, потім пізніше вийти в Інтернет і пошукати технічні специфікації для вашої моделі. Не варто перевищувати діапазон частот, тим не менш, деякі монітори можуть цього не витримати.

Дуже помагає в таких випадках текстовий Інтернет-навігатор, такий як ?lynx(1), ?links(1). Обов'язково встановіть один з них. Існує досить багато людей, які не користуються графічним інтерфейсом і X взагалі. Всю необхідну інформацію з Інтернету вони з легкістю здобувають у текстовому режимі. Якщо ви налагодили інтернет (а це не обов'язково робити у графічному режимі), ви спокійно можете направити lynx на google.com, командою lynx http://www.google.com/linux. Введіть в пошук модель вашого монітора. Впевнений що результатів буде більше ніж вдосталь.

Ілюстрація 6-3. xorgconfig, вертикальна розгортка.

 +--------------------------------------------------------------------------------+
 | You must indicate the vertical sync range for your monitor. You can either     |
 | select one of the predefined ranges below that correspond to industry-         |
 | standard monitor types, or give a specific range. For interlaced modes,        |
 | the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).         |
 |                                                                                |
 | 1  50-70                                                                       |
 | 2  50-90                                                                       |
 | 3  50-100                                                                      |
 | 4  40-150                                                                      |
 | 5  Enter your own vertical sync range                                          |
 |                                                                                |
 | Enter your choice:                                                             |
 |                                                                                |
 +--------------------------------------------------------------------------------+

Більшість з вищесказаного для горизонтального діапазону, також відноситься до вертикального.

Наступне, xorgconfig спитає вас внести рядок що буде ідентифікувати ваш монітор. Це може бути довільний рядок, або навіть нічого. В останньому випадку значенням за замовчуванням є Monitor0.

Ілюстрація 6-4. xorgconfig, вибір графічної картки.

 +--------------------------------------------------------------------------------+
 |  0  * Generic VESA compatible                                 -                |
 |  1  * Generic VGA compatible                                  -                |
 |  2  * Unsupported VGA compatible                              -                |
 |  3  ** 3DLabs, TI (generic)                       [glint]     -                |
 |  4  ** 3Dfx (generic)                             [tdfx]      -                |
 |  5  ** ATI (generic)                              [ati]       -                |
 |  6  ** ATI Radeon (generic)                       [radeon]    -                |
 |  7  ** ATI Rage 128 based (generic)               [r128]      -                |
 |  8  ** Alliance Pro Motion (generic)              [apm]       -                |
 |  9  ** Ark Logic (generic)                        [ark]       -                |
 | 10  ** Chips and Technologies (generic)           [chips]     -                |
 | 11  ** Cirrus Logic (generic)                     [cirrus]    -                |
 | 12  ** Cyrix MediaGX (generic)                    [cyrix]     -                |
 | 13  ** DEC TGA (generic)                          [tga]       -                |
 | 14  ** Intel i740 (generic)                       [i740]      -                |
 | 15  ** Intel i810 (generic)                       [i810]      -                |
 | 16  ** Linux framebuffer (generic)                [fbdev]     -                |
 | 17  ** Matrox Graphics (generic)                  [mga]       -                |
 |                                                                                |
 | Enter a number to choose the corresponding card definition.                    |
 | Press Enter for the next page, q to continue configuration.                    |
 |                                                                                |
 +--------------------------------------------------------------------------------+

Вам надасться можливість передивитись базу даних графічних карток. Якщо ви згодні, введіть yes і виберіть одну зі списку. Якщо ви не знайдете саме вашу модель, виберіть одну що використовує той самий чип.

Наступним, xorgconfig спитає вас скільки RAM пам'яті включає ваша картка (як правило, X всерівно автоматично виявляє кількість RAM). За цим, вам надається можливість дати опис власної картки, за замовчуванням, це Card0.

Вам надасться можливість вибрати роздільні здатності (resolution) які ви хочете використовувати. Ви можете вибрати ті, що надано за замовчуванням і пізніше відредагувати /etc/X11/xorg.conf і видалити або переставити місцями режими таким чином щоб, скажімо, 1024x768 (або той режим який вам подобається) став стандартним.

Накінець, xorgconfig програма спитає вас чи хотіли б ви зберегти конфігураційний файл, тож вкажіть yes. Обов'язково передивіться /etc/X11/xorg.config за допомогою команд less або more, якщо виникне необхідність, відредагуйте його (подивіться приклад робочого xorg.config, наведений нижче). Ви можете запустити X за допомогою команди ?startx(1).

xorgsetup

Іншим, можливо дещо легшим, способом налагодити X є програма xorgsetup. Щоб запустити xorgsetup, зареєструйтесь як root і виконайте:

# xorgsetup

Якщо вже існує /etc/X11/xorg.conf файл, у вас буде можливість зробити резервну копію у /etc/X11/xorg.conf.backup.

Приклад простого файлу xorg.conf:

Section "ServerLayout"   
     Identifier     "X.org Configured"
     Screen      0  "Screen0" 0 0
     InputDevice    "Mouse0" "CorePointer"
     InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
     RgbPath      "/usr/X11R6/lib/X11/rgb"
     ModulePath   "/usr/X11R6/lib/modules"
     FontPath     "/usr/X11R6/lib/X11/fonts/cyrillic/"
     FontPath     "/usr/X11R6/lib/X11/fonts/misc/"
     FontPath     "/usr/X11R6/lib/X11/fonts/75dpi/"
     FontPath     "/usr/X11R6/lib/X11/fonts/100dpi/"
     FontPath     "/usr/X11R6/lib/X11/fonts/TTF/"
     FontPath     "/usr/X11R6/lib/X11/fonts/Type1/"
EndSection

Section "Module"
     Load  "dbe"
     Load  "extmod"
     Load  "glx"
     Load  "record"
     Load  "xtrap"
     Load  "freetype"
     Load  "type1"
EndSection

Section "InputDevice"
     Identifier  "Keyboard0"
     Driver      "keyboard"
     Option      "XkbRules" "xorg"
        Option      "XkbModel" "microsoftinet"
        Option      "XkbLayout" "us"     
EndSection

Section "InputDevice"
     Identifier  "Mouse0"
     Driver      "mouse"
     Option         "Protocol" "imps/2"
     Option         "Device" "/dev/mouse"
     Option         "ZAxisMapping" "4 5"
EndSection

Section "Monitor"
     HorizSync    30.0 - 60.0
     VertRefresh  50.0 - 70.0
     Identifier   "Monitor0"
     VendorName   "SAM"
     ModelName    "570V TFT"
     Option         "DPMS"
EndSection

Section "Device"
     Identifier  "Card0"
     Driver      "nv"
     VendorName  "nVidia Corporation"
     BoardName   "NV6 [Vanta/Vanta LT]"
     BusID       "PCI:1:0:0"
EndSection

Section "Screen"
     Identifier "Screen0"
     Device     "Card0"
     Monitor    "Monitor0"
     DefaultDepth 16
     SubSection "Display"
          Viewport   0 0
          Depth     16
          Modes     "1024x768" "800x600"
     EndSubSection
     SubSection "Display"
          Viewport   0 0
          Depth     24
          Modes     "1024x768" "800x600"
     EndSubSection
EndSection

xinitrc

?xinit(1), власне, і є тією програмою, що запускає X-сервер, саме вона буде викликана скриптом startx. Конфігураційний файл xinit, xinitrc визначає, які програми, а головне, віконні керівники будуть запущені під час старту X. Програма xinit спочатку перевіряє ваш домашній каталог на наявність прихованого файлу .xinitrc (крапка - це частина назви файла, саме крапка на початку імені файла робить його "невидимим" для команди ls). Якщо .xinitrc знайдено, команди що там знаходяться буде виконано під час запуску X. Якщо .xinitrc відсутній, виконуваватиметься /var/X11R6/lib/xinit/xinitrc (конфігурація за замовчуванням для всієї системи). Ось приклад простого файлу xinitrc:

#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
   xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
   xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
   xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
   xmodmap $usermodmap
fi

# start some nice programs
twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

Всі ці блоки "if" для того, щоб долучити налаштування з інших конфігураційних файлів. Цікавим є самий кінець файла, де запускаються різноманітні програми. X сеанс буде запущено з віконним керівником ?twm(1), програмою що зображає годинник і трьома терміналами. Зверніть увагу на "exec" поперед останньої команди. Команда exec необхідна для заміни поточної оболонки (тієї що виконує скрипт xinitrc) програмою ?xterm(1). Як тільки користувач закриє xterm, X сеанс завершиться теж. Також, ви часто знайдете приклади .xinitrc, де exec стоїть перед командою виконання самого віконного керівника, як показано трохи нижче.

Ви можете створювати власні скрипти xinitrc якщо скопіюєте /var/X11R6/lib/xinit/xinitrc як ~/.xinitrc (~, тильда є символом домашньої директорії), або, навіть, якщо створите порожній .xinitrc і додасте власні команди. Вони можуть настільки простими, як:

# Starting xterm:
xterm &
# Starting KDE window manager:
exec startkde

У /var/X11R6/lib/xinit ви знайдете також декілька скриптів xinitrc для інших віконних керівників (вони мають відповідні назви), ви можете використати їх також як ваш .xinitrc.

xwmconfig

Існує велике розмаїття віконних керівників і графічних середовищ для Лінукса. Починаючи з розвинених і багатофункціональних GNOME та KDE, до мінімальних і нересурсоємких twm, ?blackbox(1), тощо. Мало які операційні системи включають такий широкій вибір користувацьких інтерфейсів. Ви можете спробувати більшість з них, якщо бажаєте, перемикаючи перед завантажуванням X від одного до іншого віконного керівника за допомогою xwmconfig. Просто запустіть xwmconfig у текстовому режимі перед startx командою:

% xwmconfig

Ілюстрація 6-5. Вибір графічного інтерфейсу.

  +------------------------------------------------------------------------+
  |                  SELECT DEFAULT WINDOW MANAGER FOR X                   |
  |  Please select the default window manager to use with the X Window     |
  |  System. This will define the style of graphicla user interface the    |
  |  computer uses. KDE and GNOME provide the most features. People with   |
  |  Windows or MacOS exprerience will find either one easy to use. Other  |
  |  window managers are easier on system resources, or provide other      |
  |  unique features.                                                      |
  |  +------------------------------------------------------------------+  |
  |  |  xinitrc.kde       KDE: K Desktop Environment                    |  |
  |  |  xinitrc.gmome     GNU Notwork Object Model Environment          |  |
  |  |  xinitrc.xfce      The Choresterol Free Desktop Environment      |  |
  |  |  xinitrc.blackbox  The blackbox window manager                   |  |
  |  |  xinitrc.fluxbox   The fluxbox window manager                    |  |
  |  |  xinitrc.wmaker    WindowMaker                                   |  |
  |  |  xinitrc.fvwm2     F(?) Virtual Window Manager (version 2.xx)    |  |  
  |  |  xinitrc.twm       Tab Window Manager (very basic)               |  |
  |  +------------------------------------------------------------------+  |
  |                   <  OK  >                  <Cancel>                   |
  |                                                                        |
  +------------------------------------------------------------------------+

xdm

Багато користувачів надають перевагу старту системи одразу в X графічне середовище. Для цього необхідно вказати Slackware завантажуватись безпосередньо у X і запустити графічний керівник реєстрації користувачів. Slackware приходить з трьома графічними керівниками реєстрації - ?xdm(1), kdm та ?gdm(1).

xdm є частиною системи X.org, kdm частиною KDE, тоді як gdm приходить з GNOME. Будь-який з них дозволить зареєструватись вам як одному з користувачів і вибрати який саме керівник вікон використовувати.

На жаль, Slackware не має якоїсь програми яка дозволяла би вибрати сам графічний керівник реєстрації. Тож, якщо ви хочете поміняти його, вам доведеться вручну відредагувати певні файли. Але спершу давайте обговоримо як саме завантажити систему зразу в графічне середовище, оминаючи текстовий режим.

Для запуску X-ів одразу після старту системи, вам потрібно заставити Slackware завантажуватись у 4-ий робочий рівень. Робочі рівні, як ми з'ясували - це лише вказівка init(8), що саме запустити. Ми з легкістю можемо поміняти робочий рівень старту системи, якщо відредагувати /etc/inittab:

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:

Саме рядок з initdefault ми повинні поміняти, щоб вона вказувала на робочий рівень 4 замість 3:

 # Default runlevel. (Do not set to 0 or 6)
 id:4:initdefault:

Тепер Slackware завантажуватиметься у 4-ий робочий рівень, виконуючи /etc/rc.d/rc.4. Цей файл запускає X, викликаючи керівник реєстрації, який ви вибрали. Тож, як саме ми вибираємо керівника реєстрації? Існує декілька способів, ми пояснимо їх після того як заглянемо у rc.4.

 # Try to use GNOME's gdm session manager:
 if [ -x /usr/bin/gdm ]; then
   exec /usr/bin/gdm -nodaemon
 fi

 # Not there?  OK, try to use KDE's kdm session manager:
 if [ -x /opt/kde/bin/kdm ]; then
   exec /opt/kde/bin/kdm -nodaemon
 fi

 # If all you have is XDM, I guess it will have to do:
 if [ -x /usr/X11R6/bin/xdm ]; then
   exec /usr/X11R6/bin/xdm -nodaemon
 fi

Як ви бачите, rc.4 перевіряє чи gdm є виконуваним, і якщо так, запускає його. За gdm слідує kdm, після чого - xdm. Одним з шляхів вибору керівника реєстрації буде видалити ті які вам не потрібні за допомогою програми removepkg (ви дізнаєтесь більше про removepkg з Розділу 18).

Також ви можете скасувати права на виконання тих файлів які ви не збираєтесь запускати (команду chmod(1) розглянуто у Розділі 9).

# chmod -x /usr/bin/gdm

В кінці кінців, ви можете викоментувати рядки з rc.4 що відносяться до керівника реєстрації, який ви не вживатимете:

 # Try to use GNOME's gdm session manager:
 # if [ -x /usr/bin/gdm ]; then
 #   exec /usr/bin/gdm -nodaemon
 # fi

 # Not there?  OK, try to use KDE's kdm session manager:
 if [ -x /opt/kde/bin/kdm ]; then
   exec /opt/kde/bin/kdm -nodaemon
 fi

 # If all you have is XDM, I guess it will have to do:
 if [ -x /usr/X11R6/bin/xdm ]; then
   exec /usr/X11R6/bin/xdm -nodaemon
 fi 

Всі рядки, що починаються з ґратки (#) вважаються коментарем і не беруться до уваги оболонкою при виконанні скрипта. Таким чином, якщо gdm навіть встановлено і він має виконуючі права, скрипт не шукатиме його.