Chapter 8. X Window System и виртуальные консоли

Я хочу запустить X, как это сделать?
Почему моя мышь не работает с X?
Меню и диалоговые окна в X Window работают неправильно!
Что такое виртуальные консоли и как изменить их количество?
Как осуществляется доступ к виртуальным консолям из X?
Как запустить XDM во время загрузки?
При запуске xconsole выдаётся сообщение ``Couldn't open console''.
Моя мышь PS/2 в X работает неправильно.
Моя мышь PS/2 от MouseSystems похоже, не работает.
При компиляции приложений для X imake не может найти файл Imake.tmpl. Где он находится?
Как поменять местами кнопки мыши?
Как установить экранную заставку и где такие заставки можно найти?

Q: Я хочу запустить X, как это сделать?

A: Самый простой способ - это указать во время инсталляции, что вы хотите использовать X.

Затем следуйте указаниям в документации по утилите xf86config, которая предназначена для конфигурирования работы XFree86(tm) с вашим графическим адаптером/мышью/итд.

Вы можете также попробовать сервер Xaccel. За подробной информацией обратитесь к разделу, посвящённому продуктам фирм Xi Graphics и Metro Link.

Q: Почему моя мышь не работает с X?

A: Если вы используете syscons (стандартный драйвер консоли), то можете настроить поддержку указателя мыши во всех виртуальных экранах. Во избежание конфликтов с X, драйвер syscons поддерживает виртуальное устройство ``/dev/sysmouse''. Все события, полученные от реальной мыши, пишутся в устройство sysmouse, реализующее протокол MouseSystems. Если вы хотите использовать вашу мышь на одной или нескольких виртуальных консолях, продолжая использовать X, рекомендуется такая конфигурация:

════════/etc/rc.conf:
══════════moused_type=ps/2══════════#═or═whatever═your═actual═type═is
══════════moused_port=/dev/psm0═════#═or═whatever═your═real═port═is
══════════moused_flags=

════════/etc/XF86Config
══════════Section═Pointer
══════════════Protocol═"MouseSystems"
══════════════Device═══"/dev/sysmouse"
══════════════.....
══════

Некоторые предпочитаюют использовать в X устройство ``/dev/mouse''. Чтобы оно работало, файл устройства должен являться ссылкой на /dev/sysmouse:

════════#═cd═/dev
════════#═rm═-f═mouse
════════#═ln═-s═sysmouse═mouse
══════

Q: Меню и диалоговые окна в X Window работают неправильно!

A: Попробуйте выключить Num Lock.

Если клавиша Num Lock во время загрузки по умолчанию включена, добавьте в секцию ``Keyboard'' файла XF86Config следующую строку.

════════#═Let═the═server═do═the═NumLock═processing.══This═should═only═be
════════#═required═when═using═pre-R6═clients
════════════ServerNumLock
══════

Q: Что такое виртуальные консоли и как изменить их количество?

A: Виртуальные консоли, упрощённо говоря, позволяют вам иметь несколько одновременных сеансов работы с той же самой машиной без установки какой бы то ни было сети или запуска X.

При запуске системы после вывода сообщений этапа загрузки на консоль выдаётся приглашение на вход в систему. Вы можете ввести своё имя и пароль и начать работать (или играть!) на первой виртуальной консоли.

В какой-то момент вы можете захотеть запустить ещё одну сеанс, скажем, чтобы заглянуть в документацию по программе, которую вы запустили или для для чтения электронной почты во время ожидания завершения передачи данных по FTP. Просто нажмите Alt-F2 (удерживая клавишу Alt, нажмите F2) и вы обнаружите приглашение, ждущее вас на второй ``виртуальной консоли''! Когда захотите вернуться к первоначальному сеансу, нажмите Alt-F1.

После инсталляции по умолчанию во FreeBSD задействованы три виртуальных консоли (8 начиная с 3.3-RELEASE), а комбинации клавиш Alt-F1, Alt-F2 и Alt-F3 служат для переключения между ними.

Чтобы увеличить количество консолей, отредактируйте файл /etc/ttys, добавив туда записи для терминалов с именами от ``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''.

ВАЖНОЕ ЗАМЕЧАНИЕ если вы хотите запустить X, вы ДОЛЖНЫ оставить для него по крайней мере один неиспользуемый (или выключенный) виртуальный терминал. Таким образов, если вы хотите иметь приглашения login на всех двенадцати функциональнык клавиши, то вам не повезло - вы можете это сделать только для одиннадцати из них, если хотите на этой же машине ещё запустить X-сервер.

Самым простым способом убрать консоль является просто её выключение. Например, если вы запустили на всех 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
════════#═./MAKEDEV═vty12═════════════════#═For═12═devices
══════

Самым простым (и надёжным) способом активировать виртуальные консоли является перезагрузка. Однако если вы вовсе не хотите этого делать, просто остановите X Window System и выполните (как администратор):

════════kill═-HUP═1
══════

При этом требуется, чтобы вы полностью закрыли X Window, если она была запущена, до запуска этой команды. Если вы это не сделаете, ваша система может повиснуть/заблокироваться после выполнения команды kill.

Q: Как осуществляется доступ к виртуальным консолям из X?

A: Если на консоли запущена X Window, вы можете использовать комбинации клавиш, подобные Ctrl-Alt-F1, для переключения в режим работы с виртуальной консолью. Заметьте, однако, что как только вы переключитесь из X Window в виртуальный терминал, вы можете использовать только Alt- клавиши для переключения в другой виртуальный терминал или снова в X Window. Вам не нужно ещё нажимать клавишу Ctrl. Если вы используете клавишу Ctrl при переключении в X, то в старых релизах вы может обнаружить, что ваша текстовая консоль осталась в режиме ``заблокированного control''. Нажмите эту клавишу ещё раз.

Q: Как запустить XDM во время загрузки?

A: Есть две философские школы, проповедующие различные методы запуска xdm. Последователи одного течения запускают xdm из /etc/ttys, используя приводимый пример, тогда как другие вставляют запуск xdm в скрипт rc.local или X.sh, поместив последний в каталог /usr/local/etc/rc.d. Оба метода равноправны, и один из них может работать в ситуациях, с которыми не справляется другой и наоборот. В обоих случая результат один и тот же: X выводит графическое приглашение login:.

Плюсом метода с использованием ttys является документрование того, на каком vty будет запущен X и то, что ответственность за перезапуск X-сервера при завершении сеанса работы лежит на процессе init. Метод с использованием rc.local позволяет просто прекратить работу xdm, если при запуске X возникли какие-нибудь проблемы.

Из rc.local xdm должен быть запущен без аргументов, (то есть как даемон). xdm должен быть запущен ПОСЛЕ запуска getty, иначе они будут конфликтовать, блокируя консоль. Лучше всего выдержать паузу секунд на 10 и потом запустить xdm.

В предыдущей версии FAQ говорилось о необходимости добавления vt который будет использовать X, в файл /usr/X11R6/lib/X11/xdm/Xservers. На самом деле делать это необязательно: X будет использовать первый свободный vt, который сможет найти.

Q: При запуске xconsole выдаётся сообщение ``Couldn't open console''.

A: Если вы запускаете X через скрипт startx, права на устройство /dev/console не изменяются, поэтому такие команды, как xterm -C и xconsole, не будут работать.

Это зависит от прав доступа, установленных для консоли по умолчанию. В многопользовательской системе вовсе не нужно, чтобы любой пользователь мог выводить информацию на системную консоль. Для пользователей, вошедших в систему через VTY, для решения этой проблемы существует файл fbtab.

В общем, раскомментируйте строчку вида

════════/dev/ttyv0═0600═/dev/console
══════

в файле /etc/fbtab, и этого будет достаточно для того, чтобы всякий, кто вошёл в систему с /dev/ttyv0, будет иметь доступ к консоли.

Q: Моя мышь PS/2 в X работает неправильно.

A: Вполне может быть, что ваша мышь и её драйвер рассинхронизировались.

В версиях 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
══════

Q: Моя мышь PS/2 от MouseSystems похоже, не работает.

A: Было несколько сообщений, что некоторые модели мышей PS/2 от MouseSystems работают только в режиме ``высокого разрешения''. В других режимах курсор мыши постоянно прыгает в верхний левый угол экрана.

К сожалению, для версий 2.0.X и 2.1.X решения этой проблемы не существует. Для версий от 2.2 до 2.2.5 приложите следующий патч к файлу /sys/i386/isa/psm.c и перестройте ядро. Если у вас нет опыта перекомпиляции ядра, обратитесь к соответствующему разделу.

diff═-u═psm.c.orig═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
══════

В предыдущем разделе описана возможная причина проблем с мышью.

Q: При компиляции приложений для X imake не может найти файл Imake.tmpl. Где он находится?

A: Файл Imake.tmpl является частью пакета Imake, стандартного инструмента для построения X-приложений. Он, также как ещё несколько заголовочных файлов, требуемых для построения X-приложений, содержится в дистрибутиве программ X. Вы можете их проинсталлировать из sysinstall или взять из дистрибутива X.

Q: Как поменять местами кнопки мыши?

A: Поместите команду xmodmap -e "pointer = 3 2 1" в один из ваших скриптов .xinitrc или .xsession.

Q: Как установить экранную заставку и где такие заставки можно найти?

A: Перед самым выпуском релиза FreeBSD 3.1 в систему была добавлена возможность вывода "заставки" во время загрузки. На данный момент экраны заставок должны быть 256-цветными файлами формата BMP *.BMP или ZSoft PCX (*.PCX). Кроме того, они должны иметь разрешение 320x200 или меньше для работы со стандартными адаптерами VGA. Если вы включили поддержку VESA при компиляции ядра, то вы можете использовать экраны размером до 1024x768. Заметьте, что поддержка VESA требует указание опции VM86 при компиляции ядра. Реальная поддержка VESA может быть вкомпилирована в ядро при указании опции VESA либо загружена в виде kld-модуля ядра во время начальной загрузки.

Чтобы использовать заставку, вам нужно изменить файлы, управляющие процессом загрузки FreeBSD. Формат этих файлов был изменён перед выпуском релиза FreeBSD 3.2, так что есть два способа загрузки экранных заставок:

  • FreeBSD 3.1

    Первым делом нужно найти экранную заставку в формате BMP. Релиз 3.1 поддерживает заставки только в формате Windows. После того, как вы нашли понравившуюся вам заставку, скопируйте её в файл /boot/splash.bmp. Затем вам нужно поместить в файл /boot/loader.rc следующие строки:

    ════load═kernel
    ════load═-t═splash_image_data═/boot/splash.bmp
    ════load═splash_bmp
    ════autoboot
    ══

  • FreeBSD 3.2+

    Кроме поддержки заставок в формате PCX, FreeBSD 3.2 включает более гибкую систему конфигурации процесса загрузки. Если вы хотите, вы можете использовать метод, указанный выше для FreeBSD 3.1. Если же вы хотите использовать формат PCX, замените splash_bmp на splash_pcx. С другой стороны, если вы хотите использовать новую систему конфигурации процесса загрузки, вам нужно создать файл /boot/loader.rc, содержащий следующие строки:

    ════include═/boot/loader.4th
    ════start
    ══

    и файл /boot/loader.conf со строками:

    ════splash_bmp_load="YES"
    ════bitmap_load="YES"
    ══

    Здесь предполагается, что в качестве заставки вы используете файл /boot/splash.bmp. Если вы используете PCX-файл, скопируйте его под именем /boot/splash.pcx, создайте файл /boot/loader.rc, как указано выше, и создайте файл /boot/loader.conf, который содержит следующее:

    ════splash_pcx_load="YES"
    ════bitmap_load="YES"
    ════bitmap_name="/boot/splash.pcx"
    ══

Теперь всё, что вам нужно - это сама заставка. Поищите заставки в галерее по адресу http://www.cslab.vt.edu/~jobaldwi/splash/.



Banner.Novgorod.Ru