Глава 29. Драйверы консоли

Глава 29. Драйверы консоли

Русский перевод: Михаил Сгибнев

В версиях NetBSD ниже 1.4 пользователь мог выбрать между различными драйверами для клавиатуры и экрана. Это pccons (для платформ i386) и pcvt. Начиная с NetBSD 1.4 введен новый мультиплатформенный драйвер wscons, в настоящее время из старых поддерживается только pccons, поскольку требует меньше системных ресурсов и обладает скромными размерами. pccons используется в инсталляционных дискетах.

29.1. wscons

Wscons является стандартным драйвером консоли NetBSD. Он поддерживает виртуальные экраны для платформы i386, национальные раскладки, мышь и т.д. Возможности wscons отличаются в зависимости от платформы, больше всего возможностей у реализации для i386.

29.1.1. Виртуальные консоли

Количество предустановленых виртуальных консолей определяется следующей опцией.

options  WSDISPLAY_DEFAULTSCREENS=4

Другие консоли можно добавить, прописывая соответствующие строки в файле /etc/wscons.conf: удалите знак комментария (#) перед строкой, начинающейся с «screen x». В примере ниже мы добавим пятый виртуальный терминал к четырем имеющимся:

# screens to create
#  idx  screen emul
#screen 0  -  vt100
screen 1  -  vt100
screen 2  -  vt100
screen 3  -  vt100
screen 4  -  -
#screen 4  80x25bf vt100
#screen 5  80x50 vt100

Скрипт rc.wscons транслирует каждую незакомментированную строку в команду wsconscfg: столбцы соответствуют параметрам вызова. Столбец idx соответствует опции index, screen - параметру -t type (определяющему число строк/столбцов, цвет и т.д) и emul указывает параметр -e emul, определяющий тип эмулируемого терминала. Для примера:

screen 3  -  vt100

Будет преобразовано в:

wsconscfg -e vt100 3

Пожалуйста, обратите внимание на возможность конфликта между консолями, определенными в ядре и консолями, определяемыми в период начальной загрузки с помощью /etc/wscons.conf. Если во время загрузки возникла попытка определения существующего терминала, то будет отображено следующее сообщение:

wsconscfg: WSDISPLAYIO_ADDSCREEN: Device busy

Для решения этой проблемы просто закомментируйте соответствующую строку в /etc/wscons.conf.

Виртуальные консоли также должны быть указаны как активные в файле /etc/ttys, так как NetBSD использует getty(8) для запроса логина. Для примера:

console "/usr/libexec/getty Pc"   pc3  off secure
ttyE0 "/usr/libexec/getty Pc"   vt220 on secure
ttyE1 "/usr/libexec/getty Pc"   vt220 on secure
ttyE2 "/usr/libexec/getty Pc"   vt220 on secure
ttyE3 "/usr/libexec/getty Pc"   vt220 off secure
...

Когда стартует сервер X, он ищет виртуальный терминал без запущенной getty(8), то есть, необходимо иметь одну консоль, помеченную как "off" в /etc/ttys. Строка

ttyE3 "/usr/libexec/getty Pc"   vt220 off secure

в /etc/ttys используется для старта X в этом примере. Для того, чтобы указать консоль, отличную от 4, необходимо передать серверу X параметр vtn, где n - номер функциональной клавиши, используемой для переключения на терминал с X.

Для примера, определим «screen 7» в файле /etc/wscons.conf и X будем запускать на «vt8». Если Вы используете xdm, то Вы должны отредактировать файл /usr/X11R6/lib/X11/xdm/Xserver. Например:

Когда стартует сервер X, он ищет виртуальный терминал без запущенной getty(8), то есть, необходимо иметь одну консоль, помеченную как "off" в /etc/ttys. Строка

:0 local /usr/X11R6/bin/X +kb dpms -bpp 16 dpms vt8

Для xdm3d путь отличается: /usr/X11R6/share/xdm3d/Xservers.

29.1.2. Режим 50 строк в wscons

Режим 50 строк может использоваться, начиная с версии 1.4.1 NetBSD. Этот режим активируется в /etc/wscons.conf, просто раскомментируйте следующую строку:

font ibm - 8 ibm /usr/share/pcvt/fonts/vt220l.808

Измените и соответствующие строки:

#screen 0  80x50 vt100
screen 1  80x50 vt100
screen 2  80x50 vt100
screen 3  80x50 vt100
screen 4  80x50 vt100
screen 5  80x50 vt100
screen 6  80x50 vt100
screen 7  80x50 vt100

В этой конфигурации определяется восемь экранов, доступ к которым может быть получен с помощью комбинации клавиш Ctrl-Alt-Fn (где n изменяется от 1 до 8), соответствующими устройствами будут ttyE0..ttyE7. Для получения приглашения на вход в систему на этих терминалах необходимо внести изменения в /etc/ttys:

ttyE0 "/usr/libexec/getty Pc"   vt220 on secure
ttyE1 "/usr/libexec/getty Pc"   vt220 on secure
ttyE2 "/usr/libexec/getty Pc"   vt220 on secure
ttyE3 "/usr/libexec/getty Pc"   vt220 on secure
ttyE4 "/usr/libexec/getty Pc"   vt220 on secure
ttyE5 "/usr/libexec/getty Pc"   vt220 on secure
ttyE6 "/usr/libexec/getty Pc"   vt220 on secure
ttyE7 "/usr/libexec/getty Pc"   vt220 on secure

Не представляется возможным изменить режим 80x25 на screen 0, что гарантирует наличие рабочего терминала в случае проблем.

29.1.3. Раскладка клавиатуры

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

# wsconsctl -k -w encoding=it
encoding -> it

Эти установки будут действовать до следующей перезагрузки. Для внесения постоянных изменений добавьте строку «encoding» в /etc/wscons.conf:

# cp /etc/wscons.conf /etc/wscons.conf.orig
# echo encoding it >>/etc/wscons.conf

Обратите внимание на то, что символов «>» именно два. Если Вы укажете один символ «>», то Вы перезапишете файл одной строкой. Не забывайте делать копии системных файлов перед их редактированием!

Полный список доступных раскладок находится в /usr/src/sys/dev/wscons/wsksymdef.h:

  • be - Belgian

  • de - German

  • dk - Danish

  • es - Spanish

  • fr - French

  • hu - Hungarian

  • it - Italian

  • jp - Japanese

  • no - Norwegian

  • pl - Polish

  • pt - Portugese

  • ru - Russian

  • sf - Swiss French

  • sg - Swiss German

  • sv - Swedish

  • ua - Ukrainian

  • uk - UK-English

  • us - US-English

29.1.4. Cut&paste в консоли с помощью wsmoused

В консоли wscons существует возможность выделять(cut) текст курсором мыши при нажатой кнопке и вставлять(paste) его нажатием другой кнопки. Для активации cut&paste в wscons Вам понадобится включить его поддержку в ядре, так как по умолчанию она отключена. Необходимо наличие этой строки:

options WSDISPLAY_CHARFUNCS    # mouse console support

Будьте внимательны, так как эта опция не работает с совместно с VGA_RASTERCONSOLE. Следуйте инструкциям в Глава 28, Компиляция ядра для перекомпиляции ядра.

После установки ядра включим "wsmoused" в /etc/rc.conf и запустим:

# echo wsmoused=yes >>/etc/rc.conf
# sh /etc/rc.d/wsmoused start 

Теперь можно использовать мышь для выделения текста левой кнопкой и вставки его правой. Для более точной настройки читайте wsmoused(8). Также рекомендуем ознакомиться с wsmoused.conf(5), где описывается файл конфигурации. Пример файла можно посмотреть в /usr/share/examples/wsmoused.

29.1.5. Скроллинг в консоли

Вы можете использовать скроллинг в консолях wscons, скомпилировав ядро с опцией WSDISPLAY_SCROLLSUPPORT. Убедитесь, что опция VGA_RASTERCONSOLE не активирована! Следуйте инструкциям в Глава 28, Компиляция ядра для перекомпиляции ядра.

Когда у Вас запущено ядро с опцией WSDISPLAY_SCROLLSUPPORT, Вы можете пролистывать экран с помощью клавиш SHIFT + PAGE UP/DOWN. Обратите внимание, что это не работает на системной консоли (ttyE0)!

29.2. pccons

pccons - это простой эмулятор терминала. Он может быть найден на загрузочной дискете для i386. Единственным его преимуществом является малый размер.

Для его активации внесите в файл конфигурации ядра следующую строку:

pc0 at isa? port 0x60 irq 1 # pccons generic PC console driver 

Также Вы можете определить опции для компиляции с раскладкой клавиатуры, отличающейся от английской:

# Keyboard layout configuration for pccons
#options  FRENCH_KBD
#options  FINNISH_KBD
#options  GERMAN_KBD
#options  NORWEGIAN_KBD

Раскомментируйте соответствующую строку, затем следуйте инструкциям в Глава 28, Компиляция ядра для перекомпиляции ядра.

В общих случаях необходимости в использовании pccons нет, все Ваши потребности должен удовлетворить wscons.

Обновлено: 16.03.2015