You can use plymouth to create a splash boot.
I have done this on a Pine64-LTS board so maybe you need to alter some steps.
First step is to create a custom boot logo image for u-boot to show.
I am not really sure which file you need exactly but to be sure just
use the same image as boot logo and save the images in /boot
1 file named boot-desktop.png in /boot/boot-desktop.png
1 file named boot.bmp in /boot/boot.bmp
If you don't want to lose the original ones, back-up them first:
cp /boot/boot-desktop.png /boot/boot-desktop.png-orig
cp /boot/boot.bmp /boot/boot.bmp-orig
Next reboot you will notice you are having a nice new boot image, but you will
probably also notice that the kernel boot messages are written over this screen
and/or maybe also the init boot messages. Sadly this is due to the fact that u-boot
isn't compled with silent boot support. It would have been nice, because you
could then set a parameter to use it in silent or not. Now we first have to recompile
the u-boot with a patch to silence the boot messages. Use the default Armbian
build guide and before you start compiling you need to enable a u-boot patch.
You can try to enable the patch, but i tried it and it failed applying due to some
inconsistencies. I changed the patch so it now works. I don't know how i should
give this patch change to the correct maintainer, so i will place it here:
patch file located in -><armbian git clone dir>/20.02.2/build/patch/u-boot/u-boot-sunxi
File name -> remove-boot-messages-from-hdmi.patch.disabled
You should normally only have to remove the '.disabled' part to make use of this patch.
But since this version did not work i created a new file called:
remove-boot-messages-from-hdmi.patch
containing:
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -438,12 +438,12 @@
#ifdef CONFIG_VIDEO
#define CONSOLE_STDOUT_SETTINGS \
- "stdout=serial,vga\0" \
- "stderr=serial,vga\0"
+ "stdout=serial\0" \
+ "stderr=serial\0"
#elif CONFIG_DM_VIDEO
#define CONSOLE_STDOUT_SETTINGS \
- "stdout=serial,vidconsole\0" \
- "stderr=serial,vidconsole\0"
+ "stdout=serial\0" \
+ "stderr=serial\0"
#else
#define CONSOLE_STDOUT_SETTINGS \
"stdout=serial\0" \
*UPDATE* - Jan 27th 2022 - When using the new Armbian build trunk called 22.02.0
i again was not able to use this new patch, since the 'sunxi-common.h' file changed
too much. For those also trying to use this guide using Armbian 22.02.0 trunk please
try the following patch instead:
This removes all boot messages but leave logo. For Plymouth configuration proceed here:
https://forum.armbian.com/topic/10087-armbian-boot-splash-screen/?do=findComment&comment=96114
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -403,8 +403,8 @@
#ifdef CONFIG_DM_VIDEO
#define CONSOLE_STDOUT_SETTINGS \
- "stdout=serial,vidconsole\0" \
- "stderr=serial,vidconsole\0"
+ "stdout=serial\0" \
+ "stderr=serial\0"
#else
#define CONSOLE_STDOUT_SETTINGS \
"stdout=serial\0" \
After creating this file you can use the Armbian build guide to create a new 'release'.
Use the deb files in the output path located at:
<armbian git clone dir>/20.02.2/build/output/debs
The most important file is -> linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb
Keep in mind i am describing these steps for a Pine64-LTS, the idea stays the same...
Put the deb file on your unit and install the package with:
dpkg -i linux-u-boot-current-pine64so_20.05.0-trunk_arm64.deb
Once this is finished you also have to save this u-boot img to mmc/sdcard or whatever you are using.
You can do this with armbian-config. Start armbian-config and select menu item 'system' then 'install'
and then '5 Install/Update the bootloader on sD/eMMC' . Once finished you will have the new u-boot
on your system. To really make sure you are not getting any messages to your console make the
following changes to your armbianEnv.txt
verbosity=0
console=custom
consoleargs="console=ttyS0,115200 console=tty7"
#extraargs=vt.global_cursor_default=0 quiet splash fbcon=rotate:3 plymouth.ignore-serial-consoles
extraargs=vt.global_cursor_default=0 quiet splash plymouth.ignore-serial-consoles
stdout=serial
vt.global_cursor_default=0 makes sure you dont see any blinking cursor in the upper left corner
quiet makes sure you don't get extra kernel messages.
splash enables kernel splash logo.
fbcon=rotate:3 you don't need to and is only needed on LCD's or HDMI units that are rotated.
plymouth.ignore-serial-consoles makes sure plymouth ignores the /dev/ttyS0 console because else plymouth wont continue and
you wont get any video driver attached to plymouth.
stdout=serial makes sure the boot.scr does not do his own thing.
Once you made all these changes you can do a reboot and notice that you will see a splash screen followed by a long
silence black screen and then the login prompt (or desktop if you are using desktop image).
You can now install plymouth to also show splash screen (takeover) from the point where u-boot left.
apt-get install plymouth
apt-get install plymouth-themes
Now you can try a default theme, for example spinner:
plymouth-set-default-theme spinner
To make really sure the initrd also starts plymouth i ran an extra initrd update:
update-initramfs -u
Ok, now you should be done. Reboot the system and enjoy the splash boot and loader.