anatol / booster

Fast and secure initramfs generator
MIT License
506 stars 45 forks source link

No keyboard input on Linux >=6.7.6 kernel #258

Open rieje opened 8 months ago

rieje commented 8 months ago

On Linux >=6.7.6 kernel, there's no keyboard input for LUKS encrypted system drive on boot. Downgrading to a lower kernel version on Arch Linux restores keyboard input. Several people have experienced the same issue with no apparent fixes (OP claimed to have fixed this by adding):

vconsole: true
modules_force_load: usbhid

Though in another comment said switching back to mknitcpio fixes this.

I implemented this /etc/booster.yaml:

modules_force_load: i915,usbhid
extra_files: busybox
vconsole: true

but was not successful.

Switched to dracut and it also works fine. Standard USB keyboard. Dracut's lsinitrd lists the following modules for its generated image:

    systemd
systemd-initrd
i18n
btrfs
crypt
dm
kernel-modules
kernel-modules-extra
rootfs-block
terminfo
udev-rules
dracut-systemd
usrmount
base
fs-lib
shutdown
anatol commented 8 months ago

It is most likely due to the fact that the kernel has changed set of the default modules here https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/commit/4fdcfcca3e1ad2aec13f014a7a0bc3ece49725ba and here https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/commit/8ab2fef5d608714925748726901a2da4915cdf21 and did not verify that booster works.

One suspicious change is this one

-CONFIG_HID_GENERIC=y
+CONFIG_HID_GENERIC=m

Booster assumes that hid_generic is always loaded, but it is not true and fails to setup a usb keyboard properly.

To check this hypothesis please add modules_force_load: hid_generic, rebuild, reboot and see if it makes any difference for you.

rieje commented 8 months ago

That did it, I was able to successfully boot with modules_force_load: hid_generic, thank you.

ferrreo commented 8 months ago

Given this is the default kernel config going forwards now should it maybe be the default to always load this module in booster?