summaryrefslogtreecommitdiffstats
path: root/mmdebstrap-autopkgtest-build-qemu
diff options
context:
space:
mode:
Diffstat (limited to 'mmdebstrap-autopkgtest-build-qemu')
-rwxr-xr-xmmdebstrap-autopkgtest-build-qemu33
1 files changed, 24 insertions, 9 deletions
diff --git a/mmdebstrap-autopkgtest-build-qemu b/mmdebstrap-autopkgtest-build-qemu
index 19175e5..2d1b803 100755
--- a/mmdebstrap-autopkgtest-build-qemu
+++ b/mmdebstrap-autopkgtest-build-qemu
@@ -261,9 +261,21 @@ case "$ARCHITECTURE" in
;;
esac
+test_installed() {
+ pkg="$1"
+ if [ "$(dpkg-query -f '${db:Status-Status}' -W "$pkg")" != installed ]; then
+ die "please install $pkg"
+ fi
+}
+
+for pkg in autopkgtest dosfstools e2fsprogs fdisk mount mtools passwd uidmap; do
+ test_installed "$pkg"
+done
+
if test "$(dpkg-query -f '${db:Status-Status}' -W binutils-multiarch)" = installed; then
GNU_PREFIX=
else
+ test_installed dpkg-dev
GNU_ARCHITECTURE="$(dpkg-architecture "-a$ARCHITECTURE" -qDEB_HOST_GNU_TYPE)"
GNU_PREFIX="$GNU_ARCHITECTURE-"
GNU_SUFFIX="-$(echo "$GNU_ARCHITECTURE" | tr _ -)"
@@ -277,11 +289,7 @@ case $arches in
*) die "enable $ARCHITECTURE by running: sudo dpkg --add-architecture $ARCHITECTURE && sudo apt update" ;;
esac
-for pkg in autopkgtest dosfstools e2fsprogs fdisk mount mtools passwd "systemd-boot-efi:$ARCHITECTURE" uidmap; do
- if [ "$(dpkg-query -f '${db:Status-Status}' -W "$pkg")" != installed ]; then
- die "please install $pkg"
- fi
-done
+test_installed "systemd-boot-efi:$ARCHITECTURE"
BOOTSTUB="/usr/lib/systemd/boot/efi/linux${EFIIMG#boot}.stub"
@@ -308,12 +316,15 @@ FAT_SIZE_SECTORS=$((1024*254))
# - users who prefer qcow2 get to choose to run it themselves with their own
# custom options like compression
#
+# --map-users=auto --map-user=0 => 0:$UID:1 + 1:$SUBUIDBASE:65535
+# --map-users=auto --map-user=65536 => 0:$SUBUIDBASE:65536 + 65536:$UID:1
+#
# Make the image writeable to the first subgid. mmdebstrap will map this gid to
# the root group. unshare instead will map the current gid to 0 and the first
# subgid to 1. Therefore mmdebstrap will be able to write to the image.
rm -f "$IMAGE"
: >"$IMAGE"
-unshare -U -r --map-groups=auto chown 0:1 "$IMAGE"
+unshare --map-user=0 --map-group=0 --map-groups=auto chown 0:1 "$IMAGE"
chmod 0660 "$IMAGE"
# Make sure that the unshared user is able to access the file.
@@ -350,13 +361,17 @@ fi
EXT4_OFFSET_BYTES=$(( (FAT_OFFSET_SECTORS + FAT_SIZE_SECTORS) * 512))
EXT4_OPTIONS="offset=$EXT4_OFFSET_BYTES,assume_storage_prezeroed=1"
+
+# the --no-mtab option to mount is a workaround for https://github.com/util-linux/util-linux/issues/2981
+# revert 8c0ddc32660ca4e98c988966251f9c05d6bcccef once it is no longer needed
set -- "$@" \
"--customize-hook=download vmlinuz '$WORKDIR/kernel'" \
"--customize-hook=download initrd.img '$WORKDIR/initrd'" \
- '--customize-hook=mount --bind "$1" "$1/mnt"' \
- '--customize-hook=mount --bind "$1/mnt/mnt" "$1/mnt/dev"' \
+ '--customize-hook=mount --no-mtab --bind "$1" "$1/mnt"' \
+ '--customize-hook=mount --no-mtab --bind "$1/mnt/mnt" "$1/mnt/dev"' \
'--customize-hook=/sbin/mkfs.ext4 -d "$1/mnt" -L autopkgtestvm -E '"'$EXT4_OPTIONS' '$IMAGE' '$SIZE'" \
- '--customize-hook=umount --lazy "$1/mnt"' \
+ '--customize-hook=umount --lazy --no-mtab "$1/mnt/dev"' \
+ '--customize-hook=umount --lazy --no-mtab "$1/mnt"' \
"$RELEASE" \
/dev/null