Nice Looking Boot Screen Without Plymouth
I was poking around with my Arch Linux installation and I learned that the initcpio was done using shell scripts that I could write myself, and I ended up trying to make my system boot process look decent without using Plymouth.
Custom initcpio hooks
You can place custom shell scripts in /etc/initcpio/hooks, and have a script
to install it to the initramfs in /etc/initcpio/install. This is detailed further
in the Arch Linux wiki page.
You’ll want to create a file named “welcome” or any other name you want in
/etc/initcpio/hooks. It will contain a single function run_hook, and within
it you can put echo or any other commands, as long as it’s in the busybox
environment that the initramfs uses. Here’s what your welcome hook could look
like:
#!/bin/sh
run_hook() {
echo -e "Welcome to YOUR_COMPUTER, YOUR_NAME."
echo -e "Getting everything set up for you..."
}
You’ll also want to create a file with the same name in /etc/initcpio/install,
and it will have two functions: build and help. The help function just
outputs a message when you do mkinitcpio -H welcome, so it can contain any
text you want. The build function will just contain add_runscript, to add the
file we put in the hooks folder. Here’s what yours could look like:
#!/bin/sh
build() {
add_runscript
}
help() {
echo "welcoem mesage"
}
When that’s done, you can add the welcome hook somewhere early on in the hooks
part of /etc/mkinitcpio.conf, and run mkinitcpio -P as root to regenerate
the initramfs to contain your new script. Now when your computer boots, it
should run our script.
If your cool new message is quickly pushed up and off the screen by boot
messages, you can add quiet to your
kernel parameters to
silence the extra messages that the kernel usually spits out while booting up.
Console font
The default font for the console may not be your favorite. Thankfully, there are
plenty of fonts you can try out, kept in /usr/share/kbd/consolefonts/, and can
be previewed using setfont.
I use the ter-c18n font, and I have it
set persistently
in /etc/vconsole.conf. To have the console load your font early on in the boot
process, you can just add consolefont somewhere in your mkinitcpio hooks
array.
Custom colors
Your console supports custom colors, and can be easily set using
linux-vt-setcolors,
available from the AUR as setcolors-git. Also install the
mkinitcpio-colors program
from the AUR as mkinitcpio-colors-git. You can add your color scheme to
/etc/vconsole.conf using the format specified on the project’s
README:
COLOR_0=000000 # black
COLOR_1=550000 # darkred
...
COLOR_15=ffffff # white
You can use something like terminal.sexy to get colors
that you like, and then add the colors to the vconsole config matching the
numbers 0-15 to the same colors. Once you’re done with that, add the colors
hook to that same hooks array we’ve been adding stuff to, run mkinitcpio -P,
and reboot. You should be greeted with your welcome message, in your own font,
with your own colors.
Extra
I have an encrypted hard drive, so I’m able to put a message that appears only
after I unlock my drive. I created a second, very similar hook in
/etc/initcpio/hooks and created its /etc/initcpio/install counterpart, and
put a funny warning in it, and in the /etc/mkinitcpio.conf hooks array, I put
my new hook BEFORE the encrypt hook, and I put my welcome hook AFTER the
encrypt hook. Since the hooks run in order, the warning is displayed, and if I
type the correct password, I’m greeted by my laptop, and it loads everything up.

I hope this has been helpful not only for making a cool boot screen without Plymouth, but I hope I also helped you learn more about how Arch Linux boots its system using an initramfs. If anything is unclear, email me via the address at the bottom of the page, and I’ll update this post.