| Главная > Операционные системы > Unix/QNX > |
| FAQ по FreeBSD 2.X, 3.X и 4.X. X Window System и виртуальные консоли |
Chapter 9. X Window System и виртуальные консоли
Самый простой способ - это указать во время инсталляции, что вы хотите использовать X. Затем следуйте указаниям в документации по утилите xf86config, которая предназначена для конфигурирования работы XFree86(tm) с вашим графическим адаптером/мышью/итд. Вы можете также попробовать сервер Xaccel. За подробной информацией обратитесь к разделу, посвящённому продуктам фирм Xi Graphics и Metro Link. 9.2. Я попытался запустить X, но получил сообщение ``KDENABIO failed (Operation not permitted)'' после ввода команды startx. Что мне теперь делать? В вашей системе установлен повышенный уровень безопасности, не так ли? На самом деле, при повышенном уровне защиты X запустить невозможно. Чтобы выяснить, почему это так, обратитесь к страницам справки по init(8). Так что вопрос сводится к тому, как вам это обойти, и у вас здесь есть в основном два варианта: понизить ваш уровень защиты обратно к нулю (обычно это делается в /etc/rc.conf) или во время загрузки запускать xdm(1) (до того, как повышается уровень защиты). Обратитесь к Q: 9.8. для получения более полной информации о запуске xdm(1) во время загрузки. Если вы используете syscons (стандартный драйвер консоли), то можете настроить поддержку указателя мыши во всех виртуальных экранах. Во избежание конфликтов с X, драйвер syscons поддерживает виртуальное устройство /dev/sysmouse. Все события, получаемые от реальной мыши, пишутся в устройство sysmouse через moused. Если вы хотите использовать вашу мышь на одной или нескольких виртуальных консолях, продолжая использовать X, посмотрите Q: 3.13. и настройте moused. Затем отредактируйте /etc/XF86Config так, чтобы в нём были следующие строки. Section Pointer Protocol "SysMouse" Device "/dev/sysmouse" ..... Пример выше предназначен для XFree86 3.3.2 и выше. Для более ранних версий параметр Protocol должен быть MouseSystems. Некоторые предпочитают использовать в X устройство /dev/mouse. Чтобы оно работало, файл устройства /dev/mouse должен являться ссылкой на /dev/sysmouse (посмотрите справку по sysmouse(4)): # cd /dev # rm -f mouse # ln -s sysmouse mouse Да. Но вам нужно будет настроить программы-клиенты для X. Посмотрите страничку Коласа Наабу (Colas Nahaboo) (http://www.inria.fr/koala/colas/mouse-wheel-scroll/). Если вы собираетесь использовать программу imwheel, следуйте этим простым указаниям:
Попробуйте выключить Num Lock. Если клавиша Num Lock во время загрузки по умолчанию включена, добавьте в секцию Keyboard файла XF86Config следующую строку. # Let the server do the NumLock processing. This should only be # required when using pre-R6 clients ServerNumLock Виртуальные консоли, упрощённо говоря, позволяют вам иметь несколько одновременных сеансов работы с той же самой машиной без установки какой бы то ни было сети или запуска X. При запуске системы после вывода сообщений этапа загрузки на консоль выдаётся приглашение на вход в систему. Вы можете ввести своё имя и пароль и начать работать (или играть!) на первой виртуальной консоли. В какой-то момент вы можете захотеть запустить ещё одну сеанс, скажем, чтобы заглянуть в документацию по программе, которую вы запустили или для для чтения электронной почты во время ожидания завершения передачи данных по FTP. Просто нажмите Alt-F2 (удерживая клавишу Alt, нажмите F2) и вы обнаружите приглашение, ждущее вас на второй "виртуальной консоли"! Когда захотите вернуться к первоначальному сеансу, нажмите Alt-F1. После инсталляции по умолчанию во FreeBSD задействованы три виртуальных консоли (8 начиная с 3.3-RELEASE), а комбинации клавиш Alt-F1, Alt-F2 и Alt-F3 служат для переключения между ними. Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys (посмотрите справку по ttys(5)), добавив туда записи для терминалов с именами от ttyv4 до ttyvc после слов "Virtual terminals": # Edit the existing entry for ttyv3 in /etc/ttys and change # "off" to "on". ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/libexec/getty Pc" cons25 on secure ttyv9 "/usr/libexec/getty Pc" cons25 on secure ttyva "/usr/libexec/getty Pc" cons25 on secure ttyvb "/usr/libexec/getty Pc" cons25 on secure Используйте из них столько, сколько посчитаете нужным. Чем больше виртуальных терминалов у вас имеется, тем больше ресурсов они используют; это может иметь значение, если у вас меньше чем 8МБ ОЗУ. Вы можете сменить статус консолей с secure на insecure.
Самым простым способом убрать консоль является просто её выключение. Например, если вы запустили на всех 12 консолях виртуальные терминалы, как указано выше, и ещё хотите запустить X, то должны будете изменить параметры двенадцатого виртуального терминала с: ttyvb "/usr/libexec/getty Pc" cons25 on secure на: ttyvb "/usr/libexec/getty Pc" cons25 off secure Если на вашей клавиатуре только десять функциональных клавиш, то последние строки будут выглядеть так: ttyv9 "/usr/libexec/getty Pc" cons25 off secure ttyva "/usr/libexec/getty Pc" cons25 off secure ttyvb "/usr/libexec/getty Pc" cons25 off secure (Вы также можете просто их удалить.) После того, как вы отредактировали файл /etc/ttys, проверьте, что у вас имеется достаточное количество устройств для виртуальных терминалов. Самый простой способ сделать это: # cd /dev # sh MAKEDEV vty12 Самым простым (и надёжным) способом активировать виртуальные консоли является перезагрузка. Однако если вы вовсе не хотите этого делать, просто остановите X Window System и выполните (как пользователь root): # kill -HUP 1 При этом требуется, чтобы вы полностью закрыли X Window, если она была запущена, до запуска этой команды. Если вы это не сделаете, ваша система может повиснуть/заблокироваться после выполнения команды kill. Используйте комбинацию клавиш Ctrl+Alt+Fn для переключения обратно в виртуальную консоль. Нажатие Ctrl+Alt+F1 вернёт вас на первую виртуальную консоль. После того, как вы оказались в текстовой консоли, можете использовать, как обычно, комбинации Alt+Fn для переключения между ними. Чтобы вернуться в сеанс работы X, вы должны переключиться в виртуальную консоль, на которой запущена X Window. Если вы запустили X из командной строки (например, при помощи команды startx), то сеанс работы X будет привязан к следующей неиспользуемой виртуальной консоли, а не к той текстовой консоли, с которой он был запущен. Если у вас имеется восемь активных виртуальных терминалов, то X будет работать на девятом, и вам нужно будет воспользоваться комбинацией Alt+F9 для возврата в X. Есть две философские школы, проповедующие различные методы запуска xdm. Последователи одного течения запускают xdm из /etc/ttys (посмотрите ttys(5)), используя приводимый пример, тогда как другие вставляют запуск xdm в скрипт rc.local (посмотрите справку по rc(8)) или X.sh, помещая последний в каталог /usr/local/etc/rc.d. Оба метода равноправны, и один из них может работать в ситуациях, с которыми не справляется другой и наоборот. В обоих случая результат один и тот же: X выводит графическое приглашение login:. Плюсом метода с использованием ttys является документирование того, на каком vty будет запущен X и то, что ответственность за перезапуск X-сервера при завершении сеанса работы лежит на процессе init. Метод с использованием rc.local позволяет просто прекратить работу xdm, если при запуске X возникли какие-нибудь проблемы. Из rc.local xdm должен быть запущен без аргументов, (то есть как даемон). xdm должен быть запущен ПОСЛЕ запуска getty(8), иначе они будут конфликтовать, блокируя консоль. Лучше всего выдержать паузу секунд на 10 и потом запустить xdm. Если xdm запускается из /etc/ttys, то есть вероятность конфликта между xdm и getty(8). Одним из способов избежать этого является добавление номера vt в файл /usr/X11R6/lib/X11/xdm/Xservers. :0 local /usr/X11R6/bin/X vt4 В вышеприведённом случае X-серверу указывается работать на /dev/ttyv3. Заметьте, что номера отличаются на единицу. Дело в том, что X-сервер считает vty от единицы, когда как отсчёт vty в ядре FreeBSD ведётся с нуля. Если вы запускаете X с использованием сценария startx права на устройство /dev/console не изменяются, поэтому такие программы, как xterm -C и xconsole, не будут работать. Это зависит от прав доступа, установленных для консоли по умолчанию. В многопользовательской системе вовсе не нужно, чтобы любой пользователь мог выводить информацию на системную консоль. Для пользователей, вошедших в систему через VTY, для решения этой проблемы существует файл fbtab(5). В общем, раскомментируйте строчку вида /dev/ttyv0 0600 /dev/console в файле /etc/fbtab (посмотрите справку по fbtab(5)), и этого будет достаточно для того, чтобы всякий, кто вошёл в систему с терминала /dev/ttyv0, имел доступ к консоли. 9.10. Раньше я запускал XFree86, работая как обычный пользователь, а теперь при запуске выдается сообщение о том, что я должен быть пользователем root! Все X-серверы должны запускаться пользователем root, чтобы иметь прямой доступ к вашему видеооборудованию. Более старые версии XFree86 (<= 3.3.6) устанавливали все поставляемые серверы так, что они автоматически запускались пользователем root (с установленным битом смены владельца запускаемого процесса). Несомненно, это рискованно, потому что X-серверы являются большими, сложными программами. Более новые версии XFree86 не устанавливают на серверах бит смены владельца на пользователя root именно по этой причине. Очевидно, что запускать X-сервер, работая как пользователь root, неправильно и небезопасно. Есть два способа использовать X, работая как обычный пользователь. Первый способ заключается в использовании xdm или другого менеджера дисплеев (к примеру, kdm); второй способ - в использовании программы Xwrapper. xdm представляет собой даемона, который обрабатывает входы в систему в графическом режиме. Обычно он запускается во время загрузки и отвечает за аутентификацию пользователей и запуск их сеансов; практически это графический аналог программ getty(8) и login(1). Более подробная информация о xdm находится в документации по XFree86 и в соответствующем разделе FAQ. Xwrapper является оболочкой для X-сервера; это маленькая утилита. позволяющая кому-либо запускать X-сервер и достаточно безопасная в использовании. Она выполняет некоторую проверку передаваемых ей в командной строке аргументов, и если все в порядке, запускает соответствующий X-сервер. Если по каким-либо причинам вы не хотите запускать менеджер дисплеев, то эта утилита вам подойдет. Если у вас установлена полная коллекция портов, вы можете найти этот порт в каталоге /usr/ports/x11/wrapper. Вполне может быть, что ваша мышь и её драйвер рассинхронизировались. В версиях 2.2.5 и более ранних это может произойти при переключении из X в виртуальный терминал и последующем возвращении в X. Если эта проблема возникает достаточно часто, попробуйте добавить следующую строку в файл конфигурации ядра и перекомпилировать его. options PSM_CHECKSYNC Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу. С этой опцией проблем с синхронизацией мыши и её драйвера должно быть меньше. Если, однако, эта проблема всё же осталась, щёлкните любой кнопкой мыши, не двигая ей, что заставит мышь и драйвер сделать попытку синхронизироваться. Заметьте, что в некоторых системах эта опция может не работать и приводить к отключению функции "tap" устройства ALPS GlidePoint, подключенного к порту мыши PS/2. В версиях 2.2.6 и выше, проверка синхронизации сделана гораздо лучше и включена в стандартный драйвер мыши PS/2. Она должна работать даже с GlidePort. (Так как код проверки стал стандартной функцией, опция PSM_CHECKSYNC в этих версиях недоступна.) Однако в редких случаях драйвер может ошибочно обнаруживать проблемы с синхронизацией, и вы будете видеть такие сообщения ядра: psmintr: out of sync (xxxx != yyyy) а также обнаружите, что мышь теперь работает неправильно. Если это случится, отмените проверку согласования, установив значение флага для драйвера мыши PS/2 в 0x100. Войдите в конфигуратор UserConfig, задав опцию -c в приглашении загрузчика: boot: -c Затем в командной строке UserConfig наберите: UserConfig> flags psm0 0x100 UserConfig> quit Было несколько сообщений, что некоторые модели мышей PS/2 от MouseSystems работают только в режиме "высокого разрешения". В других режимах курсор мыши постоянно прыгает в верхний левый угол экрана. К сожалению, для версий 2.0.X и 2.1.X решения этой проблемы не существует. Для версий от 2.2 до 2.2.5 приложите следующий патч к файлу /sys/i386/isa/psm.c и перестройте ядро. Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу. @@ -766,6 +766,8 @@ if (verbose >= 2) log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n", unit, i); + set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH); + #if 0 set_mouse_scaling(sc->kbdc); /* 1:1 scaling */ set_mouse_mode(sc->kbdc); /* stream mode */ Для версий 2.2.6 и выше укажите флаг 0x04 драйверу мыши PS/2 для перевода её в режим высокого разрешения. Войдите в UserConfig, задав опцию -c в приглашении загрузчика: boot: -c Затем в командной строке UserConfig наберите: UserConfig> flags psm0 0x04 UserConfig> quit В предыдущем разделе описана возможная причина проблем с мышью. 9.13. При компиляции приложений для X программа imake не может найти файл Imake.tmpl. Где он находится? Файл Imake.tmpl является частью пакета Imake, стандартного инструмента для построения X-приложений. Он, также как ещё несколько заголовочных файлов, требуемых для построения X-приложений, содержится в дистрибутиве программ X. Вы можете их проинсталлировать из sysinstall(8) или взять из дистрибутива X. Поместите команду xmodmap -e "pointer = 3 2 1" в один из ваших скриптов .xinitrc или .xsession. Перед самым выпуском релиза FreeBSD 3.1 в систему была добавлена возможность вывода "заставки" во время загрузки. На данный момент экраны заставок должны быть 256-цветными файлами формата BMP *.BMP или ZSoft PCX (*.PCX). Кроме того, они должны иметь разрешение 320x200 или меньше для работы со стандартными адаптерами VGA. Если вы включили поддержку VESA при компиляции ядра, то вы можете использовать экраны размером до 1024x768. Заметьте, что поддержка VESA требует указание опции VM86 при компиляции ядра. Реальная поддержка VESA может быть вкомпилирована в ядро при указании опции VESA либо загружена в виде kld-модуля ядра во время начальной загрузки. Чтобы использовать заставку, вам нужно изменить файлы, управляющие процессом загрузки FreeBSD. Формат этих файлов был изменён перед выпуском релиза FreeBSD 3.2, так что есть два способа загрузки экранных заставок:
Теперь всё, что вам нужно - это сама заставка. Поищите заставки в галерее по адресу http://www.baldwin.cx/splash/. Да. Всё, что вам нужно сделать, это с помощью xmodmap(1) задать функции, которые вы хотите к этим клавишам привязать. Положим, что все клавиатуры "Windows(tm)" стандартны и 3 клавиши имеют следующие клавиатурные коды
Чтобы заставить левую клавишу Windows(tm) набирать запятую, попробуйте выполнить такую команду: # xmodmap -e "keycode 115 = comma" Чтобы увидеть результат, вам нужно будет перезапустить ваш оконный менеджер. Для того, чтобы переопределения клавиш Windows(tm) выполнялось автоматически каждый раз при запуске X, можно поместить вызов команд xmodmap в ваш ~/.xinitrc либо, что предпочтительней, создать файл ~/.xmodmaprc и включить в него параметры для xmodmap, по одному на строку, и добавить строку xmodmap $HOME/.xmodmaprc в ваш ~/.xinitrc. Например, вы можете переопределить эти 3 клавиши так, чтобы они выполняли функции F13, F14 и F15 соответственно. Это позволит легко привязать их к полезным функциям в приложениях или вашем менеджере окон, как будет показано далее. Чтобы сделать это, поместите в файл ~/.xmodmaprc вот такие строки: keycode 115 = F13 keycode 116 = F14 keycode 117 = F15 Если, к примеру, вы используете fvwm2, то можете переопределить клавиши таким образом, что F13 сворачивает в иконку (или восстанавливает предыдущие размеры) окна, на которое указывает курсор, F14 перемещает окно с курсором на передний план или, если оно уже впереди, возвращает обратно, а F15 вызывает главное меню Рабочего места (Workplace) (приложение), даже если курсор находится не на рабочем столе, что бывает полезно, если нет ни одного видимого кусочка рабочего стола (к тому же логотип на клавише соответствует этой функции). Вот строки из ~/.fvwmrc, с помощью которых достигаются описанные выше функции: Key F13 FTIWS A Iconify Key F14 FTIWS A RaiseLower Key F15 A A Menu Workplace Nop Наличие 3D-ускорения зависит от версии используемого вами XFree86 и типа графического адаптера. Если у вас адаптер NVIDIA, то обратите внимание на страницу FreeBSD NVIDIA Driver Initiative , на которой обсуждается 3D-ускорение для наборов микросхем NVIDIA при использовании XFree86-4. Относительно использования аппаратного ускорения в XFree86-4 с другими адаптерами, включая Matrox G200/G400, ATI Rage 128/Radeon, а также 3dfx Voodoo 3, 4, 5 и Banshee, дополнительную информацию можно почерпнуть на страничке XFree86-4 Direct Rendering on FreeBSD. Пользователи XFree86 версии 3.3 могут воспользоваться портом Utah-GLX, находящимся в graphics/utah-glx, для получения частичного ускорения OpenGL для наборов микросхем Matrox Gx00, ATI Rage Pro, SiS 6326, i810, Savage и старых адаптеров NVIDIA. |
Главная Алфавитный индекс Справка Добавить FAQ E-mail |
Новости Поиск по сайту |
© УкрFAQ 2002 |