LINUX.ORG.RU

Количество строк в текстовой консоли

 , ,


0

2

Всем привет.

После изменения шрифта в текстовой консоли у меня на экран помещается 25 строк, а в настройках tty прописано 28. Соответственно 3 строки находятся за нижней границей монитора.

Есть способ настроить данный параметр командой stty rows 25, но это не подходит, т.к. работает только для текущей сессии.

Вопрос такой: где находится конфиг, в котором можно прописать количество строк текстовой консоли?

По дефолту нигде ничего такого не прописывается. Что за дистрибутив?

работает только для текущей сессии

Можно прописать в ~/.bashrc .

saahriktu ★★★★★ ()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от saahriktu

Gentoo. Текущее количество строк посмотрел так:

$ stty -a
speed 38400 baud; rows 28; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

У меня было предположение что это возможно как-то разрулить при помощи openrc (я его использую), но я ничего похожего не нашёл.

alexanius ()
Ответ на: комментарий от saahriktu

В .bashrc не подходит, т.к. мне это нужно до логина. Например при загрузке система просит меня ввести пароль от шифрованных разделов. Для /home это происходит после того как отработал consolefont, т.е. за пределами экрана. Менять порядок загрузки скриптов, имхо - не решение

alexanius ()
Ответ на: комментарий от alexanius

Может ядру что-то передаётся в /boot/grub/grub.cfg ? Или в /etc есть какие-то настройки?

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Ни там ни там ничего нет (я погрепал).

Вообще у меня тоже было предположение, что это делается через ядро. По крайней мере в параметрах ядра есть опция consoleblank=, задающая timeout для sceensaver'а. Логично предположить что количество строк задаётся там же, но я ничего похожего не нашёл.

alexanius ()
Ответ на: комментарий от alexanius

Тогда, может, каким-то образом разрешение не соответствует разрешению монитора, в том смысле что оно больше физического?

Обычно ядро автоматически определяет текстовое разрешение по разрешению и размеру шрифта.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Явным образом прописал GRUB_GFXMODE=1920x1080, не помогло. Тут особенность в том что дефолтовый шрифт отображается нормально. Уезжают строки, т.к. я поставил шрифт ч большим размером. Подумал что количество строк не должно определяться ядром, т.к. оно про шрифт ничего не знает - это скрипт, который запускается openrc. Мне всё же кажется то должен быть какой-то конфиг для этого.

alexanius ()
Ответ на: комментарий от alexanius

Нет, там другой механизм. Шрифты в tty загружаются через setfont, который передаёт их прямо в ядро. И прямо в ядре есть серьёзные ограничения на шрифты: шрифт не более 64 Кб и один символ не более 32x32 пикселей. В явном виде в vt.c это было написано в версии 2.5.36 (сентябрь 2002-го года). Прямо перед кодом, который загружает и обрабатывает шрифты.

Конфиг может быть, но тогда это нечто специфичное для дистрибутива. В LFS'е такого нет.

saahriktu ★★★★★ ()
Ответ на: комментарий от saahriktu

Интересно. В генте консольный шрифт задаётся через файл /etc/conf.d/consolefont и меняется прямо на ходу через /etc/init.d/consolefont restart. Этот же скрипт прописывается на загрузку в openrc. Соответственно во время загрузки у меня сначала идёт текст одним шрифтом, затем резко меняется. Ладно, как только смогу залогиниться на гентушный форму - у них поспрашиваю. Спасибо за помощь :)

alexanius ()
Ответ на: комментарий от alexanius

Шрифты в tty загружаются через setfont

В генте консольный шрифт задаётся через файл /etc/conf.d/consolefont и меняется прямо на ходу через /etc/init.d/consolefont restart

Так /etc/conf.d/consolefont и запускает setfont . Загляни в него: это ж скрипт. <hollywar>В отличии от systemd, в openrc ты можешь видеть что конкретно делает запуск сервиса.</hollywar>

И, да, у тебя что-то наворочено. fbterm? splashutils? Покажи участок grub, который отвечает за загрузку ядра (все строки соотв. пункта меню).

Kroz ★★★★★ ()
Ответ на: комментарий от Kroz

И, да, у тебя что-то наворочено. fbterm? splashutils? Покажи участок grub, который отвечает за загрузку ядра (все строки соотв. пункта меню).

Да не, вроде всё в рамках приличия:

menuentry "Gentoo-4.8.8" {
        set root=(hd0,1)
        linux (hd0,1)/gentoo-4.8.8 root=/dev/mapper/root crypt_root=/dev/sda2 net.ifnames=0 domdadm
        initrd (hd0,1)/initramfs-4.8.8
}
alexanius ()

В /etc/conf.d/consolefont замени ter-k14n на ter-k16n и всё влезет.

Jameson ★★ ()
Ответ на: комментарий от Jameson

Спасибо, это помогло, хотя я не до конца понял почему. Во-первых визуально размер шрифта не изменился. Во-вторых почему с размером 14 был такой эффект?

alexanius ()
Ответ на: комментарий от alexanius

Количество строк и размер символов у аппаратной текстовой (не ФБ) консоли фиксировано знакогенератором, в отличие от фреймбуфера, где оно может быть произвольным. По дефолту высота символа фиксирована знакогенератором и равна 16, в итоге получаются три «лишние», не влезающие в экран строки. Теоретически можно переключать консольные vga режимы, я даже когда то этим заморачивался, до фреймбуферов ещё, там и для 14 шрифта режим есть и вообще много любопытного, только я не помню как я это делал, не актуально уже ибо.

https://ru.wikipedia.org/wiki/Текстовый_видеорежим

Jameson ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.