Ошибки при пересборке initramfs

Настроил шрифты в консоли для корректного отображения русских букв, делал по арчевики Localization/Russian (Русский). Отредактировал vconsole.conf, добавил хук в mkinitcpio.conf. Все работает нормально, но при пересборке initramfs появлялись ошибки.

Сводка
==> Building image from preset: /etc/mkinitcpio.d/linux52.preset: 'default'
  -> -k /boot/vmlinuz-5.2-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.2-x86_64.img
==> Starting build: 5.2.11-1-MANJARO
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [autodetect]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
cannot open file ruwin_alt_sh-UTF-8
  -> Running build hook: [consolefont]
'=> ERROR: consolefont: requested font not found: `ter-v16b
  -> Running build hook: [encrypt]
  -> Running build hook: [filesystems]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-5.2-x86_64.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux52.preset: 'fallback'
  -> -k /boot/vmlinuz-5.2-x86_64 -c /etc/mkinitcpio.conf -g /boot/initramfs-5.2-x86_64-fallback.img -S autodetect
==> Starting build: 5.2.11-1-MANJARO
  -> Running build hook: [base]
  -> Running build hook: [udev]
  -> Running build hook: [modconf]
  -> Running build hook: [block]
  -> Running build hook: [keyboard]
  -> Running build hook: [keymap]
cannot open file ruwin_alt_sh-UTF-8
  -> Running build hook: [consolefont]
'=> ERROR: consolefont: requested font not found: `ter-v16b
  -> Running build hook: [encrypt]
  -> Running build hook: [filesystems]
==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-5.2-x86_64-fallback.img
==> Image generation successful

С чем связаны ошибки ERROR: consolefont: requested font not found: `ter-v16b и cannot open file ruwin_alt_sh-UTF-8?
Ведь все нормально работает, русские буквы в терминале появились, раскладка по alt и shift переключается. Файлы шрифтов и кеймапов на месте. Что не так с mkinitcpio, почему он не видит эти файлы?

Здравствуйте. Я не могу точно понять, откуда появились эти ошибки, но вот несколько наблюдений:

  • Не обязательно добавлять хук keymap. Он нужен только для того, чтобы переключение раскладки клавиатуры работало на раннем этапе загрузки. В процессе загрузки systemd и без этого установит раскладку из файла vconsole.conf.
  • Если не критично переключать раскладку именно Alt+Shift, можно привыкнуть к Ctrl+Shift, что выбрано по умолчанию для KEYMAP=ru
  • Чтобы работал шрифт Terminus, надо установить пакет terminus-font. Если хочется такой же шрифт, в котором кириллицу немного улучшили, можно установить terminus-cyrillic из AUR.
  • Если Terminus не работает или не нравится, можно попробовать шрифт из стандартного пакета kbd: FONT=UniCyr_8x16. Напоминает о временах, когда Norton Commander был крутой программой :grinning:

Я использую такую конфигурацию vconsole.conf:

KEYMAP=ru
FONT=ter-v16n

Работает без ошибок.

1 Like

I have this, oops, сорян, у меня вот в /etc/vconsole.conf так:

FONT=ter-c22b
FONT_MAP=
KEYMAP=ru

Шикарный большой русский шрифт, который классно смотрится.
В /etc/mkinitcpio.conf так: HOOKS=(base udev keyboard consolefont ...).
Так что плюсую кайнонергона, у меня по сути то же, лишь чуть стилистически иначе.

Так дело в том, что kbd и terminus-font установлены, файлы /usr/share/kbd/consolefonts/ter-v16b.psf.gz, /usr/share/kbd/keymaps/i386/qwerty/ruwin_alt_sh-UTF-8.map.gz на месте. Почему же mkinitcpio их не видит? А на KEYMAP=ru отвечает cannot open file ru

Если хук действует на раннем этапе загрузки, то может именно из-за этого mkinitcpio и не находит файлы раскладок и шрифтов? У меня раздел зашифрованный, а значит до расшифровки доступно только само ядро, а файлов шрифтов и раскладок как бы нет. После ввода пароля сразу запускается systemd, который ставит раскладки из конфигурационного файла. Значит сборка ядра на самом деле не нужна, если все работает и так, без хуков. А до того, как диск расшифрован, русский язык не нужен, все параметры ядра прописаны по английски

Если проблема действительно в этом, можно попробовать прописать нужные файлы в mkinitcpio.conf в строке FILES. Но мне все равно это непонятно. Ведь ошибки возникают при сборке initram, когда диск расшифрован, а не при загрузке.

Надо попробовать. Если и без них заработает, то ещё проще.

Forum kindly sponsored by Bytemark