Browse Source

buildchroot+bootstrap: rbind mount for /dev

Bind mount the entire hierarchy for /dev as recommended in Gentoo's chroot
setup guide.

Suggested-by: Henning Schild <henning.schild@siemens.com>
Signed-off-by: Cedric Hombourger <Cedric_Hombourger@mentor.com>
Cedric Hombourger 6 years ago
parent
commit
e0feb7d

+ 2 - 1
meta/classes/buildchroot.bbclass

@@ -27,7 +27,8 @@ buildchroot_do_mounts() {
         if ! grep -q ${BUILDCHROOT_DIR}/isar-apt /proc/mounts; then
             mount --bind ${REPO_ISAR_DIR}/${DISTRO} ${BUILDCHROOT_DIR}/isar-apt
             mount --bind ${DL_DIR} ${BUILDCHROOT_DIR}/downloads
-            mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${BUILDCHROOT_DIR}/dev
+            mount --rbind /dev ${BUILDCHROOT_DIR}/dev
+            mount --make-rslave ${BUILDCHROOT_DIR}/dev
             mount -t proc none ${BUILDCHROOT_DIR}/proc
         fi
 

+ 1 - 1
meta/classes/image.bbclass

@@ -108,7 +108,7 @@ do_populate_sdk() {
     # Purge apt cache to make image slimmer
     sudo rm -rf ${SDKCHROOT_DIR}/rootfs/var/cache/apt/*
 
-    sudo umount ${SDKCHROOT_DIR}/rootfs/dev || true
+    sudo umount -R ${SDKCHROOT_DIR}/rootfs/dev || true
     sudo umount ${SDKCHROOT_DIR}/rootfs/proc || true
 
     # Create SDK archive

+ 2 - 1
meta/classes/isar-bootstrap-helper.bbclass

@@ -103,7 +103,8 @@ setup_root_file_system() {
         sudo mount --bind ${REPO_BASE_DIR} ${ROOTFSDIR}/base-apt
     fi
 
-    sudo mount -t devtmpfs -o mode=0755,nosuid devtmpfs $ROOTFSDIR/dev
+    sudo mount --rbind /dev ${ROOTFSDIR}/dev
+    sudo mount --make-rslave ${ROOTFSDIR}/dev
     sudo mount -t proc none $ROOTFSDIR/proc
 
     # Refresh /etc/resolv.conf

+ 1 - 1
meta/classes/isar-image.bbclass

@@ -59,7 +59,7 @@ isar_image_cleanup() {
               -maxdepth 1 -name 'qemu-*-static' -type f -delete
     sudo umount -l ${IMAGE_ROOTFS}/isar-apt
     sudo rmdir ${IMAGE_ROOTFS}/isar-apt
-    sudo umount -l ${IMAGE_ROOTFS}/dev
+    sudo umount -R -l ${IMAGE_ROOTFS}/dev
     sudo umount -l ${IMAGE_ROOTFS}/proc
     sudo rm -f "${IMAGE_ROOTFS}/etc/apt/apt.conf.d/55isar-fallback.conf"
 }

+ 3 - 2
meta/recipes-core/isar-bootstrap/isar-bootstrap.inc

@@ -183,7 +183,7 @@ isar_bootstrap() {
         set -e
         if [ ! -e "${DEPLOY_ISAR_BOOTSTRAP}" ]; then
             if [ -e "${ROOTFSDIR}" ]; then
-               umount -l "${ROOTFSDIR}/dev" || true
+               umount -R -l "${ROOTFSDIR}/dev" || true
                umount -l "${ROOTFSDIR}/proc" || true
                rm -rf "${ROOTFSDIR}"
             fi
@@ -243,7 +243,8 @@ isar_bootstrap() {
             "${ROOTFSDIR}/chroot-setup.sh" "setup" "${ROOTFSDIR}"
 
             # update APT
-            mount -t devtmpfs -o mode=0755,nosuid devtmpfs ${ROOTFSDIR}/dev
+            mount --rbind /dev ${BUILDCHROOT_DIR}/dev
+            mount --make-rslave ${BUILDCHROOT_DIR}/dev
             mount -t proc none ${ROOTFSDIR}/proc
 
             export DEBIAN_FRONTEND=noninteractive