No USB-Keyboard at Boottime?
(really nasty with encrypted root-partition)Did it "work before"...
- a) Kernel update
- b) changing BIOS options
- c) Keyboard upgrade?
in case of b) try toggling "Legacy USB-keyboard support", no matter what it says, what people in mailing-lists say and what your manual says, I've seen the weirdest (actually impossible) things happen with different types of keyboards, initrds and motherboards. More than one time this option worked in complete contradiction to the mainboard manual. Actually it should enable or disable support for old PS/2 / USB keyboards, before the OS is loaded. Practically it does what it wants. If GRUB2 is involved, things become really unpredictable. In very rare cases, when "Legacy support" either left me without keyboard at startup or as soon as GRUB had loaded, I had success by adding the line
insmod usb_keyboard
to /boot/grub/grub.cfg.
On a recent Debian system in cases a)or c): most likely the correct module is not loaded by or included in initramfs.
In case that it is there, but not autoloaded, disconnecting and reconnecting mighthelp. The background is, that most HID-compatible keyboards identify only as "HID-compatible" and nothing else. Nevertheless some models need specific drivers to work, but are not giving any hint about that fact.
In most cases there are two alternatives to fix this: the failsafe method is to simply include (if possible: only) the correct module in the kernel. This way ou can be sure that it's there and you don't need to rely on autodetection. The downsides are obvious: you'll have to configure your own kernel and you have to know exactly which module is the right one.
The second method is to manually write it into /etc/initramfs-tools/modules - you'll have better chances to success, if you know exactly which module is needed, but even inserting a few more of them won't hurt in most cases. Running "dmesg" on a console -after booting sucessfully- should give a hint which one was the right module.
To do so, just edit /etc/initramfs-tools/modules and create a single line with the module's name - in case of a Logitech Unified wireless receiver, for example, it would be
hid_logitech_dj
- in most other cases hid_generic will be the right choice. and run
update-initramfs -u
(if you want to modify the initrd for your latest kernel, otherwise you'll have to append -k KERNEL_VERSION to the command above. Type update-initramfs -h to see all options) - you'll need root privileges for both steps. Running lsinitramfs /boot/initrams-YOUR_KERNEL_VERSION will list the updated initrds' contents.