UTF-8 в консоли FreeBSD
2012-03-16 21:52FreeBSD 8.x и версии новее поддерживают UTF-8 в консоли. Полная отрисовка юникодных шрифтов выполняется в графическом режиме, разумеется (framebuffer).
- Сам по себе графический режим консоли штатно доступен с версии 3.0 и появился в системе 13 лет назад. Для его поддержки в 8.x нужно в конфигурацию ядра добавить опции:
options SC_PIXEL_MODE options VESA
Чтобы сделать графический режим консоли дефолтным, нужно в /boot/device.hints к стандартным флагам драйвера syscons 0x100 добавить значение 0x80:
hint.sc.0.flags="0x180"
- Для режима UTF-8 тип терминала в консоли меняется с cons25 на xterm (начиная с 9.0 по умолчанию xterm и нужна только вторая опция из двух):
options TEKEN_XTERM # xterm-style terminal emulation options TEKEN_UTF8 # UTF-8 output handling
Так как теперь консоль будет xterm, в /etc/ttys надо заменить cons25 (или cons25r) на xterm.
- Установить из портов sysutils/jfbterm, который и будет заниматься отрисовкой шрифтов в графическом режиме консоли.
- Переменную LANG вместо ru_RU.KOI8-R нужно сделать равной ru_RU.UTF-8 средствами login class или выставив её после перезагрузки и логина в консоли вручную. После логина и проверки, что LANG=ru_RU.UTF-8, запускаем jfbterm. Он у меня перевел экран из дефолтного режима 800x600x32 в режим 1024x768x16 (для проверки режимов есть команды
vidcontrol -i adapter </dev/ttyv0иvidcontrol -i mode </dev/ttyv0). Теперь UTF-8 в консоли отрисовывается юникодными шрифтами.
Без jfbterm отрисовки шрифтов не будет и вместо кириллицы выдаются знаки вопроса.
Update. Вынес из комментария:
в файл /boot/device.hints добавить hint.sc.0.vesa_mode="0x1F0" - нужный нам режим "vidcontrol -i mode </dev/ttyv0" Что бы консоль грузилась сразу в нужном нам разрешении.
no subject
Date: 2014-03-03 08:10 (UTC)Единственное что могу дополнить - это надо в файл /boot/device.hints добавить hint.sc.0.vesa_mode="0x1F0" - нужный нам режим "vidcontrol -i mode </dev/ttyv0" Что бы консоль грузилась сразу в нужном нам разрешении.