Sono passato da una tastiera PS2 a una USB e Grub è diventato inusabile. Le soluzioni sono due: una è quella che si trova con un po' di ricerca su Google, ma non sempre è applicabile. La seconda è meno banale e vale la pena riportarla qui per futura memoria.
La risposta che di solito si trova sui forum è: abilita l'opzione "USB legacy support" nel BIOS. Spiegazione: molti BIOS possono fare da intermediari tra la tastiera USB e le applicazioni vecchiotte (legacy) e far vedere a quest'ultime qualsiasi tastiera come se fosse una vecchia PS2, nascondendo gli aspetti più squisitamente USB come l'enumerazione, le classi, gli hub, etc. Si noti che quest'operazione non è assolutamente necessaria per far girare un moderno sistema operativo come Linux (che conosce e gestisce benissimo i dettagli USB), è solo Grub che, nella sua spartanità, non comprende d'ufficio tale supporto.
Alcuni BIOS però non hanno affatto questo switch, o è disabilitato, o funziona male: la soluzione in questo caso è convincere Grub a comportarsi da adulto e decidersi a gestire la USB lui stesso. Grub, nella sua ultima incarnazione nota come Grub2 o Grub-PC, si è dotato di un sistema a moduli in cui nuove funzionalità possono essere caricate alla bisogna. Nel nostro caso i moduli per la gestione USB si chiamano uchi e ohci e il modo per farglieli caricare è di metterli nella variabile GRUB_PRELOAD_MODULES. Infine dobbiamo anche dire a Grub che la tastiera da usare è quella USB (usb_keyboard) e non quella esportata dal BIOS (console).
In conclusione ecco cosa mettere nel nostro file /etc/default/grub:
GRUB_PRELOAD_MODULES="ohci uhci" GRUB_TERMINAL_INPUT="usb_keyboard"
Ovviamente dopo ogni modifica è necessario lanciare
update-grub da root!


