Русификация консоли NetBSD 3.0
Данное руководство является переработанной версией предыдущего для адаптации к NetBSD 3.0.
1. Для реализации фиксированного переключателя между русской и латинской раскладками, понадобится пересобрать ядро с некоторыми изменениями. Скачайте и распакуйте файлы ядра. Затем в файле "/usr/src/sys/dev/wscons/wskbd.c" находим следующие строчки:
case KS_Mode_switch: update_modifier(id, type, 0, MOD_MODESHIFT);
и заменяем 0 на 1. Пересобираем и устанавливаем ядро. Пересборка ядра описана в документации и вопросов, надеюсь, не вызовет.
2. Далее нам нужны консольные шрифты (в комплекте с системой не идут). Следовательно, нужно их загрузить, подойдут шрифты от OpenBSD или от FreeBSD (c некоторыми изменениями). Готовые можно взять здесь fonts.tar.gz.
3. В случае zsh добавляем следующие строчки в ~/.zshrc (или /usr/pkg/etc/zshrc для вступления изменений в силу для всех пользователей):
export LC_CTYPE=ru_RU.KOI8-R export LANG=ru_RU.KOI8-RДля других шеллов при надобности также экспортируем соответствующие переменные в их конфигурационных файлах.
4. Создаём файл ~/.inputrc", содержащий следующие строки:
set convert-meta off set input-meta on set output-meta on
5. Теперь можно сразу до перезагрузки протестить наличие русификации. Для этого нужно
- Назначить используемому шрифту имя (сразу передать шрифт как аргумент команде, выставляющей оный на тот или иной терминал не судьба ибо костыли и NetBSD). Назовём шрифт, для примера, mynew:
# wsfontload -N mynew /usr/share/wscons/fonts/koi8.816
(Заметим, что загруженная в память ядра ассоциация данного шрифта с именем "mynew" удалена оттуда может быть только перезагрузкой: "There is no way to remove a loaded font" (C) man wsfontload, ибо NetBSD). Поэтому, если вы будете проделывать эту процедуру ещё один раз, то для назначения этому же или другому шрифту имени выбирайте отличное от "mynew" имя. - Теперь можно активизировать шрифт на соответствующей консоли (например, на ttyE1):
# wsconsctl -f /dev/ttyE1 -dw font=mynew font -> "mynew" #
Теперь в ttyE1 должна работать русская раскладка, доступная по CapsLock.
6. Для закрепления сделанных изменений, чтобы те не сбрасывались перезагрузкой, редактируем конфигурационный файл /etc/wscons.conf:
- Строка, отвечающая за шрифт должна быть единственной и выглядеть как
font koi8 - - - /usr/share/wscons/fonts/koi8.816
(По завереням некоторых, действие необходимо только в версии NetBSD 3.0) - То же самое касается строки
mapfile /usr/share/wscons/keymaps/pckbd.ru.koi8-r - Строка с
encoding ru
должна быть закомменченой, ибо русскую раскладку выкинуть в 3.0 уже успели, а конфигурационный файл поправить - не судьба, ибо NetBSD. - Строка
screen 0 - vt100
должна быть раскомменченой вопреки яростным заверениям некоторых аполгетов, боящихся краха системы (см. примечание ниже). - По заверениям некоторых, в случае русификации (только для NetBSD 3.1) также необходимо добавить строчки:
wsfontload -N russian /usr/share/wscons/fonts/koi8.816 wsconsctl -f /dev/ttyE0 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE1 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE2 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE3 -dw font=russian > /dev/null wsconsctl -f /dev/ttyE4 -dw font=russian > /dev/null
В файл /etc/rc.local Сам не проверял, потому точно сказать не могу.
Примечание:
Позлено для ознакомления предыдущее руководство. Хотелось бы обратить внимание на следующие детали:
screen 0 - vt100.
Также, в силу того, что шрифт теперь один, принудительная активация его в стиле (как было указано в предыдущем руководстве) Для этого нужно просто добавить несколько строк в файл "/etc/rc.local":
/sbin/wsconsctl -f /dev/ttyE1 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE2 -dw font=koi8 >/dev/null
/sbin/wsconsctl -f /dev/ttyE3 -dw font=koi8
# /etc/rc.d/wscons restart
setvar repeat.del1=300
setvar repeat.deln=40
в файл /etc/wscons.confwsconsctl -dw msg.kernel.attrs=color msg.kernel.bg=black msg.kernel.fg=brown
в конце файла /etc/rc.local
- Страница для печати
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 5368 просмотра
Цитата: Даже
Ну что ж, значит не судьба. У меня проблема с тем что шрифт
бьётся наблюдалась на двух совершено разных компах - один
довольно старый, а другой - только с магазина.
Всегда пожалуйста.
что ж, по сути,
что ж, по сути, полезная статья. а по мелочам понравилось прилагательное "умолчальный" возьму на вооружение :)
да. я давно
да. я давно заметил в его статьях это слово. не думаю что оно словарное но очень удобное при переводе. как я запарился с "default" когда переводил хендбук. :)
qnub писал(ла):да.
Я даже не задумывался никогда словарное ли это слово... Мне почему-то всегда казалось, что оно словарное, а слово "дефолтный" - сленг. А сейчас думаю, и не могу сообразить, есть такое слово в русском или нет....
А старая статья
А старая статья чем плоха, работает же.
Даже на netbsd 4.0_beta стабильно.
а никто не
а никто не говорил, что статья чем-то плоха. spinore плохих статей не пишет :)
Цитата:А старая
Если ты прочитаешь старую статью, а потом новую, то увидишь, что во-первых не работает, а во-вторых устраело, и в-треьих есть неточности (нелогичности) в предыдущей стетье и новые факты в этой.
+ К старой стаье есть комментарии: человек поинтересовался, почему у него "не работает". Я объяснил ему как сделать по-новому, чтобы заработало. Свои объяснения, по просьбе qnub'а, я здесь и изложил.
за что я
за что я безмерно благодарен
Про неработает
Про неработает это погорячились, у меня по первой статье все работает на 3.1 и на 4.0
Нелогичность исправлена, это хорошо.
Помогите
Помогите пожалуйста. Действовал точно по руководству: пересобрал ядро, поправил конфиги.
Когда делаю
wsconsctl -f /dev/ttyE1 -dw font=koi8,вся консоль в маленьких точках и ничего не видно.
После перезагрузки стандартный шрифт не меняется, в 0 консоли пишется от
до
Вот конфиги:
Цитата:вся
Это потому что NetBSD. Если вы правильный шрифт скопировали
себе, то считайте что вы впервые столкнулись с этим. Короче,
баг в DNA у разрабов. У меня тоже когнсоль бьётся в памяти,
приходится поользоваться только иксами. Багрепорт можно не
писать: всё равно им пох на ваши проблемы - привыкайте.
Как совет могу сказать "отключите старт иксов" и эффект
может пропасть (у меня так) - попробуйте. То есть: удалите старт
иксов сразу после перезагрузки, а загрузившись попробуй те руками
установить с помощью команд соответствующий шрифт. - Может быть,
это поможет замести мусор под ковёр. Вы поймите правильно, что
за куски кода овтечащие за wscons и иже с ним не брались со времён...
страшно знает каких... там столько тараканов... Лучше спросите почему
те костыли вообще работают. Я как-то редактировал wscons - проникся,
идиоты... так запудрить скрипт, и при этом всунуть туда части
строк которые не работают никогда - это жесть. Есть строка помощи
по функции которой нет там... гыгыгы. Лучше не заглядывайте.
А если честно снесите нахъ эту х*ю и рассмотрите другие бсд или
линукс. Это значете, хотят дяди понтонуться "бнэтбсд - круто,
- всё остальное сакс, это для хакеров...", а на самом деле
это общество своих которое насилует труп. А в обществе
некрофилов чужие не нужны :-) P.S.: ну вы иксы попробуйте всё же
отключить для начала (ради теста эффекта).
В стартовых скриптах дважды вызывается функция добавления
дисплея - консоли. Ищите где это происходит.
Привыкайте пистать версию ос перед тем как репортить о проблемах.
Если у вас 3.1 то возможно стоит раскомментить строку encoding ru
- типа русскую кодировку снова в ядро добавили, и больше обратить
внимание на предыдущее руководство. (Мож ещё кто что подскажет).
spinore писал(ла):А
Странная логика. Зачем же советовать сменить систему, если я только что её сменил? Имея честь знать, что есть такое Linux, FreeBSD и QNX, я всё таки постараюсь побороть трудности скорее, чем сдамся. Кстати, нельзя называть систему трупом, если ей пользуется хотя бы сотня человек, у неё есть сообщество. Ведь Minix, Syllable и им подобные ОС никто же так не зовёт.
Да, 3.1. X'ов нет.
Да, 3.1. X'ов нет. Буду разбираться.
Added: По ходу дела я сомневаюсь в этой строчке в ядре:
options WSDISPLAY_DEFAULTSCREENS=8,комментарий перед ней гласит:
# allocate a number of virtual screens at autoconfiguration timeЗакомментировал, пересобрал ядро по-новой.
Резльтаты следующие: теперь сообщения в консоли:
Но из-за этого screen 0, шрифт опять, по-видимому не применяется ко всем консолям, а по-отдельности, там так и становятся одни точки.
Опции ядра смотрел - возможно это из-за опции зелёного цвета системных сообщений.
Цитата: Странна
Миникс развивается. Free отвечает на репорты. Вопрос: что
делает netbsd? Ну что ж, попользуйтесь - всё полезно попробовать.
Мне год назад тоже интересно было, посмотрел, поюзал...
И скорей всего сменю этот стафф на что-то более адекватное.
Да, это правильно сделали - у меня тоже закомментировано.
Я думаю что эта ошибка толком ни на что не влияет.
вы понимаете чему она соответствует? 0-й скрин кто-то пытается добавить,
а он уже есть (удалить его нельзя, кстати - так сделано специально).
Загрузка шрифта не связана с этой ошибкой никак.
Если скрин уже есть, то вы можете загрузить на него новый
шрифт - в том числе и на нулевой скрин.
Когда у меня бились шрифты я ещё такую схему применял - помогало:
- удалить все скрины командой
# wsconscfg -dF 1
- После этого загружаете на 0й скрин другой шрифт:
# wsfontload -N odin
- Теперь можете добавлять новые скрины и загружать после этого на них шрифт
(учтите что он там появляется не моментально а толкьо после небольшой задержки):
Можете использовать модификации этого алгоритма. Таким образом,...
# wsconscfg -dF 8
короче, все которые есть.
/usr/share/wscons/fonts/flori.816
# wsfontload -N dva
/usr/share/wscons/fonts/koi8.816
# wsconsctl -f /dev/ttyE0 -dw font=odin
font -> "odin"
# wsconsctl -f /dev/ttyE0 -dw font=dva
font -> "dva"
# wsconscfg 1
# wsconsctl -f /dev/ttyE1 -dw font=dva
....
# wsconscfg 8
# wsconsctl -f /dev/ttyE8 -dw font=dva
и т.п.
идет простые:
1. Пробовать отключать иксы
2. Удалять и снова добавлять нужный скрин а также все кроме нулевого.
3. Менять шрифт времено на другой, а потом снова грузить русский.
4. Разбираться со скриптом /etc/rc.d/wscons
5. Курить маны по вышеиспользовавшимся командам.
P.S.: если вы считает что такие алгоритмы заметания мусор
под ковёр и откровенного шаманства нормальны для уважающей себя ОС
могу только посочувствовать.
P.P.S: есть вещи которые во фре и оупен реализованы куда здравее.
Во фре курсор мыши в консоли как стрелка, колёскико работает,
прокрутка на ура... В netbsd проще забыть про мышь в консоли
(хотя обычно она и не нужна там).
spinore
Спасибо, пожалуй откажусь - не курю.
Спасибо за сочувствие. Даже оставшись в одиночестве, нулевая консоль не захотела воспринимать двойную смену шрифта. Возможно в этом виновата не ОС, а лэптоповский 12.1" монитор, его карточка. Пока остаюсь без русской консоли. В любом случае спасибо - получил неоценимый опыт, заодно поэксперементировав с опциями ядра.
Цитата: Но из-за
Нет, дело не в этом (если только не рассматривать способ заметания мусорв под ковёр,
когда требуется удалить скрин а потом добавить чтоб netbsd скашала шрифт по-нормальному).
Во-первых, зелёный цвет - это дефолт, а во-вторых, это опять же
никак не связано. Вы вообще понимаете, что если у вас, длпустим,
скрипт в xterm пишет ошибку при выполнении, это не связано с тем,
какого цвета шрифт в xterm? Здесь так же.
Я понимаю, что
Я понимаю, что подобных просьб здесь очень много, но всё-таки. Сабж.
Хочу рассказать свою историю..
Задумал я русифицировать консоль своей NetBSD 3.1. После продолжительных поисков в сети были найдены всего лишь две нормальные статьи, заслуживающие внимания, как это сделать: Русификация консоли NetBSD от А до Я и, собственно, эта статья. Т.к. она является улучшенной и переработанной версией первой, то именно её я и взял как инструкцию для своих действий.
Что я сделал:
1) Скопировал русские терминальные шрифты, находящиеся по адресу http://runetbsd.ru/files/fonts.tar.gz к себе в систему в директорию /usr/share/wscons/fonts:
2) Добавил новые переменные окружения LC_CTYPE и LANG. Для этого я поправил файл /etc/profile:
3) Далее выполнил несколько команд, как здесь описано:
После этих нескольких шагов я уже смог в консоли пользоваться полноценной кириллицей, доступной при нажатии правого или левого Alt. Причём, если при нажатой левой клавише Alt набрать латинские qwerty, то получится ЯВЕРТЫ, а при нажатой правой - йцукен.
Вот, собственно, вопросы к All:
1) Сразу после этой небольшой победы, возник вопрос сохранения конфигурации, дабы кириллица оставалась доступной и после перезагрузки компьютера.
Очень странно, но решить эту проблему так, как описано в инструкции, у меня почему-то не получилось.
А именно, у меня не сохранялась кириллица после перезагрузки после добавления следующих строк в /etc/wscons.conf:
Не может ли сказать многоуважаемый All, почему так происходит?
2) Хотелось бы переключать раскладку в консоли с помощью Alt+Shift, ну, или хотя бы, Caps Lock. Настройка переключения раскладки клавиатуры с помощью последнего описана здесь, но по странному стечению обстоятельств ничего не работает. Никакие изменения исходных текстов системы с последующей перекомпиляцией не помогают. А может я делаю что-то не так?
Если нужна какая-то дополнительная информация - спрашивайте, с удовольствием предоставлю.
Scr1pt, попробуй
Scr1pt, попробуй добавить экспорт в .profile или .cshrc, только перед этим указав в них шел #!//usr/pkg/bin/bash или что там у тебя...
В переменных
В переменных окружения всё в порядке:
Да и вообще, похоже я нашёл решение своей проблемы.
После очередной попытки перекомпиляции ядра с изменениями в исходных текстах системы, дабы раскладка в консоли могла переключаться по Caps Lock, я раскоментировал в /etc/wscons.conf строки (которые, к несчатью, раньше были закоментированы - похоже, что это и было моей ошибкой):
И смог получить переключение раскладки клавиатуры в консоли по клавише Caps Lock!
Но! Вышеперечисленные строки в файле /etc/wscons.conf ни коим разом не сохраняют кириллицу в консоли после перезагрузки, как описано в руководстве выше!
Я решил эту проблему добавлением в /etc/rc.local следующего:
И я считаю, что это необходимо обязательно добавить в руководство. Если кто поддержит - могу добавить.
Вот ещё что.
Вот ещё что. Пишу вдогонку.
Попробовал закомментировать следующую строку в /etc/wscons.conf:
Ничего не изменилось.. Имхается, что она лишняя и может быть закомментирована..