Make GRUB menu & boot-up/down fonts bigger
Views
Actions
Namespaces
Variants
Tools
Introduction
If you use a high DPI resolution & you want to be able to more easily read your display during the boot process (both up & down) & you don't have an extremely fast booting system (uses SSD & the like), then this page will show you how to make both the GRUB menu fonts larger & how to change the console font used in the display of the boot up/down processes. This is all primarily for those users that place some value in being able to see/read the boot up/down displays, when they are live.
What are we going to do here
This how-to is really a two in one, as the first part is about enlarging the font used by the GRUB menu & the early phase of the boot process up until the GPU driver loads.
The second part is about first identifying the GPU module to load, & then using the Kernel Mode Setting (KMS) ability of the Linux kernel to instruct it to load modules extremely early in the boot process. Which is what we will do with the GPU module via the /etc/mkinitcpio.conf file. When that is done, we then need to add consolefont to the end of the /etc/mkinitcpio.conf file's HOSTS="" line before finishing off that process by rebuilding the initial ramdisk image.
After that we need to find where the consolefonts directory is & if need be clone the /usr/share/kbd/consolefonts directory to /usr/share/consolefonts. After that we need to choose a font, though I'll endeavor to make that as quick & painless as possible. Then we need to tell the /etc/conf.d/consolefont file what that font is, save & reboot to a new situation where we are able to actually read the text as it goes by. That's the plan.
Give GRUB & the boot process, up to the GPU module load, a larger font
This one requires you to choose a font that you like (mono fonts are easiest to read), I chose DejaVuSansMono20 & here is the command line that creates this font in a GRUB compatible format, in the size that you have chosen & places it in the newly created /boot/grub/fonts directory (its a long command & it is ALL on one line):
sudo grub-mkfont --output=/boot/grub/fonts/DejaVuSansMono20.pf2 \ --size=20 /usr/share/fonts/TTF/dejavu/DejaVuSansMono.ttf
Then we need to open the /etc/default/grub file in our text editor as root (use sudo) & add the following line (or lines if your like me & have a bad memory):
##==========================_HANDY_========================================== # More readable font on high dpi screen, generated with the following # 2 lines on ONE line, terminal command (ignore the error messages it works!: # sudo grub-mkfont --output=/boot/grub/fonts/DejaVuSansMono24.pf2 \ # --size=24 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf ##=========================================================================== GRUB_FONT=/boot/grub/fonts/DejaVuSansMono18.pf2
Save the edited file & then enter the following at the Terminal prompt:
P Having done that, if you reboot the GRUB menu will be bigger & so will a shortish portion of the boot process, up until the GPU driver kernel module is loaded, where you'll go back to the default console font.
Use KMS to load the GPU kernel module early in the boot process
Use sudo & load /etc/mkinitcpio.conf into your text editor & find the MODULES="" line very near the top of file. Here you will have to put your GPU module name, the three choices that I can show you here are:
Intel on-board (at least all of the intel CPU's that carry a GPU/CPU):
MODULES="i915"
AMD/ATi:
radeon/amdgpu
nVidia:
nouveau
If your MODULES= line has any other modules on it already, just add your new one with a space separating it from the previous one.
Don't close the mkinitcpio.conf file just yet as we have one more quick change to make. We have to add consolefont to the end of the HOOKS= line. Your line will likely look a little different than mine, but here is a copy of mine just to show you:
HOOKS="base udev autodetect modconf block keyboard filesystems fsck consolefont"
You can save & close the file.
For our next trick, we have to identify which kernel branch you are using. Most people will be using an older; more recent; or the most recent, version of the "normally" supported kernel. Such shows itself in the /boot directory like so:
initramfs-linux-fallback.img initramfs-linux.img vmlinuz-linux
& would therefore use the following command to rebuild their Init Ramdisk Image:
sudo mkinitcpio -p linux
For those that are using the/a Linux Long Term Support kernel then their identifying /boot files will look like this:
initramfs-linux-lts-fallback.img initramfs-linux-lts.img vmlinuz-linux-lts
& would therefore use the following command to rebuild their linux-lts Init Ramdisk Image:
sudo mkinitcpio -p linux-lts
For those using more exotic kernels, you already know how to modify the above command to suit.
For Manjaro users that are using multiple kernels, you are going to need to make multiple mkinitcpio.conf files, one for each of your different kernels. I don't have to bother with that on Artix (Arch), for better & worse. Again, your /boot directory will tell you what to do (as shown in the differences in the examples above).
On Artix, I had to copy the /usr/share/kbd/consolefonts/ directory into /usr/share/consolefonts . Whether I could have used the /usr/share/kbd/consolefonts directory in place or not I don't know (I didn't try). The /etc/conf.d/consolefont file uses the /usr/share/consolefonts path, so I made one.
So the first thing that you have to do (before I find out from someone in the Manjaro forum where the consolefonts directory exists) is see whether you have to clone the directory from /usr/share/kbd/ to /usr/share/ or not. After that is sorted, then you need to choose a font. You won't like doing that. Here is a link to an old page (far fewer suitable fonts & its still too many): [1]
Take my advice & use ter-132b this is a font that is large enough for my 15" 1440p display. I expect that it would be great on a 24" 1080p display. If it is too big, you can use a smaller number as will be easily seen in your consolefonts directory.
To tell the kernel to use the chosen custom console font you will need to open the /etc/conf.d/consolefont file & comment out any line that says:
consolefont=
Then add your own line. This is what I did:
consolefont="ter-132b"
You need to make no other edits to this file, so close it.
Now from what I can make out on the ArchWiki font page: [2] The above how-to should work on SystemD, as is. I will check on the Manjaro forum & if & where needed modify this page (there shouldn't be much in it as both systemd & openrc use the same kernel).
For Artix (Arch/OpenRC) users, you would need to just once use the following command:
sudo rc-update add consolefont boot
Hopefully I haven't forgotten anything, as this is has been a multi-step process & I lost power & a good deal of the wiki page some time ago & had to do it twice! ;)