-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reporting 'Unable to load such font with such kernel version' at boot #99
Comments
I suspect it's called either before the graphical console was initialized or for a text only console. Before 1e15af4, this was simply ignored. |
what kernel version are you using? |
Kernel 6.1lts Terminus fonts |
OK, old kernel. I mean a pre-tall-font kernel.
@thealio I don't know these fonts. can you give a link to them? |
I was seeing this with kernel 6.4.1, using the |
Linux 6.4.1 - boot without ramdisk CONFIG_FONT_SUPPORT=y I use fonts terminus - ter-v16n |
About this message: Before that, ENOSYS was ignored. The lack of a message only masked the problem - the kernel returned an error when trying to load the font. |
If it helps, I'm also seeing this with In FONT=solar24x32 In # ...
BINARIES=(setfont)
# ...
HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt filesystems fsck)
# ... |
@acheronfail framebuffer is used, right? |
Not sure? Whatever is the default I guess. I'm using integrated intel graphics (no discrete GPUs, etc). I haven't added
❯ sudo dmesg | rg -e framebuffer -e 'fb\d+'
709:[ 0.963349] efifb: framebuffer at 0x4000000000, using 36000k, total 36000k
714:[ 0.963373] fb0: EFI VGA frame buffer device
880:[ 2.743782] fbcon: i915drmfb (fb0) is primary device
882:[ 2.743787] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device Let me know if you have a way for me to check it to be sure, etc. Oh, if it helps, I get this error logged before my LUKS decryption prompt - so it's only occurring in the initramfs stage. |
Do I understand correctly that the previous version loads the font and it is visually visible? I mean before decrypting the root partition. |
I'm not 100% sure if the font was loaded and used before, but there was no error message. How can I validate this for you? I can reproduce the error on my machine. |
You can add init=/bin/sh to cmdline to eliminate system influence. And put some large font in the initramfs (for example, solar24x32) to see the difference. If the setfont from the previous version loads the font, but the new one doesn't, then this is a regression. |
I downgraded to So I don't think this is a regression, but it's just an extra log that now appears... Though I swear I had this working before the decryption prompt at some point... perhaps I'm mistaken |
I've tried it and it seems that the fonts aren't loaded. |
Exactly. Previously, a certain class of errors was simply ignored and it seemed that everything was working. But it's not. The font didn't load. If you load some very different font, then the problem is immediately visible, but if the font is not very different (for example, UniCyr_8x16), then this error is not so obvious. I added an error message so as not to confuse users that a new font has been loaded. I'm going to close this bug because the message matches what's going on. |
The issue is that this message is printed even when it's somewhat expected but unavoidable, see also systemd/systemd@93c9a9d and the downstream bug report https://bugzilla.opensuse.org/show_bug.cgi?id=1212970 I don't see a simple way to figure out whether a given tty is able to handle fonts or not to decide whether setfont can be called or not. |
@Vogtinator This message is shown if ioctl with KD_FONT_OP_SET returned ENOSYS. There are several reasons for this error:
If you do not tell setfont which device to use, the utility will look for it itself: But since we see the ENOSYS error, the device that was selected is not suitable. It's definitely a terminal, but for some reason it doesn't support loading fonts. The only obvious thing is that setfont was run in the wrong environment. To specify the correct terminal there is the I'm also know that systemd doesn't properly start the console configuration service and that this can cause errors: |
My suspicion is that systemd-vconsole-setup is started at a time when |
That would be the explanation for what's going on. Either way, the setfont error message points to a real problem. Perhaps systemd-vconsole-setup should check and not run on such a console. I think it's worth asking someone who knows better about systemd. @keszybz Could you help us ? |
Not necessarily. systemd-vconsole-setup runs multiple times during boot: Once the .service way ASAP during boot and then triggered by udev for each time a vtcon appears. So it'll end up set up properly even if some earlier runs were against the dummy console.
Yes, question is how. Check which |
Note that we're still figuring out how
Yeah, we could add a test. I don't know enough about the kernel semantics, but if somebody tells me what to check, I'd be happy to implement this. |
Possibly. I'm afraid to give bad advice now. To answer, I need to look at the console parameters that are passed to setfont. We can make a wrapper for setfont and see how they differ. |
I also started to have the same error while booting a while ago, changed to
I had added |
thanks, this works for me |
Hi, I confirm this worked for me too ! Thank you ! A bit of details : I was using And there is my vconsole.conf :
|
Hmm, it seems that the error actually happens when the chosen font is not included in the kernel. But then I do not understand why ter-222b would work since it seems that the only Terminus font included in the kernel is ter-132: $ zcat /proc/config.gz | grep FONT
CONFIG_FONT_SUPPORT=y
CONFIG_FONTS=y
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
CONFIG_FONT_ACORN_8x8=y
# CONFIG_FONT_MINI_4x6 is not set
CONFIG_FONT_6x10=y
# CONFIG_FONT_10x18 is not set
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
CONFIG_FONT_TER16x32=y
# CONFIG_FONT_6x8 is not set |
Some additions for those who came there on google search link:
After change:
and no errors in Those changes works only when external display is connected. In order to get setfont even without connected display some additional steps needs to be performed: |
Beautiful! Thank you @barzog! I can confirm that your solution fixed it for me, now the font is updating properly. Adding # ...
MODULES=(i915)
# ... And, adding |
I just added |
@D3vil0p3r if you change to font to something much different to the default font, you can notice the font changing. I set mine to solar: #99 (comment) which is a fairly large font, if you do the same you should see the font you set early on as a sign of it working |
В комментах на баг-трекере есть рецепт: "Replacing the hooks keymap and consolefont with sd-vconsole and regenerating the kernel image will remove the message." |
As of today, it seems that the error is gone, using either For me adding The log shows some error, but it seems harmless and it is not visible during boot either:
|
This issue is not solved! |
@tobrunn What font are you using? Did you try using one of the kernel builtin fonts (check one of my previous comments)? |
I didn't even need to add |
Hi
I reported this bug, about this error message that appeared after the latest kernel update (in my case latest 6.1 LTS) on Arch Linux
https://bugs.archlinux.org/task/78958
The text was updated successfully, but these errors were encountered: