anatol / booster

Fast and secure initramfs generator
MIT License
480 stars 39 forks source link

image creating fails with vconsole set to true #207

Open andyrtr opened 1 year ago

andyrtr commented 1 year ago

The Arch booster version fails to create the image when trying to include the vconsole font settings using "vconsole: true" here at FONT_MAP it seems. The booster config here does not include any other entry.

vconsole.conf has

KEYMAP=de-latin1-nodeadkeys                                                                
FONT_MAP=8859-2                                                                            
FONT=spleen-12x24

/usr/lib/booster/regenerate_images 2023/02/16 18:13:19 unable to find file for specified font '8859-2'

anatol commented 1 year ago

Hi @andyrtr

Booster is looking for font files at /usr/share/kbd/consolefonts/ directory. Do you have 8859-2 or 8859-2.gz file there?

andyrtr commented 1 year ago

No. There's only /usr/share/i18n/charmaps/ISO-8859-2.gz that looks related here.

anatol commented 1 year ago

INteresting.

Currently booster picks /usr/share/kbd/consolefonts/$FONT_MAP.gz file and passes it to setfont -m $FILE during the boot.

I checked mkinitcpio and it seems to ignore the FONT_MAP part completely. @andyrtr which initramfs do you currently use? I want to check how FONT_MAP is handled there.

andyrtr commented 1 year ago

I'm using booster as my main initcpio and some more critical systems still have dracut installed for fallback.

I'm just trying to add the font settings for the first time to try if I can workaround a bug introduced in 6.0 kernel. Up to 5.19 the vconsole.conf font setting is properly taken by the late kernel boot and is kept when switching to greetd-tui. From 6.0 release on I see the first boot msg page switching to my custom font setting but the font is then reset when a 2nd boot message page it written.

tpowa has doing some tests with mkinitcpio that is affected by the same. He found some workaround there to make the kernel reapply the custom font setting.

It would be nice when we could find a way to get the font working in inintrd to get a seemless boot output. The late userspace kernel issue is something different. Please tell me here or at IRC if I can do something for you.

It's not a serious issue but it would be nice to get booster working

andyrtr commented 1 year ago

small note: I've found the console font workaround required for kernel 6.0 and up: it's written down at the Arch wiki (Linux_console/Persistent_configuration) - to avoid the resolution reset it's required to add the video module to the initrd to enable early kms.

But this is not an actual fix for this booster font adding issue.

anatol commented 1 year ago

So booster should handle these parameters the same way as systems.

I am looking at systemd code and it essentially calls setfont -C NNN -m 8859-2 spleen-12x24.

Such call fails for me as it cannot find the font files at my computer. Nothing in /usr/share/kbd neither:

➜  kbd pwd
/usr/share/kbd
➜  kbd ls -R | grep spleen
➜  kbd

@andyrtr did you install any extra packages to get that map file? Could you please also call the setfont with strace -e file setfont .... so I can see where exactly setfont looks up for the fontmap file.

logarrhythmic commented 4 months ago

strace -o strace.txt -e file setfont ter-v32n -m 8859-2 strace.txt looks like it