When I boot in GRUB2 and press c, I have access to GRUB shell.

How to change the keyboard layout (language) of this GRUB shell?

Note that I'm booting an Ubuntu VM inside Virtualbox.


First, check that you're using GRUB 2 (GRUB 0.x works differently).

grub-install --version

Generate a GRUB keyboard layout file. Below is the command for a french keyboard. For other languages, check /usr/share/X11/xkb/symbols/. Filename choice is not important (you can change bepo).

sudo grub-kbdcomp -o /boot/grub/bepo.gkb fr

Edit /etc/default/grub with root rights to have:


Edit /etc/grub.d/40_custom with root rights to have:

exec tail -n +3 $0

insmod keylayouts
keymap /boot/grub/bepo.gkb


sudo update-grub

Note: Forget immediately about using the Shift key to display GRUB menu! It may be normal that terminal_input at_keyboard make this key not work anymore. So make sure #GRUB_HIDDEN_TIMEOUT=0 is properly commented.

  • 1
    Trying this on Linux Mint 18.3 with german locale (de) completely disabled my keyboard while in grub. Probably because grub-kbdcomp reported multiple times invalid code and invalid identifier – Xerus Apr 22 '18 at 16:46
  • Link is dead and solution isn't bullet proof on laptops. – Zulgrib Apr 27 '18 at 11:48
  • 1
    Will this work as well for decrypting passphrase typing (full disk encryption including /boot)? – PlasmaBinturong Jun 10 '19 at 18:45

Fine-tuning my grub (2.02-2ubuntu8.3), on an old fully functional Asus N73JF (multiboot Windows 7, Windows recovery, Ubuntu 15.10, Ubuntu 18.04...) a custom menu was not an option for me.

sudo grub-kbdcomp -o /boot/grub/layouts/laptop.gkb fr

(Ubuntu's grub2 uses /boot/grub/layouts from 15.10).

Next, I don't open /etc/default/grub nor /etc/grub.d/40_custom: I edit /etc/grub.d/00_header where I replace

    cat << EOF
  set gfxmode=${GRUB_GFXMODE}
  insmod gfxterm


    cat << EOF
  set gfxmode=${GRUB_GFXMODE}
  insmod gfxterm
  insmod terminal
  terminal_output gfxterm
  insmod keylayouts
  insmod at_keyboard
  terminal_input at_keyboard
  keymap laptop

Thanks to KrisWebDev for his question-answer: I learn a lot looking inside /boot/grub/i386-pc/.

  • I do not have /boot/grub/layouts in Ubuntu 20.04. /boot/grub/i386-pc/ has only binary .mod files. What do you learn from those? – jarno Jan 24 at 10:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.