Неплохая подборка статей лежит здесь. Не все актуально, но дает базовые понятия и представление намного лучше, чем может дать любое faq.
Вот это FAQ по видеокартам от NVidia и статьи по настройке видеокарт ATI под Linux возможно сэкономят вам не один час времени.
Началось это потому, что в /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
http://www.linuxcenter.ru/lib/articles/soft/x_fixed_err.phtml
Проверьте у себя в файле конфигурации x-сервера (/etc/XF86Config
или /etc/Xorg
) наличие следующих строчек в Section "Module":
Load "extmod"
SubSection "extmod"
Option "omit xfree86-dga"
EndSubSection
Если их нет, вставьте и попробуйте запустить еще раз. Все должно работать.
В современных дистрибутивах обычно более-менее правильные настройки доступны из коробки. В файле настроек (для 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'а.
Штатными средствами X-сервера этого сделать нельзя. Придется ставить xxkb:
Далее по его руководству настраиваете себе переключатель как хотите.
Приходится выносить этот вопрос отдельно. Внимательно прочитайте
предыдущий вопрос и поменяйте одну строчку:
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
на
Option "XkbOptions" "grp:menu_toggle,grp_led:scroll"
Нужно прописать в конфигурационном файле 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
Сервер рестартовали? Тогда читаем вот этот вопрос, точнее его конец об именовании модлайнов.
Потому что нет параметра 32 бита. Есть 24 и считается, что выдается то же самое количество цветов. 32 битная адресация, если не ошибаюсь (jackill), включается на уровне драйверов автоматически.
Нигде. Если вы не в курсе, в "драйверах для монитора" MS Windows обычно пишутся его рабочие частоты (которые современные мониторы и так отдают операционной системе) иногда рабочую температуру цвета, цветовые профили.
Кстати, если вы думаете, что у вас нельзя поставить 100Гц вместо 85Гц из-за того, что у вас отсутствуют данные драйверы, то вы ошибаетесь. Виноват драйвер видеокарты (например, такое наблюдается на картах S3).
Для начала определимся. Есть старая схема работы со шрифтами и новая. Основные графические тулкиты, такие как 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 и тем к ним.
Происходит такой глюк при переключении из X-сервера в консоль на машинах с картами NVidia и некоторыми Trident, где версия X-сервера Xfree86 до версии 4.4 включительно и xorg до версии 6.7.0 включительно.
setfont cyr-sun16 -m koi8-r
(работает и для UTF-8, но убивает латинские буквы с акцентами)setfont LatArCyrHeb-16
Если у вас стоит 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.
Самый простой вариант - папки со шрифтами прописаны не в том порядке. Читайте об этом здесь
Вариант сложнее - шрифты для тулкита gtk настроены неверно. Читайте об этом здесь.
И последний вариант - вы используете WM (О разнице между WM и DE читайте здесь). Во многих WM шрифты прописываются прямо в файле настроек темы и влияют на шрифты интерфейса. Обратитесь к соответствующей документации своего WM.
Выгрузить 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
см. /etc/X11/XF86Config на предмет опции dpms в секции Monitor
Командой startx -- :N
, где N - номер сервера. Нумерация начинается с нуля и если один сервер уже запущен, то он, скорее всего, имеет нулевой номер.
Как вариант, поставить какой-нибудь 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-сервера.
Последовательность действий:
Ну и дорогой вариант - citrix metaframe.
Для этого на машине, с которой вы собираетесь запускать 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/
Можно - воспользуйтесь xnest и переопределите для новых иксов переменную DISPLAY=":1"
Для чего это нужно? Например, для запуска игр, не работающих в оконном режиме.
Смотрите вопрос Есть под linux какой-нибудь аналог radmin?
Хотите дать нескольким людям доступ к одной машине? Не проблема. Оригинал статьи автор (Вадим Лихота - 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. Если все вышеописанное заработало, можно перегружать компьютер - и на обоих экранах после загрузки появятся приглашения для ввода имени/пароля.
Указать в команде 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.
В /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
~/.Xresources:
XTerm*eightBitInput: false
XTerm*metaSendsEscape: true
В ~/.Xdefaults пишем такие строчки:
AcroRead*XmScrollBar.baseTranslations: #augment \
<Btn4Down>: IncrementUpOrLeft(0)IncrementUpOrLeft(0)IncrementUpOrLeft(0) \n \
<Btn5Down>: IncrementDownOrRight(0)IncrementDownOrRight(0)IncrementDownOrRight(0) \n
Неудобство будет одно - прокрутка идет только когда указатель мыши находится над полосой прокрутки. (Проблема в motif, который не работает с колесиком мыши).
Сам по себе сервер тормозить не может, если, конечно, у вас не ламповый компьютер.
Если тормозит видеовывод - фильмы, игры, 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 (т.е. нет поддержки чипсета матери).
Нужно добавить в XF86Config такие строчки:
XF86Config:
Section "DRI"
Mode 0666
EndSection
или
Section "DRI"
Group 0
Mode 0666
EndSection
http://linuxportal.ru/entry.php/P12_0_3_0
Этот документ должен помочь - http://forall.ru-board.com/Demetrio/lor/imwheel.txt
Спасибо Demetrio
В параметрах ядра поставьте psmouse.proto=imps
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
xset m Х
где Х - желаемая скорость (обычно 4-6)
Можно задать скорость сразу в конфигурационном файле в разделе Section "Pointer"
:
Resolution число
Разрешение задается в точках на дюйм - чем меньше число, тем медленнее будет перемещаться указатель мыши.
Трудностей особо никаких, если у вас не пропиетарные драйверы 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 и выше, не существует!
Открываем /etc/X11/xorg.conf и добавляем такой кусок:
Section "Extensions"
Option "Composite"
EndSection
Если карта nvidia или radeon 7x00,8x00,9100 с драйверами dri, то чтобы X-сервер не тормозил в раздел "Device" добавляем строчку
Option "RenderAccel" "true"
Далее скачиваем из 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 - прозрачность. Небольшим курсором нужно отметить окно, которое вы хотите сделать прозрачным.
root@linux# /sbin/telinit 3
su -
, если кто не знает).
rmmod nvidia
.
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
user@linux# X
Если вы загрузились в графический режим (черный или серый экран с указателем мыши в виде креста), значит все в порядке. Выходим из него, нажав ctrl+alt+backspace.
Далее в случае третьего init-level как обычно запускаете startx. В случае третьего - выполняете команду:
user@linux# telinit 5
Появится графическое приглашение к работе. Дальше - все как обычно.
Киноманы также могут посмотреть вопрос Как на NVidia настроить TV-Out так, чтобы фильм из mplayer выводился на TV, а монитор оставался свободным?
Для Suse все устанавливается через YAST.
Есть утилита. Взять ее можно отсюда:
http://www.linuxhardware.org/nvclock/
Вообще-то для каждого дистрибутива этот вопрос решается по-своему. Где-то накладывают патчи на ядро, где-то на исходники nvidia.
Второй способ работает и для Fedora Core и для Gentoo:
sh NVIDIA-Linux-x86-1.0-6111-pkg1.run --extract-only
--- NVIDIA-Linux-x86-1.0-6111-pkg1/usr/src/nv/nv.c 2004-08-31 22:52:17.000000000 +0100
+++ NVIDIA-Linux-x86-1.0-6111-pkg1-new/usr/src/nv/nv.c 2004-09-20 02:49:42.399538232 +0100
@@ -19,6 +19,10 @@
MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER);
#endif
+#ifndef __VMALLOC_RESERVE
+unsigned int __VMALLOC_RESERVE;
+#endif
+
/*
* our global state; one per device
*/
в папку с исходниками.patch -p1 < patch-nvidia.patch
Смените драйвер nv на vesa. Потому что nv не поддерживает DVI.
В прошлый раз никто не видел ссылки на ресурс, где все это описано по-русски. Попробуем еще раз. Все, что вам нужно, это зайти на сайт Ati in Linux.
Но если у вас карта на старом чипсете mach64, то вам сюда.
http://www.opennet.ru/base/X/dri.txt.html
За ответ, возню и статью спасибо n1tro.
Если нам нужно только 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.
Эти параметры можно регулировать с помощью ATI Control Center. Скачивается вместе с драйвером с www.ati.com.
Ну если они отсюда еще не пропали, то вот - ftp://ftp.kraft-s.ru/pub/linux/XFree86/TV-Out/
Спасибо AS.