init-live.sh: fix media automount failed after booting from usb-drive
cover init-live.sh: fix media automount failed after booting from usb-drive
The following changes since commit 5cb59cc6910d8f3165528c4a71e29e4de897d242:
yocto-bsp: re-enable AutoAddDevices in xorg.conf for generated BSPs (2013-05-29 22:25:41 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib hongxu/fix-init-live
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=hongxu/fix-init-live
Hongxu Jia (1):
init-live.sh: fix media automount failed after booting from usb-drive
meta/recipes-core/initrdscripts/files/init-live.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
Signature · 1 line
1.7.10.4
PATCH 1/1 init-live.sh: fix media automount failed after booting from usb-drive
1, This issue happens to BSP only.
After a BSP board is booted with Yocto linux from USB drive, "cat /proc/mounts" shows:
.../dev/sda3 /media/sda3 ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sda1 /media/sda1 ext3 rw,relatime,errors=continue,barrier=1,data=ordered 0 0 /dev/sda2 /media/sda2 ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 0 0
...
but actually the directory /media/sda1 doesn't exist at all, "df" shows:
...
df: /media/sda3: No such file or directory
df: /media/sda1: No such file or directory
df: /media/sda2: No such file or directory
...
2, This is because the mount data comes from proc setup during early boot before the change root, which then uses a different root filesystem, the media is not in the new root filesystem.
3, During early boot before switch_root, use `mount --move' to move all medias to the new root filesystem could also fix this issue.
[YOCTO #2064]
[YOCTO #3705]
--- meta/recipes-core/initrdscripts/files/init-live.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
meta/recipes-core/initrdscripts/files/init-live.sh +4 -2
@@ -79,11 +79,13 @@ boot_live_root() { # Move the mount points of some filesystems over to # the corresponding directories under the real root filesystem. + for dir in `awk '/\/dev.* \/media/{print $2}' /proc/mounts`; do + mkdir -p ${ROOT_MOUNT}/$dir + mount -n --move $dir ${ROOT_MOUNT}/$dir + done mount -n --move /proc ${ROOT_MOUNT}/proc mount -n --move /sys ${ROOT_MOUNT}/sys mount -n --move /dev ${ROOT_MOUNT}/dev - # Move /media/$i over to the real root filesystem - mount -n --move /media/$i ${ROOT_MOUNT}/media/realroot cd $ROOT_MOUNT exec switch_root -c /dev/console $ROOT_MOUNT /sbin/init
Signature · 1 line
1.7.10.4