GRUB- "No suitable mode found"


If you get this error when booting any menuentry:

error: no suitable mode found
Booting however

Then you need to initialize GRUB graphical terminal (gfxterm) with proper video mode (gfxmode) in GRUB. This video mode is passed by GRUB to the linux kernel via 'gfxpayload'. In case of UEFI systems, if the GRUB video mode is not initialized, no kernel boot messages will be shown in the terminal (atleast until KMS kicks in).

Copy /usr/share/grub/unicode.pf2 to ${GRUB_PREFIX_DIR} (/boot/grub/ in case of BIOS and UEFI systems). If GRUB UEFI was installed with --boot-directory=$esp/EFI set, then the directory is $esp/EFI/grub/:

# cp /usr/share/grub/unicode.pf2 ${GRUB_PREFIX_DIR}

If /usr/share/grub/unicode.pf2 does not exist, install bdf-unifont, create the unifont.pf2 file and then copy it to ${GRUB_PREFIX_DIR}:

# grub-mkfont -o unicode.pf2 /usr/share/fonts/misc/unifont.bdf

Then, in the grub.cfg file, add the following lines to enable GRUB to pass the video mode correctly to the kernel, without of which you will only get a black screen (no output) but booting (actually) proceeds successfully without any system hang.

BIOS systems:

insmod vbe

UEFI systems:

insmod efi_gop
insmod efi_uga

After that add the following code (common to both BIOS and UEFI):

insmod font
if loadfont ${prefix}/fonts/unicode.pf2
then
    insmod gfxterm
    set gfxmode=auto
    set gfxpayload=keep
    terminal_output gfxterm
fi

As you can see for gfxterm (graphical terminal) to function properly, unicode.pf2 font file should exist in ${GRUB_PREFIX_DIR}.