From: Muhammad Hamza Date: Fri, 17 Jun 2022 05:50:22 +0000 (+0500) Subject: initramfs-framework: move storage mounts to actual rootfs X-Git-Tag: lucaceresoli/bug-15201-perf-libtraceevent-missing~3842 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ec53ffd01972d1be2d6a28de828b3f0b80dc1e61;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git initramfs-framework: move storage mounts to actual rootfs Operations such as mkfs fail on devices that are not switched to the actual rootfs before switch_root is called. The kernel interprets these devices as still being used even after unmounting and errors such as below are seen when the target is fully booted root@v1000:~# umount /dev/sdb1 root@v1000:~# mkfs.ext4 /dev/sdb1 mke2fs 1.43.8 (1-Jan-2018) /dev/sdb1 contains a ext4 file system last mounted on Wed Nov 28 07:33:54 2018 Proceed anyway? (y,N) y /dev/sdb1 is apparently in use by the system; will not make a filesystem here! Signed-off-by: Awais Belal Signed-off-by: Muhammad Hamza Signed-off-by: Alexandre Belloni --- diff --git a/meta/recipes-core/initrdscripts/initramfs-framework/finish b/meta/recipes-core/initrdscripts/initramfs-framework/finish index f08a9208675..ac0de9f996f 100755 --- a/meta/recipes-core/initrdscripts/initramfs-framework/finish +++ b/meta/recipes-core/initrdscripts/initramfs-framework/finish @@ -26,6 +26,15 @@ finish_run() { info "Switching root to '$ROOTFS_DIR'..." + debug "Moving basic mounts onto rootfs" + for dir in `awk '/\/dev.* \/run\/media/{print $2}' /proc/mounts`; do + # Parse any OCT or HEX encoded chars such as spaces + # in the mount points to actual ASCII chars + dir=`printf $dir` + mkdir -p "${ROOTFS_DIR}/media/${dir##*/}" + mount -n --move "$dir" "${ROOTFS_DIR}/media/${dir##*/}" + done + debug "Moving /dev, /proc and /sys onto rootfs..." mount --move /dev $ROOTFS_DIR/dev mount --move /proc $ROOTFS_DIR/proc