Bind mount the entire hierarchy for /dev as recommended in Gentoo's chroot
meta/classes/buildchroot.bbclass | 3 ++-
meta/classes/image.bbclass | 2 +-
meta/classes/isar-bootstrap-helper.bbclass | 3 ++-
meta/classes/isar-image.bbclass | 2 +-
meta/recipes-core/isar-bootstrap/isar-bootstrap.inc | 5 +++--
5 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/meta/classes/buildchroot.bbclass b/meta/classes/buildchroot.bbclass
index 34b7f59..a8964c6 100644
--- a/meta/classes/buildchroot.bbclass
+++ b/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
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index d033cf5..01e045d 100644
--- a/meta/classes/image.bbclass
+++ b/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
diff --git a/meta/classes/isar-bootstrap-helper.bbclass b/meta/classes/isar-bootstrap-helper.bbclass
index e6a46ce..1d3e5f6 100644
--- a/meta/classes/isar-bootstrap-helper.bbclass
+++ b/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
diff --git a/meta/classes/isar-image.bbclass b/meta/classes/isar-image.bbclass
index e0508be..703b3e7 100644
--- a/meta/classes/isar-image.bbclass
+++ b/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"
}
diff --git a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc b/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
index 21454b0..dfd649e 100644
--- a/meta/recipes-core/isar-bootstrap/isar-bootstrap.inc
+++ b/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
--
2.11.0