dadv (dadv) wrote,
dadv
dadv

Category:

UTF-8 в консоли FreeBSD

FreeBSD 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" Что бы консоль грузилась сразу в нужном нам разрешении.
Tags: freebsd, unicode, utf-8
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments