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

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

Содержание

29.1. wscons
29.1.1. Виртуальные консоли
29.1.2. Режим 50 строк в wscons
29.1.3. Раскладка клавиатуры
29.1.4. Cut&paste в консоли с помощью wsmoused
29.1.5. Скроллинг в консоли
29.2. pccons

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

Не представляется возможным изменить режим 80×25 на 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.