студия открытых решений о-никс
<< Автозапуск во FreeBSD Алиас команды >>

Русификация FreeBSD

В общем случае можно, конечно, обойтись и без русификации, но если у вас гетерогенная сеть, состоящая из хостов под управлением Windows и FreeBSD с общими расшаренными ресурсами, то лучше их привести к одной кодировке. Поскольку Windows особой гибкостью никогда не отличалась, то надо подстраиваться под нее и выбирать кодировку CP1251.

Существует несколько способов, позволяющих русифицировать интерфейс консоли FreeBSD. Один из них заключается в добавлении класса языкового аккаунта в файл /etc/login.conf:

winrus|Russian Win Accounts:\
:charset=CP1251:\
:lang=ru_RU.CP1251:\
:tc=default:

Сохраняем файл и даем команду для сохранения изменений в хешированной базе данных:

cap_mkdb /etc/login.conf

Задаем имя класса winrus пользователя, к примеру, с логином winuser:

pw usermod winuser -L winrus

Проверяем изменения:

cat /etc/master.passwd | grep winuser

winuser:$1$eiJnoeEf$u8EdnHwOK.GDtfMcU1O.I.:1007:0:winrus:0:0:winuser:
/home/winuser:/bin/bash

Класс можно задать также через утилиту vipw (только аккуратно, т.к. файл откроется в редакторе vi), добавив класс winrus в пятое поле в строке пользователя.

Другой способ, более гибкий - через задание переменных окружения пользователя в файлах домашней директории /home/winuser/.profile и /home/winuser/.cshrc:

cat .profile | grep CP1251

LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL
MM_CHARSET=CP1251; export MM_CHARSET 

cat .cshrc | grep CP1251

setenv LC_ALL ru_RU.CP1251
setenv LANG ru_RU.CP1251
setenv MM_CHARSET CP1251

Либо эти же изменения можно внести глобально в файлы /etc/profile и /etc/csh.login. Первый файл в этих случаях - для пользователей оболочки bash, второй - для csh.

Далее понадобятся файлы клавиатурной раскладки ru.cp1251.kbd  и таблицы перекодировки win2cpp866.scm:

cd /usr/share/syscons/keymaps
wget http://www.o-nix.com/media/download/ru.cp1251.kbd
cd /usr/share/syscons/keymaps
wget http://www.o-nix.com/media/download/win2cpp866.scm

После чего добавляем в файл /etc/rc.conf строки:

keymap=ru.cp1251
scrnmap="win2cpp866"
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8

И меняем локальные консоли cons25 на cons25r в файле конфигурации терминалов /etc/ttys:

ttyv0 "/usr/libexec/getty Pc" cons25r on secure
ttyv1 "/usr/libexec/getty Pc" cons25r on secure
ttyv2 "/usr/libexec/getty Pc" cons25r on secure
ttyv3 "/usr/libexec/getty Pc" cons25r on secure
ttyv4 "/usr/libexec/getty Pc" cons25r on secure
ttyv5 "/usr/libexec/getty Pc" cons25r on secure
ttyv6 "/usr/libexec/getty Pc" cons25r on secure
ttyv7 "/usr/libexec/getty Pc" cons25r on secure

После чего рестартуем драйвер консоли:

/etc/rc.d/syscons restart

Теперь можно без проблем монтировать в консоли FreeBSD сетевые ресурсы Windows с русскими названиями и даже с пробелами. Например, сетевой каталог на Windows с названием "Какая-то папка на винде" монтируем в каталог /mnt/winshare:

mount_smbfs -N -E cp1251:cp866 -I 10.10.10.10 //USERNAME@SERVERNAME/Какая-то\ папка\ на\ винде /mnt/winshare

Где -N - не спрашивать пароль, -I - ip-адрес хоста Windows, SERVERNAME - NetBIOS-имя хоста (можно глянуть командой nbtscan 10.10.10.10), USERNAME - имя пользователя, для которого расшарен ресурс на Windows. Если в названии сетевого каталога Windows содержатся пробелы, их нужно экранировать обратным слэшем.

-E cp1251:cp866 - для перекодирования из CP1251 в CP866, чтобы избежать проблем с символами псевдографики и управляющими символами в консоли.

<< Автозапуск во FreeBSD Алиас команды >>

Поделиться в соцсетях:

система комментирования CACKLE
RSS