Next Previous Contents

15. X-сервер

Неплохая подборка статей лежит здесь. Не все актуально, но дает базовые понятия и представление намного лучше, чем может дать любое faq.

Вот это FAQ по видеокартам от NVidia и статьи по настройке видеокарт ATI под Linux возможно сэкономят вам не один час времени.

15.1 Х-сервер не находит шрифты, указанные в FontPath раздела Files (xorg.conf или XF86Config). Ничего не менял. Вылетает с ошибкой "Could not init font path element "unix/:7100". Что делать?

Началось это потому, что в /tmp лежит lock-файл сервера шрифтов. Решение: почистить /tmp и перезапустить фонтсервер (например, service xfs restart).

Если вы не планируете раздавать шрифты по сети на бездисковые рабочие станции, то сервер шрифтов вам скорее всего не нужен.

Поэтому уберем его. Для этого берем и в вашем конфигурационном файле X-сервера (/etc/X11/xorg.conf или /etc/X11/XF86Config, /usr/X11R6/lib/X11/XF86Config-4) прописываем в разделе "Files" путь для каждой папки со шрифтами (FontPath).

При этом пути с русскими шрифтам помещаем выше, чем с другими.

Упоминание unix/:7100 убираем.

Далее ищем, где у нас запускается сервер шрифтов (xfs). Для RedHat'топодобных дистрибутивов запуск производится демоном xfs.

Делаете так: от рута root@localhost# service xfs stop Затем заходим в /etc/rc.d/rc.x, где x - номер инита, и удаляем все упоминания вида S??xfs (или переименовываем в K??xfs). Чтобы так не напрягаться, в redhat существует команда chkconfig. root@localhost# chkconfig --del xfs

15.2 X-сервер падает на старте с ошибкой Fatal server error: could not open default font 'fixed. Что делать?

http://www.linuxcenter.ru/lib/articles/soft/x_fixed_err.phtml

15.3 X-сервер падает на старте с ошибкой Xlib: extension "SHAPE" missing on display ":0.0". Что делать?

Проверьте у себя в файле конфигурации x-сервера (/etc/XF86Config или /etc/Xorg) наличие следующих строчек в Section "Module":

Load "extmod" SubSection "extmod" Option "omit xfree86-dga" EndSubSection

Если их нет, вставьте и попробуйте запустить еще раз. Все должно работать.

15.4 Как настроить переключение раскладок в X-сервере (XFree86,xorg)?

В современных дистрибутивах обычно более-менее правильные настройки доступны из коробки. В файле настроек (для xorg - /etc/X11/xorg.conf, для XFree86 - /etc/X11/XF86Config или /usr/X11R6/lib/X11/XF86Config-4) нужно указать настройки своей клавиатуры. В секции настроек клавиатуры есть отличия. Настройки XFree86 версий ниже 4.3 отличаются от XFree версий 4.3 и 4.4 и xorg. Версию XFree86 можно узнать, выполнив XFree86 -version.

Для примера возьмем переключение по Ctrl+Shift двух языков (en, rus) с включением scroll lock на русской раскладке:

XF86Config: Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbRules" "xfree86" Option "XkbModel" "pc104" Option "XkbLayout" "ru(winkeys)" Option "Autorepeat" "250 30" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" EndSection

Для XFree86 версий 4.3.0 и выше секция параметров клавиатуры выглядит так:

XF86Config: Section "InputDevice" Identifier "Keyboard0" Driver "keyboard" Option "XkbRules" "xfree86" Option "XkbModel" "pc104" Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" EndSection

Т.е. изменился формат параметра "XkbLayout". Теперь через запятую можно перечислять сколько угодно раскладок. Если вместо .ru написать winkeys - получим раскладку a-la MS Windows.

Для xorg секция параметров клавиатуры выглядит так:

Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru(winkeys)" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" EndSection

Т.е. изменилось название драйвера клавиатуры.

Теперь непосредственно рассмотрим переключатель. Во всех примерах по умолчанию стоит английский. Переключатель описывается в последней строке.

Для того, чтобы переключаться по ctrl+shift указывается параметр ctrl_shift_toggle, по alt+shift - параметр alt_shift_toggle.

Значение grp_led:scroll говорит о том, что после переключения будет загораться индикатор scroll lock.

Чтобы переключаться через Menu-key (такая клавиша на многих "Windows98" клавиатурах, слева от правого Ctrl), напишите:

Option "XkbOptions" "grp:menu_toggle,grp_led:caps"

Еще пара интересных примеров.

Для X 4.2.х настройки раскладки выглядят так:

XF86Config: Section "InputDevice" Option "XkbRules" "xfree86" Option "XkbModel" "microsoft" Option "XkbLayout" "ru" Option "XkbVariant" "winkeys" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" EndSection

Аналогичные для XFree 4.3 будут выглядеть так:

XF86Config: Section "InputDevice" Option "XkbRules" "xfree86" Option "XkbModel" "microsoft" Option "XkbLayout" "us,ru" Option "XkbVariant" ",winkeys" Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" EndSection

В этом примере обратите внимание на запятую перед winkeys, это важно. Многие забывают ее поставить и как следствие, X-сервер функционирует неверно.

Пример с переключением трех языков (взято с http://lafox.net/docs/MDKman2/MDKman.html/ch02s02.html):

XF86Config: Section "InputDevice" Identifier "Keyboard1" Driver "Keyboard" Option "XkbModel" "pc105" #тут оставить свое Option "XkbLayout" "us,ru(winkeys),ua(winkeys)" #для 3-х языков (eng,rus,ukr) #Option "XkbLayout" "us,ru(winkeys)" #для 2-х языков (eng,rus) Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" #индикатор ScrollLock EndSection

Аналогично настройки прописываются для xorg, меняется лишь название драйвера клавиатуры (см. выше). Для XFree86 версий 4.2.х и ниже для переключения на три и более языков требуется установить и настроить xxkb (см. ниже).

После внесения изменений X-сервер нужно перезапустить.

Общее замечание. Для того, чтобы все это работало должна быть верно настроена локаль.

Замечание пользователям KDE. В Центре управления KDE имеется секция управления раскладками клавиатуры - Центр Управления -> Периферия -> Региональные стандарты -> Раскладки клавиатуры (Control Center -> Regional & Accessibility -> Keyboard Layout). Для использования настроек X-сервера галочку "Включить раскладки клавиатуры" (Enable keyboard layouts) следует выключить. Или использовать возможности KDE и убрать поддержку нескольких языков в настройках X-сервера.

Для более гибкой настройки можно использовать xxkb ( http://netadmin1.ic.tsu.ru/other/xxkb/, http://www.sourceforge.net/projects/xxkb, http://gnome.org.ru/xxkb.shtml). xxkb имеет достаточно богатые настройки по управлению раскладками и, в частности, настройки совместимости со средой - он может "висеть" на каждом (поддерживаются исключения) окне или только на активном в виде переключателя в указанном месте, может находится в трее KDE и Gnome (для этого нужно наложить патч - http://gnome.org.ru/xxkb.shtml), а может быть и dock-app'ом для WMaker'а.

Кстати, последние версии xxkb поддерживают трей и без патча, правда иконка в трее появляется из главного окна, которая слишком большая. Вместо файлов en48.xpm и ru.48.xpm нужно записать файлы с иконками поменьше, в качестве временной меры можно заменить их на en15.xpm и ru15.xpm.

В среде Gnome ниже версии 2.6 вместо xxkb можно использовать ( GSwitchIt), он несколько богаче функциональностью. Начиная с версии 2.6 gswitchit включен в состав Gnome!

В среде KDE вместо xxkb лучше использовать kkbswitch, если нужен лишь индикатор и возможность каждому окну сохранять свою раскладку.

Благодарим ответы saper, svu и неизвестного anonimous'а.

15.5 Как сделать переключение в XFree/xorg по Right Ctrl+Right Shift и т.д.?

Штатными средствами X-сервера этого сделать нельзя. Придется ставить xxkb:

Далее по его руководству настраиваете себе переключатель как хотите.

15.6 Как сделать переключение раскладки по клавише windows?

Приходится выносить этот вопрос отдельно. Внимательно прочитайте предыдущий вопрос и поменяйте одну строчку: Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll" на Option "XkbOptions" "grp:menu_toggle,grp_led:scroll"

15.7 Как настроить нормальную частоту и разрешение в X-сервере? Как рассчитать modline?

Нужно прописать в конфигурационном файле X-сервера нечто такое:

/etc/X11/XF86Config (/etc/X11/xorg.conf): Section "Monitor" Identifier "My Monitor" HorizSync 31.5 - 79.0 VertRefresh 50-90 EndSection

HorizSync и VertRefresh нужно взять из книжки к монитору.

Если это способ по каким-либо причинам не устраивает, можно вычислить нужную modeline и прописать ее.

Узнать нужную modeline можно с помошью стандартной утилиты gtf, KDE'шной kvideogen, videogen ( http://www.dynaweb.hu/opensource/videogen), и прочих. Или on-line калькулятора - http://koala.ilog.fr/cgi-bin/nph-colas-modelines

Например:

user@linux# gtf 1024 768 85

выдаст

# 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync

Полученную строчку нужно прописать в XF86Config (xorg.conf) в раздел Monitor, чтобы получилось примерно так:

Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "CTX5378" DisplaySize 330 250 HorizSync 30.0 - 72.0 VertRefresh 50.0 - 130.0 ModeLine "1152x864" 108.0 1152 1200 1328 1528 864 865 868 904 +hsync +vsync ModeLine "1024x768" 94.5 1024 1076 1172 1372 768 769 772 812 +hsync +vsync ModeLine "800x600" 56.3 800 832 896 1032 600 601 604 619 +hsync +vsync ModeLine "640x480" 36.0 640 712 768 808 480 485 488 525 -hsync -vsync ModeLine "400x300" 28.1 400 412 444 508 300 304 306 327 +hsync +vsync doublescan ModeLine "320x200" 15.8 320 360 392 396 200 204 206 222 -hsync +vsync doublescan Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync Option "dpms" EndSection

После перезапуска X-сервера можно провести тонкую настройку (чтобы края не вылезали и т.п.) программой xvidtune - заходим в консоль, делаем xvidtune, когда нам все понравится, делаем apply и получаем в консоли исправленную строчку для modline. Ее записываем вместо первоначальной.

Если есть особое желание разбираться откуда что берется, читайте XFree86 Video Timings HOWTO

15.8 Что делать, если частоты в модлайнах прописал, а частота обновления экрана по прежнему 60Гц?

Сервер рестартовали? Тогда читаем вот этот вопрос, точнее его конец об именовании модлайнов.

15.9 Почему не выставляется 32-битная палитра?

Потому что нет параметра 32 бита. Есть 24 и считается, что выдается то же самое количество цветов. 32 битная адресация, если не ошибаюсь (jackill), включается на уровне драйверов автоматически.

15.10 Где взять драйвер под монитор?

Нигде. Если вы не в курсе, в "драйверах для монитора" MS Windows обычно пишутся его рабочие частоты (которые современные мониторы и так отдают операционной системе) иногда рабочую температуру цвета, цветовые профили.

Кстати, если вы думаете, что у вас нельзя поставить 100Гц вместо 85Гц из-за того, что у вас отсутствуют данные драйверы, то вы ошибаетесь. Виноват драйвер видеокарты (например, такое наблюдается на картах S3).

15.11 Как правильно настроить шрифты?

Для начала определимся. Есть старая схема работы со шрифтами и новая. Основные графические тулкиты, такие как QT версий 3.0.x и выше, а также GTK2 работают по новой схеме. Тем не менее еще полно приложений, основанных на gtk1, motif и т.п., работающие по старой.

Итак, мы хотим красивые ttf-шрифты. Отлично. Скачаем отсюда или отсюда шрифты Microsoft. Ставим их. Пользователи Suse могут сделать это через YAST. Лучше брать со второй ссылки. Тогда не придется их распаковывать и формировать в каталоге файлы fonts.dir и fonts.scale (на всякий случай, команда ttmkfdir -o fonts.dir, а fonts.scale - это копия fonts.dir).

Далее открываем файл конфигурации X-сервера (/etc/X11/xorg.conf или /etc/X11/XF86Config) и прописываем каталог с нашими шрифтами. Потом прописываем со шрифтами Type1, которые содержат русские глифы. В моем случае весь раздел выглядит так:

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

Далее, если у нас xorg, а не XFree86, отменяем загрузку модуля type1, потому что его функции теперь выполняет модуль freetype: # Load "type1" и сохранив наш файл переходим к настройке xft2, известного больше как fontconfig.

Смотрим, что у нас лежит в папке /etc/fonts. По идее там должно быть три файла: fonts.conf, fonts.dtd и local.conf.

Заходим в наш local.conf и прописываем наши добавленные папки со шрифтами. Весь файл будет выглядеть для моего случая так:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!-- /etc/fonts/local.conf file for local customizations --> <fontconfig> <!-- Enable sub-pixel rendering <match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"><const>rgb</const></edit> </match> --> <dir>/usr/share/fonts/default/TTF></dir> <dir>/usr/java/j2re1.4.0_01/lib/fonts</dir> </fontconfig>

Отлично. Теперь выполняем две команды: root@localhost# fc-cache root@localhost# fc-list

После второй команды у вас на экране должен появиться список шрифтов со всеми возможными кодировками.

Все у вас будет работать и будет работать верно, если... если вы не используете xft - сервер для раздачи шрифтов по сети. Вам он не нужен, если вы не раздаете шрифты по сети. Т.е. на домашней машине его лучше всего отключить (или же вообще удалить - для xorg пакет называется xorg-x11-xft).

Если вы настаиваете на его работе, то принцип указания шрифтов и папок в нем тот же - русские наверх, остальные - вниз. Открываем файл конфигурации (/etc/X11/fs/config) и пишем примерно так:

catalogue = /usr/share/fonts/KOI8-R/misc:unscaled, /usr/share/fonts/KOI8-R/100dpi:unscaled, /usr/share/fonts/KOI8-R/misc, /usr/share/fonts/KOI8-R/100dpi, /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/misc, /usr/X11R6/lib/X11/fonts/Speedo, /usr/X11R6/lib/X11/fonts/Type1, /usr/X11R6/lib/X11/fonts/cyrillic, /usr/X11R6/lib/X11/fonts/75dpi, /usr/X11R6/lib/X11/fonts/100dpi /usr/X11R6/lib/X11/fonts/cyrillic, /usr/share/fonts/default/TTF, , /usr/X11R6/lib/X11/fonts/misc:unscaled, /usr/X11R6/lib/X11/fonts/75dpi:unscaled, /usr/X11R6/lib/X11/fonts/100dpi:unscaled, /usr/X11R6/lib/X11/fonts/Type1

X-сервер мы настроили. Шрифт в программах QT настраивается через qtconfig (находится в папке QT), а программы KDE заберут настройки из самого KDE, которые указываются в Центре Управления (Control Center).

После настройки X-сервера может потребоваться настройка шрифтов для тулкитов gtk1 и gtk2 и тем к ним.

15.12 Переключаюсь в консоль и вижу буквы, похожие на китайские иероглифы, что делать? При выключении машины сообщения от сервисов идут кракозябрами, потом включается английский, что делать?

Происходит такой глюк при переключении из X-сервера в консоль на машинах с картами NVidia и некоторыми Trident, где версия X-сервера Xfree86 до версии 4.4 включительно и xorg до версии 6.7.0 включительно.

Если у вас стоит console-tools, то setfont меняем на consolechars -f.

Для Redhat-based дистрибутивов лечится командой root@linux# /sbin/setsysfont cyr-sun16 или root@linux# /sbin/setsysfont данной от рута.

Для Debian при установленном пакете console-cyrillic команда cyr.

Шрифт восстанавливается. Но если вы снова перейдете в графический режим (например, просто по ctrl+F7), он пропадет и при заходе в консоль понадобится опять выполнить данную команду.

Соответственно, если есть большое желание видеть русский в процессе перезагрузки при выводе сообщений от сервисов, придется вставить эту команду отдельным сервисом.

И есть еще один способ - обновить свой X-сервер до xorg версии >=6.8.0

За расширенный ответ благодарим AEP.

15.13 Все русские шрифты установлены, система их видит, но в некоторых программах/интерфейсе по прежнему нет русского языка. Что делать?

Самый простой вариант - папки со шрифтами прописаны не в том порядке. Читайте об этом здесь

Вариант сложнее - шрифты для тулкита gtk настроены неверно. Читайте об этом здесь.

И последний вариант - вы используете WM (О разнице между WM и DE читайте здесь). Во многих WM шрифты прописываются прямо в файле настроек темы и влияют на шрифты интерфейса. Обратитесь к соответствующей документации своего WM.

15.14 Как покинуть/перезапустить/перезагрузить X-сервер (XFree86/xorg) или как сделать, чтобы первоначально "иксы" не грузились?

Выгрузить X-сервер (xorg/XFree86) можно, нажав [ctrl+alt+backspace], если вы грузили их с помощью startx (т.е. система грузилась по сценарию загрузки 3, известному под названиями init 3 или runlevel 3).

Если вы грузили систему по сценарию загрузки 5 (т.е. имели графическое приглашение к работе) и вам нужно выгрузить графическую среду, например, для установки драйверов (этого требуют драйверы nvidia), тогда откройте свой терминал (aterm, xterm, Eterm, konsole), станьте рутом (команда su -) и наберите в терминале /sbin/telinit 3. После чего, проделав необходимые действия, можете вернуться в графический режим, набрав из-под рута /sbin/telinit 5. При этом сценарий загрузки у вас не поменяется!

Чтобы при загрузке система не загружалась в графический режим, нужно в /etc/inittab выбрать другой сценарий загрузки (runlevel). Графический режим - это 5 runlevel (в Slackware - 4), а текстовый - 3 (в Debian - 2).

Для этого находим строчку

/etc/inittab: id:N:initdefault:

где N - номер режима загрузки и меняем на '3' или '2' (текстовый).

Не забудьте, что после этого будут грузиться сервисы, указанные в /etc/rc3.d, а не /etc/rc5.d (это для RedHat).

Если вам нужно выгрузить X-сервер только для того, чтобы переставить драйверы для своей видеокарты (например, для карт nvidia), откройте программу терминала, станьте рутом, и наберите telinit 3. После чего проделав необходимые действия можете вернуться в графический режим, набрав из-под рута telinit 5. Сценарий загрузки при этом у вас не меняется!.

Для mandrake linux существует еще один способ выгрузки X-сервера:

root@localhost# service dm stop

15.15 Как предотвратить отключение монитора?

см. /etc/X11/XF86Config на предмет опции dpms в секции Monitor

15.16 Как запустить второй X-сервер?

Командой startx -- :N, где N - номер сервера. Нумерация начинается с нуля и если один сервер уже запущен, то он, скорее всего, имеет нулевой номер.

15.17 Как запустить X-вую программу с другого компьютера по сети?

Как вариант, поставить какой-нибудь vnc.

Или запускать по telnet или ssh. Сначала рассмотрим простой вариант - обе машины работают под управлением linux.

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

На сервере должен работать telnet или ssh (лучше второе).

Тогда вы в терминале своей рабочей станции пишете

user@localhost$ xhost +server

и логинитесь на сервер по протоколу telnet или ssh:

user@localhost$ telnet server

user@localhost$ ssh server -l user

Затем после логина пишете в терминале (для ssh можно не писать, переменная выставляется автоматом):

user@localhost$ export DISPLAY=workstation:0.0

или

user@localhost$ env DISPLAY=workstation:0.0

После можете запускать программы с сервера - все должно работать.

Теперь рассмотрим вариант сложнее: linux - сервер, MS Windows - клиент. Дополнение от eRazor.

Это сделать очень легко. Ставим Cygwin, в них поднимаем X-сервер (это делается выбором софта во время установки). К X-серверу дополнительно ставится пакет OpenSSH. Далее на машине с linux запускается демон ssh.

Далее в запущенном в Cygwin X-сервере, в консоли набираем: ssh -Y -l username remote_hostname_or_ip_address логинимся на машину с linux и все работает.

Очевидно, в старых версиях Cygwin надо было предварительно устанавливать переменную DISPLAY для утилиты ssh:

$ DISPLAY=localhost:0.0 $ export DISPLAY $ ssh -Y remotehost

сейчас этого делать не надо, это уже устанавлено по-умолчаною для OpenSSH цигвиновского.

Можно из под MS Windows использовать putty совместно с cygwin. Зачем это надо не знаю :-), но что бы из putty запускать иксовые приложения, необходимо сделать следущее: указываем в hostname IP адрес linux-машины и в Connection-->SSH->Tunnels отмечаем чекбокс Enable X11 forwarding. Коннектимся и просто запускаем X приложения. Всё.

Из cygwin можно не только SSH использовать, для запуска X приложений, а ещё и обыкновенный телнет. Единственное, надо пользоваться телнетом из цигвина из пакета inetutils, а не майкрософтовским, т.к. последний падает при запуске из X-сервера.

Последовательность действий:

  1. В запущенном X-сервере в терминале делаем /usr/X11R6/bin/xhost remote_hostname_or_ip_address
  2. В терминале /usr/bin/telnet remote_hostname_or_ip_address. Путь к телнету указывать обязательно, см. выше.
  3. Логинимся к linux-машине
  4. В телнетовской сессии набираем DISPLAY=windows_hostname_or_ip_address:0.0
  5. Далее: export DISPLAY
  6. Запускаем иксовые приложения.

Ну и дорогой вариант - citrix metaframe.

15.18 Как запустить X-сервер с другой машины по сети?

Для этого на машине, с которой вы собираетесь запускать X-сервер, должен работать xdm (или его ориентированные под kde или gnome аналоги - kdm или gdm).

Вам придется или запустить его вручную или сервер (машина с которой мы будем запускать X-сервер) должна изначально грузиться в графический режим (тогда xdm стартует автоматически).

На рабочей станции X-сервер должен быть правильно настроен.

Теперь на сервере надо привести в соответствие следующие файлы:

/etc/xdm/Xaccess здесь мы ничего не меняем * CHOOSER BROADCAST #any indirect host can get a chooser /etc/xdm/Xservers здесь мы ничего не меняем :0 local /usr/X11R6/bin/X /etc/xdm/xdm-config меняем одну строчку (ставим перед ней !) ! DisplayManager.requestPort: 0 /etc/xmd/kdmrc меняем один параметр (ставим true) # Whether KDM should listen to XDMCP requests. Default is true. Enable=true

X-сервер на клиенте запускается командой

user@localhost$ X --query server_with_xdm

Вот хорошая статья на эту тему http://linuxportal.ru/entry.php/P1318_0_3_0/

15.19 Можно ли запустить внутри иксов еще одни иксы?

Можно - воспользуйтесь xnest и переопределите для новых иксов переменную DISPLAY=":1"

Для чего это нужно? Например, для запуска игр, не работающих в оконном режиме.

15.20 Как сделать управление интерфейсом пользователя по типу radmin?

Смотрите вопрос Есть под linux какой-нибудь аналог radmin?

15.21 Как подключить к компьютеру несколько терминалов - комплектов клавиатура+мышь+монитор (multihead, многологовый)?

Хотите дать нескольким людям доступ к одной машине? Не проблема. Оригинал статьи автор (Вадим Лихота - vadim-lvv_собака_yandex.ru) обещал положить сюда - www.klv.lg.ua/~vadim/. Ну а пока оригинала нет, выкладываю сокращенную мною (jackill) версию.

Общий принцип работы

При включении компьютера для каждого рабочего места автоматически загружается отдельная копия Х-сервера. В настройках каждого Х-сервера указано, с какой клавиатурой и мышкой он работает и посредством какой видеокарты выводится изображение. Все остальные аппаратные части компьютера находятся в общем использовании. За распределением ресурсов между пользователями следит ядро системы.

Аппаратная часть

Современные наиболее распространенные видеокарточки использовать невозможно, так как на материнских платах нет второго AGP-разъема. Приходится использовать PCI видеокарты. Опыт показывает, что наиболее оптимальны из них S3 Virge и ATI Rage, так как не создают трудностей при использовании и являются наиболее доступными. Некоторые PCI видеокарты отказываются работать в качестве ведомой с какой-либо еще. Проблем не встретилось практически ни с одной видеокарточкой от S3, кроме S3TrioV+ и более старых.

Из современных клавиатур можно использовать PS/2 и USB-клавиатуры. Количество USB-клавиатур ограничивается только числом разъемов USB. Количество PS/2 клавиатур ограничивается числом разъемов PS/2 (клавиатура, вставленная в разъем мыши PS/2 будет опознана корректно).

Мыши можно подключать в разъем PS/2, USB (подозреваю, что и в COM-порт, если найдете такую - прим. jackill).

Программная часть

Настройка старых систем (на ядре 2.4 + Xfree86 и более старых) описана по следующему адресу - http://cambuca.ldhc.cetuc.puc-rio.br/multiuser/.

Далее приводится информация для свежих дистрибутивов на примере Fedora Core 3 и ASP Linux 10.

Расмотрим настройки для двух PS/2-клавиатур и двух USB-мышей (с двумя USB-клавиатурами бывают глюки).

Поскольку для Fedora Core и ASP Linux десктопной средой по умолчанию является Gnome, настройки для менеджера входа будут выложены для gdm.

В файле /etc/X11/gdm/gdm.conf меняем: [server] 0=Standart [server-Standart] name=Standart server command=/usr/X11R6/bin/X -audit 0 flexible=true

на

[server] 0=Standart0 1=Standart1 [server-Standart0] name=Standart server command=/usr/X11R6/bin/X -audit 0 vt7 -layout Layout0 -nopciaccessdisable flexible=true [server-Standart1] name=Standart server command=/usr/X11R6/bin/X -audit 0 vt7 -layout Layout1 -nopciaccessdisable -novtswitches flexible=true

После этого настраиваются клавиатуры и мыши. При загрузке Linux'а со всеми устройствами ввода в каталоге /dev/input сопоставляются файлы event0, event1 и т. д. В дополнение к этому для мышей mouse0, mouse1, а всем мышам одновременно - mice, но при каждой загрузке это сопоставление происходит заново без оглядки на прошлую нумерацию, и чтобы это упорядочить, надо каждому конкретному устройству назначить постоянную символическую ссылку.

Посмотреть подключенные устройства ввода можно в файле /proc/bus/input/devices. Для PS/2 устройств (в нашем случае 2 клавиатуры) надо в файл /etc/udev/rules.d/10-input.rules добавить (если файла нет, то создать его): #PS/2 keyboard SYSFS{dev}="13:64", KERNEL="event*", SYMLINK="keyboard_one" SYSFS{dev}="13:65", KERNEL="event*", SYMLINK="keyboard_two" USB-устройства лучше всего различать по кодам Bus, Vendor (например у меня 046d - Logitech), Product и другим из файла /proc/bus/input/devices (если устройства одинаковые, то можно воспользоваться командой udevinfo -q path -n /dev/device & и полученный путь передать в команду udevinfo -a -p your_path; подробнее - http://www.linuxforum.ru/index.php?showtopic=9712&hl=udev): #USB mouse BUS="usb", KERNEL="mouse*", SYSFS{idVendor}="046d", SYSFS{idProduct}="c50b", SYNLINK="mouse_one" BUS="usb", KERNEL="mouse*", SYSFS{idVendor}="046d", SYSFS{idProduct}="025c", SYNLINK="mouse_two"

Перезапускаем udev: user@localhost~$ killall udevd & /sbin/start_udev Теперь нужно указать X серверу, что со всем этим делать в файле /etc/X11/xorg.conf. В нем прописана конфигурация для текущего состояния: Section "ServerLayout" Identifier "Xfree86 Configurited" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection И создать такую же секцию со "Screen1", "Mouse1" и "Keyboard1" для "Layout1".

В этом же файле ниже следует найти секцию "InputDevice" с Identifier "Keyboard0", заменить в ней протокол "Standart" на "usbev" (чтобы работа с клавиатурой шла не напрямую, а через заданные нами файлы), добавить строки, с указанием какой файл использовать и как обходится с переключениями: Option "Device" "/dev/input/keyboard_one" Option "XkbRules" "xorg" и создать такую же секцию с Identifier "Keyboard1" и "/dev/input/keyboard_two". Подобным же образом отредактировать секцию "Mouse0": Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse_one" Option "ZaxisMapping" "4 5" EndSection и создать аналогичный для "Mouse1" "/dev/input/mouse_two". В секции для "Screen0" заменить "Monitor" на "Monitor0" и сделать его копию с параметрами "Screen1", "Monitor1" и в Device заменить на "videocard1". Если второй монитор отличается, то текущие разрешения заменить на требуемые.

В секции "Monitor" заменить значение Identifier "Monitor" на "Monitor0", создать его копию с Identifier "Monitor1". Вот пример для монитора 17'' LCD с разрешением 1280х1024 и частотой 60 - 75 Гц: Section "Monitor" Identifier "Monitor0" VendorName "SAM" ModelName "Samsung SyncMaster" HorizSync 61.5-81.0 VertRefresh 59.0-76.0 EndSection и 17'' ЭЛТ монитора: Section "Monitor" Identifier "Monitor1" VendorName "SAM" ModelName "Samsung SyncMaster" HorizSync 30.0-96.0 VertRefresh 50.0-160.0 EndSection

В секции для видеокарты обязательно нужно правильно указать номер устройства на PCI шине и драйвер.

Теперь после внесения всех изменений нужно проверить работоспособность. Для этого в консоли следует ввести: user@localhost ~$ X -layout Layout0 Экран переключится в графический режим с курсором в виде X на экране. Для возвращения назад следует нажать Ctrl+Alt+Backspace. То же проделать для Layout1. Если все вышеописанное заработало, можно перегружать компьютер - и на обоих экранах после загрузки появятся приглашения для ввода имени/пароля.

15.22 Как запустить X-вую программу по графику?

Указать в команде DISPLAY=:0, например, для at:

~/dozvon: #!/bin/sh wvdial & DISPLAY=:0 nt

и запуск:

user@linux$ at -f ~/dozvon 0220

Означает исполнить в 02-20 wvdial и запустить на первом X-сервере nt.

В рабочей среде KDE существует графическая программа для запуска программ по времени - kalarm. Находится в Accessories->More Accessories.

15.23 Где хранятся настройки стандартных X-вых программ?

В /etc/X11/app-defaults.

Для того, чтобы настроить их под конкретного пользователя нужно в файле ~/.Xdefaults или ~/.Xresources прописать свои параметры, например для rxvt:

~/.Xdefaults: # Запускать как логин-шелл, а не суб-шелл текущего Rxvt*loginShell: true # Шрифт Rxvt*font: -monotype-courier new-medium-r-normal-*-*-180-*-*-m-*-koi8-r # Цвет фона Rxvt*background: black # Цвет шрифта Rxvt*foreground: gray # Писать о логинах в системный лог, а не файл utmp.log Rxvt*utmpInhibit: false # Rxvt*scrollBar_floating: true # Rxvt*iconName: rxvt # Тип терминала Rxvt*termName: xterm-color # Сколько строк запоминать в буфер Rxvt*saveLines: 1000 # Rxvt*colorBD: red # Rxvt*colorUL: green # Скролл справа Rxvt*scrollBar_right: True # #Rxvt*backspacekey: Backspace # Rxvt*modifier: alt

Или еще пример:

user@linux# echo '*xmessage*Background: cornsilk2' >> ~/.Xdefaults user@linux# xrdb -load ~/.Xdefaults

15.24 Alt в xterm не работает. Как исправить?

~/.Xresources: XTerm*eightBitInput: false XTerm*metaSendsEscape: true

15.25 Как сделать прокрутку колесиком мыши в Adobe Acrobat Reader?

В ~/.Xdefaults пишем такие строчки:

AcroRead*XmScrollBar.baseTranslations: #augment \ <Btn4Down>: IncrementUpOrLeft(0)IncrementUpOrLeft(0)IncrementUpOrLeft(0) \n \ <Btn5Down>: IncrementDownOrRight(0)IncrementDownOrRight(0)IncrementDownOrRight(0) \n

Неудобство будет одно - прокрутка идет только когда указатель мыши находится над полосой прокрутки. (Проблема в motif, который не работает с колесиком мыши).

15.26 У меня тормозят "иксы" (X-сервер, XFree86, xorg), что делать?

Сам по себе сервер тормозить не может, если, конечно, у вас не ламповый компьютер.

Если тормозит видеовывод - фильмы, игры, OpenGL только программный, значит у вас стоят стандартные драйвера под вашу видеокарту. Скачайте драйвера от производителя и установите их.

Для карт с чипом nvidia: TNT, TNT2, Geforce - http://www.nvidia.com/object/linux.html

Для карт с чипом ati: radeon - http://www.ati.com/support/driver.html, mach64 вроде ati 3d rage pro смотрите здесь, для radeon mobility M9 (radeon 9000) смотрите здесь. Для не слишком новых карт (например, radeon 9200) есть открытые драйверы, которые работают не хуже, а подчас и лучше фирменных (пропиетарных). Они входят в состав X-серверов.

Чтобы проверить, программный или аппаратный у вас OpenGL, выполните glxinfo. Если у Вас direct rendering: Yes, то OpenGL аппаратный. если direct rendering: No, то нет :) Также если glxgears выдает не менее 300 fps, то это также говорит об аппаратном ускорении (на GF2 MX400 1100-1300 fps)

Если тормозит сам оконный менеджер или оконная среда, например, KDE, - поменяйте ее или попробуйте убрать все ненужные рюшечки и (для rpm-based дистрибутивов) пересобрать под свой процессор ядро, X-сервер, оконную среду и, возможно, программы, с которыми вы чаще всего работаете.

Как вариант, может тормозить не X-сервер, а вся система. Происходит это из-за того, что отключена поддержка DMA (т.е. нет поддержки чипсета матери).

15.27 У меня под root'ом 3D-ускорение работает, а под пользователем - нет.

Нужно добавить в XF86Config такие строчки:

XF86Config: Section "DRI" Mode 0666 EndSection

или

Section "DRI" Group 0 Mode 0666 EndSection

15.28 Как настроить двухколесную мышь?

http://linuxportal.ru/entry.php/P12_0_3_0

15.29 Как настроить многокнопочную мышь?

Этот документ должен помочь - http://forall.ru-board.com/Demetrio/lor/imwheel.txt

Спасибо Demetrio

15.30 На ядре 2.6 не работает тачпад. На 2.4 работает. Куда копать?

В параметрах ядра поставьте psmouse.proto=imps

15.31 Как настроить работу двойного клика на тачпаде?

Section "InputDevice" Identifier "Mouse1" Driver "synaptics" Option "Protocol" "auto-dev" Option "Device" "/dev/psaux" Option "MaxSpeed" "0.18" Option "MinSpeed" "0.02" Option "BottomEdge" "4000" Option "SHMConfig" "on" # Option "Repeater" "/dev/ps2mouse" Option "LeftEdge" "1900" Option "FingerLow" "25" Option "MaxTapTime" "180" Option "MaxTapMove" "220" Option "FingerHigh" "30" Option "VertScrollDelta" "100" Option "TopEdge" "1900" Option "RightEdge" "5400" Option "AccelFactor" "0.0010" EndSection

15.32 Как регулировать скорость мыши в X-сервере (без KDE/GNOME/XFCE)?

xset m Х

где Х - желаемая скорость (обычно 4-6)

Можно задать скорость сразу в конфигурационном файле в разделе Section "Pointer": Resolution число

Разрешение задается в точках на дюйм - чем меньше число, тем медленнее будет перемещаться указатель мыши.

15.33 Какие трудности меня ждут при переходе с XFree86 на xorg? Будут ли работать пропиетарные драйверы для nvidia/ATI?

Трудностей особо никаких, если у вас не пропиетарные драйверы ATI. Вы ставите свой xorg, затем заходите в /etc/X11 и переименовываете XF86Config в xorg.conf (или же делаете соответствующий симлинк).

Далее открываете этот файл на редактирование и в разделе описания клавиатуры меняете значение параметра Driver на kbd.

Если вы переходите на xorg версии 6.8.0 и выше, то можете закоментировать загрузку модуля Type1. Его функции взял на себя FreeType, а разработка и поддержка Type1 прекращена (пока что он оставлен для совместимости).

Драйверы NVIDIA работают как работают - с любыми версиями xorg.

На момент очередной редакции FAQ (09.12.2004) пропиетарных драйверов под ATI, поддерживающих xorg версий 6.8.0 и выше, не существует!

15.34 Как включить аппаратную прозрачность в xorg-6.8.0 и выше?

Открываем /etc/X11/xorg.conf и добавляем такой кусок:

Section "Extensions" Option "Composite" EndSection

Если карта nvidia или radeon 7x00,8x00,9100 с драйверами dri, то чтобы X-сервер не тормозил в раздел "Device" добавляем строчку

Option "RenderAccel" "true"

Перезапускаем X-сервер.

Далее скачиваем из CVS две утититы - xcompmgr и transset - согласно данному руководству: cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps login [Пароль не нужен, просто нажмите Enter] cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps co transset cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xapps co xcompmgr

Собираем их, Кстати, для alt linux есть соответствующие пакеты.

После этого запускаем xcompmgr -c и transset .5

Запуск xcompmgr обязателен. -с включает тени.

transset .5 - прозрачность. Небольшим курсором нужно отметить окно, которое вы хотите сделать прозрачным.

15.35 Как установить драйвер Nvidia? Где скачать драйвер nvidia?

  1. Скачиваем драйвер с сайта Nvidia (удивлены? :)
  2. Проверяем, установлены ли у нас исходники ядра (пользователи mdk версии выше 9.1 - скачайте kernel-???.src.rpm с одного из сайтов Mandrake, потому как в 9.2 исходников на дисках просто нет, а в версии 10 они на четвертом диске). Исходники должны лежать в районе /usr/src (у меня, например, /usr/src/linux-2.4.22) и в там же было бы неплохо сделать на них ссылку вида /usr/src/linux и /usr/src/linux-2.4
  3. Выходим из графического режима (из X-сервера). Комментарий для новичков: если вы грузитесь в Linux и у вас графическое приглашение к работе, то скорее всего у вас идет загрузка по пятому init-level. Если черный экран в текстовой консоли - то третий. Для третьего init-level - просто покидаем наш менеджер окон. Для пятого - исполняем с рутовыми правами команду root@linux# /sbin/telinit 3
  4. Оказавшись в консоли, получаем права рута (команда su -, если кто не знает).
  5. Если драйверы ставятся в первый раз, то избавляемся от framebuffer'а.
  6. Если у нас уже был ранее драйвер Nvidia, на всякий случай выгружаем старый модуль командой rmmod nvidia.
  7. Исполняем инсталлятор, для чего либо сделаем файл исполняемым, либо наберем sh название_файла.
  8. Мы согласимся с условиями лицензионного соглашения, но откажемся от поиска драйвера в интернете. Дальше будет построен и загружен ядерный модуль, а драйверы скопированы.
  9. Ищем файл /etc/X11/xorg.conf, или /etc/X11/XF86Config, или /usr/X11R6/lib/X11/XF86Config-4 (смотрите сами, какой у вас используется). Исправляем в названии драйвера nv на nvidia (Driver "nvidia"), а из грузящихся модулей убираем GLcore и dri и добавляем glx. После данный действий у меня раздел Moduleвыглядит так: Section "Module" Load "extmod" Load "glx" #Load "dri" #Load "dbe" #Load "GLcore" Load "record" Load "xtrap" Load "v4l" #Load "speedo" Load "type1" Load "freetype" SubSection "extmod" Option "omit xfree86-dga" EndSubSection EndSection
  10. Делаем пробный запуск X-сервера: user@linux# X Если вы загрузились в графический режим (черный или серый экран с указателем мыши в виде креста), значит все в порядке. Выходим из него, нажав ctrl+alt+backspace. Далее в случае третьего init-level как обычно запускаете startx. В случае третьего - выполняете команду: user@linux# telinit 5 Появится графическое приглашение к работе. Дальше - все как обычно.
  11. Если не все в порядке, внимательно смотрим лог /var/log/XFree86.0.log - тут уже все от вас зависит, но скорее всего ошибки связаны с несовпадающими в разных разделах идентификаторами.

Киноманы также могут посмотреть вопрос Как на NVidia настроить TV-Out так, чтобы фильм из mplayer выводился на TV, а монитор оставался свободным?

Для Suse все устанавливается через YAST.

15.36 Как разогнать видеокарту Nvidia? Есть ли утилита для разгона видеокарт NVidia?

Есть утилита. Взять ее можно отсюда:

http://www.linuxhardware.org/nvclock/

15.37 Как собрать ядерный модуль драйверов Nvidia версий 1.6106 и 1.6111 к ядру 2.6.9 и старше?

Вообще-то для каждого дистрибутива этот вопрос решается по-своему. Где-то накладывают патчи на ядро, где-то на исходники nvidia.

Второй способ работает и для Fedora Core и для Gentoo:

15.38 Установил linux. Карта GeForce, монитор LCD с DVI - иксы не грузятся, что делать?

Смените драйвер nv на vesa. Потому что nv не поддерживает DVI.

15.39 Как установить драйвера ATI? Как настроить TV-OUT на видеокартах ATI?

В прошлый раз никто не видел ссылки на ресурс, где все это описано по-русски. Попробуем еще раз. Все, что вам нужно, это зайти на сайт Ati in Linux.

Но если у вас карта на старом чипсете mach64, то вам сюда.

15.40 Как получить openGL на ati mobility M9 (radeon 9000) с xorg 6.8.1?

http://www.opennet.ru/base/X/dri.txt.html

За ответ, возню и статью спасибо n1tro.

15.41 У меня старая карта ATI 3D Rage Pro. Хочу смотреть фильмы в MPlayer, но xv (да и OpenGL) не работает. Где взять драйвера?

Если нам нужно только xv и стабильность, идем на http://gatos.sourceforge.net и забираем драйвер ati.2 (чип нашей карты именуется Mach64). Можем забрать модуль и скопировать его файлы в папку X-сервера или собрать его сами.

СМОТРИТЕ ПОД КАКУЮ ВЕРСИЮ X-сервера ВЫ КАЧАЕТЕ МОДУЛЬ!!!

Но OpenGL у нас на этих драйверах не будет.

Чтобы получить еще и OpenGL, мы отправимся на http://www.retinalburn.net/linux и скачаем либо готовый драйвер.

Для ядер 2.4.х и XFree86-4.2-4.3 подойдет вот этот http://www.retinalburn.net/linux/dri-xv/mach64-dri-xv-20030413.i386.tar.bz2

Там же можно взять патч под Х-сервер, если вы испытываете особое желание собирать все самостоятельно. Однако в этом случае X-сервер придется выкачивать из CVS (есть там две ветки под mach64) и накладывать патч на них.

Драйвер имеет свойство сбоить и машина может зависнуть ЦЕЛИКОМ!

Для ядер 2.4-2.6 и xorg нужно скачать два файла: common-20041025-linux.i386.tar.bz2 и mach64-20041025-linux.i386.tar.bz2 и распаковать их в той же последовательности

После этого имеем: dri, OpenGL и xv (TV-out только в консоли: mplayer -vo vesa)

Можно туда ( http://www.freedesktop.org/~dri/snapshots/) периодически заглядывать, работа ведется и обновления выходят.

Способ для Gentoo Linux

VIDEO_CARDS="mach64" emerge x11-dri

Имеем: dri, OpenGL и xv (TV-out пока не проверялся)

ToDo: прикрутить TV-out патч к x11-drm.

Везде используется драйвер ati

Желательно до запуска иксов грузить agpgart agp_модуль чипсета и, собственно mach64.

За часть ответа об xorg благодарим kilolife.

15.42 Есть ноутбук. Видеокарта ATI. Яркость и контрастность монитора управляется программно. Как можно регулировать эти параметры из Linux'а?

Эти параметры можно регулировать с помощью ATI Control Center. Скачивается вместе с драйвером с www.ati.com.

15.43 Покажите мне конфиги обычных настроек TV-OUT на Nvidia/Ati!

Ну если они отсюда еще не пропали, то вот - ftp://ftp.kraft-s.ru/pub/linux/XFree86/TV-Out/

Спасибо AS.


Next Previous Contents