53

I would like to reduce the size of the font of GRUB boot loader. Is it possible and so how?

5 Answers 5

55

After some research based on the answers of @fpmurphy and @hesse, also based on a comprehensive thread at ubuntuforums and on Fedora Wiki, I found out how to reduce the font size of GRUB2.

  1. Choose a font, in this example I chose DejaVuSansMono.ttf
  2. Convert the font in a format GRUB understands:
    sudo grub2-mkfont -s 14 -o /boot/grub2/DejaVuSansMono.pf2 /usr/share/fonts/dejavu/DejaVuSansMono.ttf
  3. Edit the /etc/default/grub file adding a line:
    GRUB_FONT=/boot/grub2/DejaVuSansMono.pf2
  4. Update GRUB configuration with:
    • BIOS: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    • EFI: sudo grub2-mkconfig -o /boot/efi/EFI/{distro}/grub.cfg # distro on RHEL8 is {'redhat'}
  5. reboot.

The resolution of GRUB display may also affect the size of the font, more on resolution etc. on the ubuntuforums link above.

4
  • 1
    On UEFI system one would use grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    – scrutari
    Mar 13, 2019 at 15:32
  • 3
    On Linux Mint 20 the command is grub-mkfont. On my systems, the use of DejaVuSansMono leads to "broken" vertical lines in the box around the boot menu, probably because the vertical box drawing characters are 1 pixel too short. On Mint 20 the only pre-installed font that did it correctly was "FreeMono.ttf" sudo grub-mkfont -s 24 -o /boot/grub/FreeMono.pf2 /usr/share/fonts/truetype/freefont/FreeMono.ttf Jun 19, 2021 at 3:27
  • @drfumanchu thanks, the same works for Ubuntu 20.04, (along with changing any grub2 references to grub). Also, /etc/default/grub advises to run update-grub, which calls grub-mkconfig, and (I'm hoping) does the right thing with regards to EFI.
    – mwfearnley
    Aug 3, 2021 at 7:50
  • To make the font in Fedora 34, use sudo grub2-mkfont -s 20 -o /boot/grub2/DejaVuSansMono.pf2 /usr/share/fonts/dejavu-sans-mono-fonts/DejaVuSansMono.ttf To update GRUB on Fedora 34 use sudo grub2-mkconfig -o /etc/grub2-efi.cfg Aug 19, 2021 at 19:30
8

In Debian/Ubuntu you can change the default GRUB resolution, thereby resulting in larger fonts on the GRUB menu:

  1. Make a backup: sudo cp -a /etc/default/grub /etc/default/grub.bak
  2. Open the configuration: sudo $EDITOR /etc/default/grub
  3. Edit GRUB_GFXMODE entry to suit your resolution e.g. 800x600
  4. sudo update-grub
  5. Reboot; GRUB will display in the mode you set.
0
6

Yes, both the font and the font size can be customised. See the grub-mkfont utility. Bitmap (.pf2) and Truetype (.ttf) fonts are supported.

Just do an Internet search on grub-mkfont and you will quickly come across a number of examples of the necessary steps.

2
  • 1
    Nice indeed I found this documentation but somehow I need to update-grub, which command I don't seem to have on Fedora 16 (?). Feb 15, 2012 at 12:49
  • OK, I see elsewhere the equivalent of update-grub is grub2-mkconfig -o /boot/grub2/grub.cfg. Feb 15, 2012 at 12:51
2

If you are looking for a simpler GUI alternative, you can use Grub Customiser to change the font size, colors and background of GRUB.

0
2

I whipped up a little script to automatically scale font size to monitor/screen width.

SCREEN_WIDTH=$(xdpyinfo | grep dimensions | cut -d ':' -f 2 | cut -d 'x' -f 1)
FONT_SIZE=$((${SCREEN_WIDTH} / 80))
sudo grub-mkfont -s ${FONT_SIZE} -o /boot/grub/DejaVuSansMono.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
printf "\nGRUB_FONT=/boot/grub/DejaVuSansMono.pf2" | sudo tee -a /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg

A few caveats

  • This font is different from the default one
  • On old systems you might need grub2 instead of grub
  • Doesn't consider multi-monitor setups

Enjoy!

1
  • I love it, I did change your 80 to 120
    – Pelle
    Jan 30 at 18:06

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.