Русификация FreeBSD -2
С момента написания прошлой статьи по русификации операционной системы FreeBSD прошло довольно много времени, которое вносит в нашу жизнь и в администрирование некоторые коррективы. Об этих изменениях и пойдёт речь ниже… |
После недавнего обновления до FreeBSD 11-RELEASE обнаружил, что некоторые настройки по русификации серверной ОС не работают. В логах ошибок при загрузке появились сообщения о невозможности загрузки кодовой страницы и т.д.
Как оказалось, во FreeBSD начиная с релиза 10.1, внедрили новый драйвер консоли – vt (newcons). До этого же момента использовался драйвер консоли syscons. Про новый драйвер (который теперь внедрили в ядро GENERIC и сделали драйвером системной консоли по умолчанию – отсюда и ошибки) вы можете почитать тут.
Драйвер vt(4) может работать как в текстовом, так и в графическом режиме VGA, благодаря последнему и реализована поддержка UTF-8 в консоли (чем мы в последствии и воспользуемся). Также реализована интеграция с KMS видео драйверами для переключения между Xorg и виртуальными терминалами.
Приступим к выполнению локализации (все операции производились на FreeBSD 11.0-RELEASE-p2). Дадим команду для выявление всех доступных русских локалей в системе:
# locale -a | grep ru ru_RU.CP1251 ru_RU.CP866 ru_RU.ISO8859-5 ru_RU.KOI8-R ru_RU.UTF-8
Будем использовать локаль ru_RU.UTF-8.
1. Русификация локальной консоли (данный пункт не требуется и не влияет на работу удаленных text-mode эмуляторов терминалов, таких как putty
или openssh
)
Все доступные русские keymaps теперь находятся по пути:
# ls -Al /usr/share/vt/keymaps/ | grep ru -r--r--r-- 1 root wheel 16228 11 окт. 13:43 ru.kbd -r--r--r-- 1 root wheel 16234 11 окт. 13:43 ru.shift.kbd -r--r--r-- 1 root wheel 16232 11 окт. 13:43 ru.win.kbd
Выбирайте из этого для указания в /etc/rc.conf
, исходя из следующего:
- keymap=“ru” — переключение на русский клавишей CAPS Lock;
- keymap=“ru.shift” — переключение на русский клавишей CAPS Lock, но верхний ряд на клавиатуре by default будет цифровой;
- keymap=“ru.win” — переключение на русский клавишами CTRL+SHIFT.
Фонты находятся по пути:
# ls -Al /usr/share/vt/fonts/ total 92 -r--r--r-- 1 root wheel 8452 12 авг. 2015 gallant.fnt -r--r--r-- 1 root wheel 36408 11 окт. 13:43 vgarom-16x32.fnt -r--r--r-- 1 root wheel 8742 12 авг. 2015 vgarom-8x14.fnt -r--r--r-- 1 root wheel 9864 12 авг. 2015 vgarom-8x16.fnt -r--r--r-- 1 root wheel 5384 12 авг. 2015 vgarom-8x8.fnt -r--r--r-- 1 root wheel 5400 12 авг. 2015 vgarom-thin-8x16.fnt -r--r--r-- 1 root wheel 2704 12 авг. 2015 vgarom-thin-8x8.fnt
Из них:
- vgarom-8×8.fnt - матрица 8×8 с поддержкой русских символов;
- vgarom-8×14.fnt - матрица 8×14 с поддержкой русских символов;
- vgarom-8×16.fnt - матрица 8×16 с поддержкой русских символов (используется по умолчанию);
- vgarom-16×32.fnt - матрица 16×32 с поддержкой русских символов (для wide мониторов).
Таким образом, в файле /etc/rc.conf
наши настройки должны выглядеть примерно так:
nano -w /etc/rc.conf ... keymap="ru.win" font8x16="vgarom-8x16" #можно не указывать ...
Если вы используете ядро GENERIC, для однозначного включения нового драйвера консоли внесите в /boot/loader.conf
следующее:
# echo 'kern.vty=vt' >> /boot/loader.conf
Или же при сборке своего собственного ядра закомментируйте строки с vga и sc, оставив относящееся к vt без изменения:
nano -w /usr/src/sys/amd64/conf/MYKERNEL ... #device vga # VGA video card driver # syscons is the default console driver, resembling an SCO console #device sc # vt is the new video console driver device vt device vt_vga device vt_efifb ...
Тип эмулируемого терминала для UTF-8 консоли только xterm! Так что /etc/ttys
в части касающейся должен выглядеть так:
# less /etc/ttys | grep xterm # For virtual consoles, the correct type is typically xterm. ttyv0 "/usr/libexec/getty Pc" xterm on secure ttyv1 "/usr/libexec/getty Pc" xterm on secure ttyv2 "/usr/libexec/getty Pc" xterm on secure ttyv3 "/usr/libexec/getty Pc" xterm on secure ttyv4 "/usr/libexec/getty Pc" xterm on secure ttyv5 "/usr/libexec/getty Pc" xterm on secure ttyv6 "/usr/libexec/getty Pc" xterm on secure ttyv7 "/usr/libexec/getty Pc" xterm on secure ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
2. Локализация login shells и использование login class
При использовании в русификации login класса необходимо привести настройки класса “russian” в файле /etc/login.conf
к следующему виду:
nano -w /etc/login.conf ... russian|Russian Users Accounts:\ :charset=UTF-8:\ :lang=ru_RU.UTF-8:\ :tc=default: ...
После чего обязательно перестройте хеш-базу командой:
# cap_mkdb /etc/login.conf
Теперь осталось перевести необходимых пользователей на этот новый класс командой:
# pw usermod -n max -L russian
Проверить сделанное можно командой vipw
:
# vipw ... max:passwd:0:0:russian:0:0:User Name:/home/max:/usr/local/bin/bash ...
Для настройки русификации в shell (я использую bash), в файл /etc/profile
внесите следующие строки:
# nano -w /etc/profile LANG=ru_RU.UTF-8; export LANG MM_CHARSET=UTF-8; export MM_CHARSET
В домашнем каталоге пользователей создаём файл .login_conf
и заносим туда следующие строки:
me:My Account:\ :charset=UTF-8:\ :setenv=LC_ALL=ru_RU.UTF-8:\ :lang=ru_RU.UTF-8:
Вот, в принципе, и всё.
Проверяем вывод locale
:
# locale LANG=ru_RU.UTF-8 LC_CTYPE="ru_RU.UTF-8" LC_COLLATE="ru_RU.UTF-8" LC_TIME="ru_RU.UTF-8" LC_NUMERIC="ru_RU.UTF-8" LC_MONETARY="ru_RU.UTF-8" LC_MESSAGES="ru_RU.UTF-8" LC_ALL=ru_RU.UTF-8
И какой-нибудь простенькой команды:
# date среда, 2 ноября 2016 г. 14:03:54 (MSK)
Забавно, что на момент написания статьи handbook ещё не был поправлен…
_______________
По мотивам данной статьи.
спасибо, добрый человек! актуально, почти идеальное руководство, в закладки
Помимо kern.vty=vt в /boot/loader.conf нужна строка hw.vga.textmode=0, без нее консоль всегда грузилась в текстовом режиме и кириллица не отображалась.
11.0-RELEASE-p1
Выполнил все в точности как написано на FreeBSD-11.0. Работает!
У меня csh. При прописывании в /etc/csh.login, ОС после ребута ругается, что такие команды не найдены.
Спасибо, добрый человек!!! :)
Наконец то я нашел актуальный мануал по русификации консоли… :)
Братан Вам долгих лет. Сегодня бился целый день русифицровать Freebsd 13.1 и наткнулся на ваш сайт и вуаля через пять минут, Все стало по русски консоль и XFCE4. Благодарю еще раз!!!