Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | | | | | | | |
зато теперь в иксовых консолях идёт ругань (putfont: PIO_FONT: Invalid argument) =(( 05.01.04 02:28 Число просмотров: 3186
Автор: fly4life <Александр Кузнецов> Статус: Elderman
|
|
<operating systems>
|
[Linux] грабли с фрейм буфером 30.12.03 00:57
Автор: fly4life <Александр Кузнецов> Статус: Elderman
|
Скомпилил ядро с поддержкой frame buffer'а. Выставил расширение для консоли 1024х768 и всё бы ничего, но есть один неприятный косяк =(.
Русские буквы нормально отображаются только в первой консоли (той, в которую выкидывает после загрузки и которая tty1). Во всех остальных вместо русских букв отображаются квадратики. Можно ли это исправить и если да, то как?
|
| |
отлично =). И врправду, помогло. Спасибо =) 30.12.03 12:00
Автор: fly4life <Александр Кузнецов> Статус: Elderman
|
|
| | |
Ндя... Проблема оказалась гораздо шире, чем я надеялся... 31.12.03 12:29
Автор: fly4life <Александр Кузнецов> Статус: Elderman
|
Куда ж теперь прописывать всё это дело (описанное в хаутушке), чтобы шрифты во всех консолях восстанавливались при загрузке системы? Беглый осмотр загрузочных скриптов мне не дал ответа =(.
П.С. ASPLinux 9
|
| | | |
/etc/sysconfig/i18n 04.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-нуть setsysfont 05.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
|
|
| | | | | | | | | | |
Напиши скрипт 05.01.04 11:31
Автор: amirul <Serge> Статус: The Elderman
|
И если не установлен $DISPLAY, то делай setsysfont, а если установлен, то не делай :-))
Епты. Какой замуженный workaround :-)
|
| | | | | |
echo -ne "\033(K" > /dev/tty$n 04.01.04 14:44
Автор: :-) <:-)> Статус: Elderman
|
А разве описанная в хаутушке сия "магическая последовательность" не работает?
for n in 1 2 3 4 5 6; do
echo -ne "\033(K" > /dev/tty$n
done
---
В Slackware это прописывается обычно в /etc/rc.d/rc.font
|
| | | | | | |
echo -ne "\033(K" > /dev/tty$n. 04.01.04 15:56
Автор: fly4life <Александр Кузнецов> Статус: Elderman Отредактировано 04.01.04 16:09 Количество правок: 1
|
> А разве описанная в хаутушке сия "магическая > последовательность" не работает? > > 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? Что же меняет этот самый фрейм буфер?
|
|
|