diff --git a/main/postmarketos-mkinitfs/APKBUILD b/main/postmarketos-mkinitfs/APKBUILD index d0eb00a6c..d77357892 100644 --- a/main/postmarketos-mkinitfs/APKBUILD +++ b/main/postmarketos-mkinitfs/APKBUILD @@ -2,7 +2,7 @@ # Co-Maintainer: Clayton Craft pkgname=postmarketos-mkinitfs pkgver=1.6.1 -pkgrel=0 +pkgrel=1 pkgdesc="Tool to generate initramfs images for postmarketOS" url="https://postmarketos.org" depends=" @@ -67,6 +67,6 @@ check() { sha512sums=" eb4af0fd9b5050e792c2ffb5d72e38899d19e623eda8f41e7cfeaa3d6dcae7e0342381cfc12f4969017d1e3b3b5d879614b0bbc3e4cf2d5fd01769e741bea17e postmarketos-mkinitfs-1.6.1.tar.gz 20f110337113e8de8999cf2a064a93fea36821d5c216bfa4ba46ec1f83825638262b92fd7be29eee0a85a54a108b7315a96cbe30da8ae4419f54c2ed53bb08c7 00-default.modules -f9a3ebf7f116df5f50c047d99d9353ea97965522d6d80a039d4f79316c5152f49499fab654f8b12b54dd247f1497957e5c3d957292b09c3d449f3d1fa7d43d9a init.sh -57ad4267c97153c9ca606c5422de887cc62ec44faafacaf24923fa524068e6103a2de9ad50b70320f75e105e8b82ab65cde7f5efac3c27f0155b3086bc4f3431 init_functions.sh +5f8e4acb19abee32b481f69b50be96ab06b1fea1b27448b9d08dfa13f0868d7808139b39c88d64bd35a3d6b2727e7b71797dbf0e99f6a92157e2755c89a34da4 init.sh +4c18c7d1078c0fd37623e53d0f6d5660df7d6e53f2340c2b24cf62129cf7c4c5a90856ed6d0254498c927a7e41431e9344c4a6eae236f986e9468f45a7c7f281 init_functions.sh " diff --git a/main/postmarketos-mkinitfs/init.sh b/main/postmarketos-mkinitfs/init.sh index 1e6a35924..be7a872de 100644 --- a/main/postmarketos-mkinitfs/init.sh +++ b/main/postmarketos-mkinitfs/init.sh @@ -20,8 +20,9 @@ setup_firmware_path setup_mdev setup_dynamic_partitions "${deviceinfo_super_partitions:=}" -mount_subpartitions setup_framebuffer +show_splash "Loading..." +mount_subpartitions run_hooks /etc/postmarketos-mkinitfs/hooks # Always run dhcp daemon/usb networking for now (later this should only @@ -31,7 +32,6 @@ setup_usb_network start_unudhcpd mount_boot_partition /boot -show_splash_loading extract_initramfs_extra /boot/initramfs-extra setup_udev run_hooks /etc/postmarketos-mkinitfs/hooks-extra diff --git a/main/postmarketos-mkinitfs/init_functions.sh b/main/postmarketos-mkinitfs/init_functions.sh index 963aff0b3..2154b9ae6 100644 --- a/main/postmarketos-mkinitfs/init_functions.sh +++ b/main/postmarketos-mkinitfs/init_functions.sh @@ -241,7 +241,7 @@ mount_boot_partition() { partition=$(find_boot_partition) if [ -z "$partition" ]; then echo "ERROR: boot partition not found!" - show_splash /splash-noboot.ppm.gz + show_splash "ERROR: Boot partition not found\\nhttps://postmarketos.org/troubleshooting" loop_forever fi @@ -278,7 +278,7 @@ extract_initramfs_extra() { initramfs_extra="$1" if [ ! -e "$initramfs_extra" ]; then echo "ERROR: initramfs-extra not found!" - show_splash /splash-noinitramfsextra.ppm.gz + show_splash "ERROR: initramfs-extra not found\\nhttps://postmarketos.org/troubleshooting" loop_forever fi echo "Extract $initramfs_extra" @@ -287,7 +287,7 @@ extract_initramfs_extra() { wait_root_partition() { while [ -z "$(find_root_partition)" ]; do - show_splash /splash-norootfs.ppm.gz + show_splash "ERROR: root partition not found\\nhttps://postmarketos.org/troubleshooting" echo "Could not find the rootfs." echo "Maybe you need to insert the sdcard, if your device has" echo "any? Trying again in one second..." @@ -378,6 +378,8 @@ resize_root_partition() { unlock_root_partition() { partition="$(find_root_partition)" if cryptsetup isLuks "$partition"; then + # Make sure the splash doesn't interfere + killall pbsplash 2>/dev/null tried=0 until cryptsetup status root | grep -qwi active; do fde-unlock "$partition" "$tried" @@ -385,13 +387,13 @@ unlock_root_partition() { done ROOT_PARTITION_UNLOCKED=1 # Show again the loading splashscreen - show_splash_loading + show_splash "Loading..." fi } resize_root_filesystem() { if [ "$ROOT_PARTITION_RESIZED" = 1 ]; then - show_splash /splash-resizefs.ppm.gz + show_splash "Resizing filesystem during initial boot..." partition="$(find_root_partition)" touch /etc/mtab # see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673323 type="$(get_partition_type "$partition")" @@ -417,7 +419,7 @@ resize_root_filesystem() { ;; *) echo "WARNING: Can not resize '$type' filesystem ($partition)." ;; esac - show_splash_loading + show_splash "Loading..." fi } @@ -445,7 +447,7 @@ mount_root_partition() { esac if ! [ -e /sysroot/usr ]; then echo "ERROR: unable to mount root partition!" - show_splash /splash-mounterror.ppm.gz + show_splash "ERROR: unable to mount root partition\\nhttps://postmarketos.org/troubleshooting" loop_forever fi } @@ -621,12 +623,12 @@ start_charging_mode() { # Start it once and then start triggerhappy ( charging-sdl -pcf "$fontpath" \ - || show_splash /splash-charging-error.ppm.gz + || show_splash "Charging mode failed" ) & thd --deviceglob /dev/input/event* --triggers /etc/triggerhappy.conf } -# $1: path to ppm.gz file +# $1: Message to show show_splash() { # Skip for non-framebuffer devices # shellcheck disable=SC2154 @@ -634,23 +636,20 @@ show_splash() { echo "NOTE: Skipping framebuffer splashscreen (deviceinfo_no_framebuffer)" return fi + # Disable splash if grep -q PMOS_NOSPLASH /proc/cmdline; then return fi - echo "IMG_ALIGN=CM" >>/tmp/fbsplash.cfg - gzip -c -d "$1" >/tmp/splash.ppm - fbsplash -s /tmp/splash.ppm -i /tmp/fbsplash.cfg -} -show_splash_loading() { - # Allow overriding the default loading splash screen with a - # "splash.ppm.gz" file on the boot partition - if [ -e /boot/splash.ppm.gz ]; then - show_splash /boot/splash.ppm.gz - else - show_splash /splash-loading.ppm.gz - fi + killall pbsplash 2>/dev/null + + while pgrep pbsplash >/dev/null; do + sleep 0.01 + done + + # shellcheck disable=SC2154 + /usr/bin/pbsplash -s /usr/share/pbsplash/pmos-logo-text.svg -b "Linux $(uname -r) | $deviceinfo_codename" -m "$1 " & } set_framebuffer_mode() {