Terminus в ядре

Продолжаю разгребать свои завалы. Иногда натыкаюсь на полезные штуки. Чтобы они не лежали мёртвым грузом, буду делиться ими с общественностью :)

Когда загружается ядро, информация на экран выводится шрифтом, который «зашит» в ядро. Его возможно сменить только после загрузки с помощью утилиты setfont из пакета kbd. Но мне хочется, чтобы мой любимый шрифт был уже на начальном этапе загрузки ядра. Что же делать?
В конфиге ядра можно указать, какой именно шрифт необходимо использовать. Но стандартные, идущие в комплекте, мягко говоря, не очень. Поэтому мы их попросту заменим на что-нибудь более красивое.
Мой любимый консольный шрифт — Terminus. Его-то и будем «пихать» в ядро :) При создании я использовал размер 8×16.

Заглянув в /usr/src/linux/drivers/video/console, я узнал, что шрифты были сгенерированы с помощью программы cpi2fnt. Поиск в гугле сказал, что это древняя программулина была для AmigaOS. Таких раритетов у меня нет :), поэтому я стал искать обходные пути. Ещё немного погуглив, нашёл, что шрифт в формате psf можно сконвертировать в include-файл с помощью программы psf2inc из пакета psftools. Но для начала надо получить шрифт Terminus в формате psf. В дистрибутиве он поставляется в виде bdf-файлов. В комплекте также идёт утилита bdftopsf.pl.Теперь дело осталось за малым. В директории с распакованным дистрибутивом Terminus делаем

./bdftopsf.pl ter-u16n.bdf > ter-u16n.psf

Полученный файл опять преобразуем:

psf2inc --psf1 ter-u16n.psf ter-u16n.inc

В получившемся inc-файле много лишнего. Нам нужны только первые 255 глифов. Поэтому удаляем первые 3 строчки и всё, что идёт дальше 255 символа (ориентируясь по комментариям в файле, это легко сделать).
Теперь редактируем font_8x16.c: удаляем сведения о старом шрифте и вставляем содержимое подчищенного файла ter-u16n.inc.
Полученный результат можно скачать в готовом виде здесь.
Теперь осталось заменить старый файл новым и в конфигурации ядра указать вкомпилировать шрифт 8×16.

Device Drivers --->
Graphics support --->
Console display driver support --->
Framebuffer Console support
[*] VGA 8x16 font

Реклама
Опубликовано в Linux, Tips&Tricks. 10 комментариев »

комментариев 10 to “Terminus в ядре”

  1. LXj Says:

    Я так понимаю, после этого менять шрифт уже не надо будет? И с русскими буквами будет всё в порядке?

    Надо будет попробовать…

  2. kaktyc Says:

    Нет, менять всё равно придётся, т.к. здесь используются только первые 255 символов, т.е. русские буквы туда не входят.

  3. LXj Says:

    А если из inc-файла ничего не выкидывать?

  4. kaktyc Says:

    Хм, похоже я ошибся. Русские буквы можно использовать. Ведь первые 0-127 символов относятся к US-ASCII, а 128-255 можно использовать под национальный алфавит и другие спецсимволы. Проблема только в том, что здесь будет только какая-то одна кодировка. KOI8-R нам вполне подходит.

    Попробуй так. Нужен будет шрифт terminus в кодировке KOI8-r ter-k16n.pcf.gz. Его надо сначала сконвертировать в bdf с помощью pcf2bdf, а затем сделать то же самое, что и ранее. Может быть получится :)

    У меня юникодная локаль, так что для меня это бесполезно. Всё равно придётся подгружать нужный шрифт.

  5. LXj Says:

    У меня вообще-то тоже юникодная локаль. Жаль =)

  6. kaktyc Says:

    Вообще, данный трюк из разряда тех мелких ненужностей, без которых жить можно, но с ними как-то веселей :) Так что полноценной замены setfont это не делает, а всего-лишь дополняет его, делая внешний вид консоли более консистентным.

  7. pp-- Says:

    Можно в бут лоадере прописать шрифт напр. терминус и загрузка ядра будет выглядеть более красочно чем с обычным шрифтом.
    Бутлоадер использую syslinux, там есть параметр font.

  8. kirill.zabarniuk Says:

    Давно хотел себе такое. Спасибо за выложенное описание и, особенно, за файлы. Теперь у меня неизменный terminus14 начиная с меню grub-a :)

  9. grawizapa Says:

    Вот теперь я совсем доволен своей консолькой. Все-равно, раньше чем я залогинюсь юникод мне — как козе баян. А терминус я люблю )

  10. LDA Says:

    Спасибо, kaktyc! Да, мы настоящие эстеты: даже выхлоп ядра делаем красивым =)


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: