I was able to get what I needed by reverse-engineering /usr/share/initramfs-tools/init and creating the following custom init script:The key appears to be getting udev running. Then, I'm assuming the hardware is detected and the frame buffer properly initialized.
This seems to boot faster than initramfs (probably because it's so large) and allows me to display a splash screen earlier than with plymouth.
dmesg still shows the simple-framebuffer as 640x480, but by the time fbi runs, the resolution is 800x480, which is what I was after.
Code:
#!/bin/sh# Mount some necessary file systems[ -d /sys ] || mkdir /sysmount -t sysfs -o nodev,noexec,nosuid sysfs /sys[ -d /proc ] || mkdir /procmount -t proc -o nodev,noexec,nosuid proc /proc[ -d /run ] || mkdir /runmount -t tmpfs -o "nodev,noexec,nosuid,mode=0755" tmpfs /run# Run udev/usr/lib/systemd/systemd-udevd --daemon --resolve-names=neverudevadm trigger --type=subsystems --action=addudevadm trigger --type=devices --action=addudevadm settle || true# Show splashfbi -T 1 -noverbose -a /data/splash.png# Exit udevudevadm control --exit# unmount file systemsumount /runumount /procumount /sys# Call real initexec /sbin/init "$@"This seems to boot faster than initramfs (probably because it's so large) and allows me to display a splash screen earlier than with plymouth.
dmesg still shows the simple-framebuffer as 640x480, but by the time fbi runs, the resolution is 800x480, which is what I was after.
Statistics: Posted by JinShil — Thu Jul 10, 2025 5:48 am