]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core.git/commitdiff
initramfs-framework: move storage mounts to actual rootfs
authorMuhammad Hamza <Muhammad_Hamza@mentor.com>
Fri, 17 Jun 2022 05:50:22 +0000 (10:50 +0500)
committerSteve Sakoman <steve@sakoman.com>
Wed, 29 Jun 2022 15:15:49 +0000 (05:15 -1000)
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 <awais_belal@mentor.com>
Signed-off-by: Muhammad Hamza <muhammad_hamza@mentor.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
(cherry picked from commit ec53ffd01972d1be2d6a28de828b3f0b80dc1e61)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/recipes-core/initrdscripts/initramfs-framework/finish

index 717383ebac830fc8ce37ee45d8c4f389557567a5..dee3ab3387e4ebf5b7aa737821af18eb69c74f75 100755 (executable)
@@ -14,6 +14,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