diff --git a/main/postmarketos-mkinitfs/APKBUILD b/main/postmarketos-mkinitfs/APKBUILD index 92a7af174..050fb3a88 100644 --- a/main/postmarketos-mkinitfs/APKBUILD +++ b/main/postmarketos-mkinitfs/APKBUILD @@ -1,5 +1,5 @@ pkgname=postmarketos-mkinitfs -pkgver=0.12.2 +pkgver=0.12.3 pkgrel=0 pkgdesc="Tool to generate initramfs images for postmarketOS" url="https://postmarketos.org" @@ -39,8 +39,8 @@ check() { } sha512sums="5037cb7285bb7c0c40ca9e6df332d882ef9a8b379756c785f921e062dab1b7e7f3139d00897f69323a916d709ced4297fea8cbd3a13ebae575b873ec9e2cbfae 00-default.modules -1d49db8a48ad513cc548b8a0ea23cc64518e71c93863155b4e9d2271fb46090506331c03d6955d693c8568c248ecc76b218efe4a6f6bba57c41c5f6d775dc61b init.sh.in -ae7a7538f62616b9ee8b56b39531782c7d61ecb1679677d6bbe0f5e3ca228941bf2f340fead1d1abd971df30ff3059428d8f759660f53ec946ad8026e0e59c4b init_functions.sh +995b4d15e6b248d55d53221ec52674e62d74f0be539ac2ab26d4279544e2bece7aa58810dd831e1b2f08f0520fc9a8dff3ad4df52a46ef73f61e462f74f68c48 init.sh.in +683b1784cc6572717dd805caabea38fac1780b03ff3540b888aab4fd91ccae404634874e6c9fa39f723186821a849844c6df1235bdcbf47b2de6b7f483c42178 init_functions.sh 7201d4640a3e9ead8a47ffd9916b068476b7d950760a84c37e02268c942d49896bc986da6bdee27e832639c90775354d68046a6475205d8d1da995b068120d8f mkinitfs.sh 5105fcc5f2094009937b378c8d383270f4fcd0133d0e60268806a7d09966613f4ebfa93d7e1b90b5d83d0c5b1664a0b3fc7562e52cc1e0ca6cd54ff442b03e84 mkinitfs_functions.sh c7a3c33daeb12b33ac72207191941c4d634f15c22958273b52af381a70ebaba1d3a9299483f0c447d9e66c560151fe7b9588bb4bbef2c8914f83185984ee4622 mkinitfs_test.sh" diff --git a/main/postmarketos-mkinitfs/init.sh.in b/main/postmarketos-mkinitfs/init.sh.in index baaa29f04..64737a851 100644 --- a/main/postmarketos-mkinitfs/init.sh.in +++ b/main/postmarketos-mkinitfs/init.sh.in @@ -35,7 +35,7 @@ show_splash /splash-loading.ppm.gz setup_usb_network start_udhcpd -mount_boot_partition +mount_boot_partition /boot extract_initramfs_extra @INITRAMFS_EXTRA@ start_charging_mode wait_root_partition @@ -44,12 +44,15 @@ unlock_root_partition resize_root_filesystem mount_root_partition +# Mount boot partition into sysroot, so OpenRC doesn't need to do it (#664) +umount /boot +mount_boot_partition /sysroot/boot "rw" + init="/sbin/init" setup_bootchart2 # Switch root killall telnetd mdev msm-fb-refresher 2>/dev/null -umount /boot umount /proc umount /sys umount /dev/pts diff --git a/main/postmarketos-mkinitfs/init_functions.sh b/main/postmarketos-mkinitfs/init_functions.sh index a985a3fe8..5fbfe7be5 100644 --- a/main/postmarketos-mkinitfs/init_functions.sh +++ b/main/postmarketos-mkinitfs/init_functions.sh @@ -164,6 +164,11 @@ find_boot_partition() { findfs LABEL="pmOS_boot" } +# $1: path +# $2: set to "rw" for read-write +# Mount the boot partition. It gets mounted twice, first at /boot (ro), then at +# /sysroot/boot (rw), after root has been mounted at /sysroot, so we can +# switch_root to /sysroot and have the boot partition properly mounted. mount_boot_partition() { partition=$(find_boot_partition) if [ -z "$partition" ]; then @@ -171,8 +176,17 @@ mount_boot_partition() { show_splash /splash-noboot.ppm.gz loop_forever fi - echo "Mount boot partition ($partition)" - mount -r "$partition" /boot + + if [ "$2" = "rw" ]; then + mount_opts="" + echo "Mount boot partition ($partition) to $1 (read-write)" + else + mount_opts="-o ro" + echo "Mount boot partition ($partition) to $1 (read-only)" + fi + + # shellcheck disable=SC2086 + mount $mount_opts "$partition" "$1" } # $1: initramfs-extra path @@ -257,7 +271,7 @@ resize_root_filesystem() { mount_root_partition() { partition="$(find_root_partition)" - echo "Mount root partition ($partition)" + echo "Mount root partition ($partition) to /sysroot (read-only)" mount -t ext4 -o ro "$partition" /sysroot if ! [ -e /sysroot/usr ]; then echo "ERROR: unable to mount root partition!"