Начиная с OpenBSD 2.9, драйвер консоли pcvt(4) был удалён из системы,
в пользу нового драйвера wscons(4).
Раскладка клавиатуры
Русская раскладка была добавлена после выхода 2.9, поэтому для набора
текста в 2.9, вам необходим этот скрипт http://www.openbsd.ru/files/koi8-map.sh
(пример его использования см. ниже). В случае если у вас OpenBSD 3.0 или новее,
добавьте в файл /etc/kbdtype раскладку вашей клавиатуры. Если вы указали тип раскладки
при установке системы раскладка уже должна стоять правильно.
# echo "ru" > /etc/kbdtype
альтернативный (файлу /etc/kbdtype) вариант - раскомментировать
следующею строку в /etc/wsconsctl.conf:
keyboard.encoding=ru
Набор русского текста происходит так же, как и в pcvt(4) консоли -
зажимая правый Alt. Для реализации т.н. sticky переключателя
(фиксированного) доступен патч (http://violent.death.kiev.ua/soft.html)
и краткое руководство по установке.
Начиная с версии 3.0, такой переключатель интегрирован в OpenBSD.
Отображение кириллицы
Для отображения кириллицы необходимо загрузить шрифт и настроить
экраны (консоли).
На экранах созданных ядром кириллица отображаться не будет.
Необходимо:
* либо пересобрать ядро с меньшим числом экранов по умолчанию
(option WSDISPLAY_DEFAULTSCREENS=6), загрузить шрифт и создать
новые
* либо удалить созданные по умолчанию экраны, загрузить шрифт и
создать их заново
Экран ttyC0 создаётся всегда и не может быть удалён, поэтому не может
отображать кириллицу.
Итак, если мы создаём custom ядро, необходимые в ядре опции (оставляем
по умолчанию два экрана, на которых не будет видно кириллицы):
option WSDISPLAY_COMPAT_USL
option WSDISPLAY_COMPAT_RAWKBD
option WSDISPLAY_COMPAT_PCVT
option WSDISPLAY_DEFAULTSCREENS=2
Исходя из количества экранов по умолчанию, в данном случае два,
добавляем в /etc/rc.local следующие строки, в зависимости от версии
OpenBSD, для создания трёх дополнительных экранов с предварительно
загруженным русским шрифтом. Не забудьте запустить дополнительные
процессы getty(8), если нужны, на этих экранах, см. ttys(5).
Для OpenBSD 2.9:
if [ -x /usr/sbin/wsconscfg -a -x /usr/sbin/wsfontload ]; then
# загружаем русский koi8 шрифт
/usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-8x16
for SCREEN in 2 3 4; do
# удаляем экраны созданные по умолчанию (для GENERIC)
# /usr/sbin/wsconscfg -d $SCREEN
/usr/sbin/wsconscfg -t 80x25bf -e vt100 $SCREEN
done
# загружаем раскладку с переключателем
/bin/sh /path/to/koi8-map.sh > /dev/null
fi
Для OpenBSD 3.0 и новее:
if [ -x /usr/sbin/wsconscfg -a -x /usr/sbin/wsfontload ]; then
# загружаем русский koi8 шрифт
/usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-r-8x16
# или украинский koi8 шрифт
# /usr/sbin/wsfontload -h 16 /usr/share/misc/pcvtfonts/koi8-u-8x16
for SCREEN in 2 3 4; do
# удаляем экраны созданные по умолчанию (для GENERIC)
# /usr/sbin/wsconscfg -d $SCREEN
/usr/sbin/wsconscfg -t 80x25bf -e vt100 $SCREEN
done
# создаем фиксированный переключатель на правом ctrl
/sbin/wsconsctl -w keyboard.map+="keycode 157 = Mode_Lock" > /dev/null
# а если вы привыкли пользоваться обычным переключателем - правый Alt
/sbin/wsconsctl -w keyboard.map+="keycode 184 = Mode_switch" >/dev/null
fi
Русификация PCVT консоли
Версии OpenBSD 2.8 и ниже, содержат три различных русских шрифта в
кодировке koi8-r для русификации PCVT консоли: koi8-8x16, koi8-8x14 и
koi8-8x8. Эти шрифты могут быть загружены в знакогенератор EGA/VGA
адаптера для использования в различных видеорежимах:
Шрифт Число строк
EGA Число строк
VGA
koi8-8x8 43 50
koi8-8x14 25 28
koi8-8x16 - 25
Для русификации консоли:
1. Убедитесь, что система собрана с драйвером PCVT. Файл конфигурации
ядра должен содержать следующую строчку:
vt0 at isa? port 0x60 irq 1
2. Добавьте в /etc/rc.local команды загрузки шрифтов:
if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt; then
/usr/sbin/loadfont -c0 -f/usr/share/misc/pcvtfonts/koi8-r-8x16
/usr/sbin/loadfont -c1 -f/usr/share/misc/pcvtfonts/koi8-r-8x14
/usr/sbin/loadfont -c2 -f/usr/share/misc/pcvtfonts/koi8-r-8x8
/usr/sbin/kcon -m koi8
/usr/sbin/scon -o
# Следующие строчки нужны только для OpenBSD 2.5 и более ранних версий
# for t in /dev/ttyC[0-7]; do
# echo -n '