уже ближе =)04.01.04 21:18 Число просмотров: 2573 Автор: fly4life <Александр Кузнецов> Статус: Elderman Отредактировано 04.01.04 21:55 Количество правок: 2
Спасибо, конечно же, за разъяснения про сервисы, но я и это знаю =). Да и проблема в моём случае не в старте сервиса. Сервис keytable запущен (ведь, если бы он не был запущен, то шрифты не загрузилиь бы даже для консоли, в которую система загружается).
А в скрипте /etc/rc.d/init.d/keytable действительно прописана команда /sbin/setsysfont, но т.к. у меня ядро переходит в runlevel 3, то и грузятся системные шрифты туда, куда происходит загрузка (т.е. в tty1).
Как всё-таки в этом скрипте (или каком другом) заставить грузиться эти шрифты не только в tty1, но и вообще в tty$i?
Скомпилил ядро с поддержкой frame buffer'а. Выставил расширение для консоли 1024х768 и всё бы ничего, но есть один неприятный косяк =(.
Русские буквы нормально отображаются только в первой консоли (той, в которую выкидывает после загрузки и которая tty1). Во всех остальных вместо русских букв отображаются квадратики. Можно ли это исправить и если да, то как?
Куда ж теперь прописывать всё это дело (описанное в хаутушке), чтобы шрифты во всех консолях восстанавливались при загрузке системы? Беглый осмотр загрузочных скриптов мне не дал ответа =(.
П.С. ASPLinux 9
/etc/sysconfig/i18n04.01.04 09:01 Автор: amirul <Serge> Статус: The Elderman Отредактировано 04.01.04 09:02 Количество правок: 1
> Куда ж теперь прописывать всё это дело (описанное в > хаутушке), чтобы шрифты во всех консолях восстанавливались > при загрузке системы? Беглый осмотр загрузочных скриптов > мне не дал ответа =(. Там устанавливаются три переменные. Не помню точно какие (ищи где нить в манах или в вебе), но вроде SYSFONT (та, что тебе надо), SYSFONTACM (перекодировка из ядерной кодовой таблицы в экранную) и LANG - локаль.
Для большего понимания лучше смотреть /sbin/setsysfont или /bin/unicode_start (если установлена utf-8 локаль)
Про /etc/sysconfig/i18n всё известно и понятно.04.01.04 13:36 Автор: fly4life <Александр Кузнецов> Статус: Elderman
> Там устанавливаются три переменные. Не помню точно какие > (ищи где нить в манах или в вебе), но вроде SYSFONT (та, > что тебе надо), SYSFONTACM (перекодировка из ядерной > кодовой таблицы в экранную) и LANG - локаль. > Для большего понимания лучше смотреть /sbin/setsysfont или > /bin/unicode_start (если установлена utf-8 локаль)
С переменными ты не ошибся. Я знаю, что команда setsysfont включает в консоли системный шрифт, который задан в переменной SYSFONT файла /etc/sysconfig/i18n (получается аналог команды setfont /lib/kbd/consolefonts/Cyr_a8x16.psfu.gz, о которой писал ZaDNiCa). Но меня интересует, в каком скрипте загружаются эти фонты.
Правда, подумывал как более изощренным (и в лоб) способом решить проблему свою. Т.е. написать скрипт, который бы присваивал консолям tty$i системные шрифты и запихать этот скрипт отдельным скриптом в автозагрузку, либо вообще приписать в конец rc.local. Но как связать эти самые tty-ки и команду setsysfont я хз =(.
/etc/rc.d/init.d/keytable вроде04.01.04 19:02 Автор: amirul <Serge> Статус: The Elderman
> С переменными ты не ошибся. Я знаю, что команда setsysfont > включает в консоли системный шрифт, который задан в > переменной SYSFONT файла /etc/sysconfig/i18n (получается > аналог команды setfont > /lib/kbd/consolefonts/Cyr_a8x16.psfu.gz, о которой писал > ZaDNiCa). Но меня интересует, в каком скрипте загружаются > эти фонты. Сделай ntsysv из под root-а, чтобы посмотреть какие сервисы стартуют при загрузке. Называются /etc/rc.d/rcN.d/Sddservice_name, где N - в rcN.d - runlevel, в который переходит ядро (3 для текстового и 5 для X), S - означает, что данный сервис нужно стартовать при переходе в данный ранлевел (K - значит, что надо останавливать его при выходе из ранлевела), dd - две цифры, служат для упорядочивания старта/стопа сервисов, ну а с service_name думаю и так все понятно
> Правда, подумывал как более изощренным (и в лоб) способом > решить проблему свою. Т.е. написать скрипт, который бы > присваивал консолям tty$i системные шрифты и запихать этот > скрипт отдельным скриптом в автозагрузку, либо вообще > приписать в конец rc.local. Но как связать эти самые tty-ки > и команду setsysfont я хз =(. Вот тут меня и терзают смутные сомнения. Я то рассказывал совершенно бегиннерские вещи, а ты вроде и так это знаешь. Но все равно попробуй сделать
#service keytable start (или вроде того - читай ман по service :-))
И вообще посмотри, включен ли у тебя сервис keytable при помощи
#ntsysv
уже ближе =)04.01.04 21:18 Автор: fly4life <Александр Кузнецов> Статус: Elderman Отредактировано 04.01.04 21:55 Количество правок: 2
Спасибо, конечно же, за разъяснения про сервисы, но я и это знаю =). Да и проблема в моём случае не в старте сервиса. Сервис keytable запущен (ведь, если бы он не был запущен, то шрифты не загрузилиь бы даже для консоли, в которую система загружается).
А в скрипте /etc/rc.d/init.d/keytable действительно прописана команда /sbin/setsysfont, но т.к. у меня ядро переходит в runlevel 3, то и грузятся системные шрифты туда, куда происходит загрузка (т.е. в tty1).
Как всё-таки в этом скрипте (или каком другом) заставить грузиться эти шрифты не только в tty1, но и вообще в tty$i?
Странно05.01.04 00:04 Автор: amirul <Serge> Статус: The Elderman
> А в скрипте /etc/rc.d/init.d/keytable действительно > прописана команда /sbin/setsysfont, но т.к. у меня ядро > переходит в runlevel 3, то и грузятся системные шрифты > туда, куда происходит загрузка (т.е. в tty1). У меня setsysfont переводит всю консоль (а не только виртуальные терминалы) в нужный режим (проставляет ему шрифты/таблицы перекодировки).
> Как всё-таки в этом скрипте (или каком другом) заставить > грузиться эти шрифты не только в tty1, но и вообще в tty$i? Если setsysfont переводит только один терминал, то самый тупой вариант добавить ее куда нить в .loginrc или что-то подобное. До логина все равно на экране вряд ли будет много кириллицы
если дургого способа нету, то этот, вроде, рабочий =)05.01.04 01:09 Автор: fly4life <Александр Кузнецов> Статус: Elderman
> Если setsysfont переводит только один терминал, то самый > тупой вариант добавить ее куда нить в .loginrc или что-то > подобное. До логина все равно на экране вряд ли будет много > кириллицы
Если добавить в конец /etc/bashrc (просто у меня у всех пользователей в качестве рабочей оболочки стоит bash) строку /sbin/setsysfont, то при логоне обычным пользователем происходит ругань (Permission denied) и пользователь логинится, но шрифты не загружаются. Но а при логоне рутом - всё ок. Правда, при следующем логоне обычного пользователя (уже после логона рута и его выхода) в ту же консоль ругань, естесственно, остаётся, но и загруженные шрифты тоже остаются.
Зато, если дописать в конец всё того же /etc/bashrc вместо /sbin/setsysfont строку /bin/setfont /lib/kbd/consolefonts/Cyr_a8x16.psfu.gz, то даже под обычным пользователем загружается нужный шрифт и никакой ругани нету =). Во как.
Спасибо за идею =)
Можно suid-нуть setsysfont05.01.04 11:29 Автор: amirul <Serge> Статус: The Elderman
> пользователем происходит ругань (Permission denied) и Или даже /etc/rc.d/init.d/keytable
Думаю то что непривилегированный пользователь сможет перезагружать системные шрифты (но не редактировать их) сильно большой дырой в безопасности не будет. И в bashrc прописать
. /etc/rc.d/init.d/keytable restart >/dev/null &2>/dev/null
> Зато, если дописать в конец всё того же /etc/bashrc вместо > /sbin/setsysfont строку /bin/setfont > /lib/kbd/consolefonts/Cyr_a8x16.psfu.gz, то даже > под обычным пользователем загружается нужный шрифт и > никакой ругани нету =). Во как.
> Спасибо за идею =) Странный у тебя все таки дистр :-)))
зато теперь в иксовых консолях идёт ругань (putfont: PIO_FONT: Invalid argument) =((05.01.04 02:28 Автор: fly4life <Александр Кузнецов> Статус: Elderman
> А разве описанная в хаутушке сия "магическая > последовательность" не работает? >
> for n in 1 2 3 4 5 6; do
> echo -ne "\033(K" > /dev/tty$n
> done
>
---
Нет, вот именно, что echo -ne "\033(K" не работает (я это способ попробовал самым первым, ещё до указания хаутушки), а setsysfont выручает, но в привидённом тобой примере не сработает.
П.С. ещё не пойму, почему, если не выставлять в консоли никакого режима vga (попросту не использовать FB), а просто оставить консоль поумолчанию 80х25, то с русскими шрифтами всё Ok? Что же меняет этот самый фрейм буфер?