diff options
author | Johannes Schauer Marin Rodrigues <josch@mister-muffin.de> | 2022-12-22 09:52:41 +0100 |
---|---|---|
committer | Johannes Schauer Marin Rodrigues <josch@mister-muffin.de> | 2022-12-22 11:47:33 +0100 |
commit | d1c39543c259f76720a4d9c173d7d15f6fa753d7 (patch) | |
tree | 3311cb9aa70fafed00c911f1e3054ff863c665e3 | |
parent | bdbae095951d18694ce787436af5643ef46e7f6b (diff) | |
download | debvm-d1c39543c259f76720a4d9c173d7d15f6fa753d7.tar.gz |
give the ext4 image a disk label
- this allows the kernel cmdline and fstab to refer to it by label
instead of by /dev/sda or /dev/vda (depending on whether the disk is
attached to qemu via virtio or not)
- it allows other consumers of the image to detect that this is an
image created by debvm and then treat it accordingly
-rw-r--r-- | README.md | 7 | ||||
-rwxr-xr-x | debvm-create | 4 | ||||
-rwxr-xr-x | debvm-run | 10 |
3 files changed, 15 insertions, 6 deletions
@@ -40,9 +40,10 @@ installed: What is this image format precisely? ==================================== -The image is a sparse ext4 file system image. It contains the root filesystem -of a (Debian) installation including an init system and a kernel. There is no -partition table or bootloader. The following paths are assumed inside: +The image is a sparse ext4 file system image with a disk label "debvm". It +contains the root filesystem of a (Debian) installation including an init +system and a kernel. There is no partition table or bootloader. The following +paths are assumed inside: * `/bin/true` is used to detect the architecture of an image * `/vmlinuz` must be a symbolic link pointing to a regular file containing the kernel. diff --git a/debvm-create b/debvm-create index 11e145c..c44b67d 100755 --- a/debvm-create +++ b/debvm-create @@ -122,7 +122,7 @@ set -- \ "$@" # unless we set up a fstab, / will be read-only -set -- "--customize-hook=echo '/dev/vda / ext4 defaults 0 1' >"'"$1/etc/fstab"' "$@" +set -- "--customize-hook=echo 'LABEL=debvm / ext4 defaults 0 1' >"'"$1/etc/fstab"' "$@" # set up a hostname set -- \ @@ -176,4 +176,4 @@ mmdebstrap "$@" truncate -s "$SIZE" "$IMAGE" /sbin/resize2fs "$IMAGE" -/sbin/tune2fs -i 0 -O extents,uninit_bg,dir_index,has_journal "$IMAGE" +/sbin/tune2fs -L debvm -i 0 -O extents,uninit_bg,dir_index,has_journal "$IMAGE" @@ -46,6 +46,14 @@ done test -f "$IMAGE" || die "image '$IMAGE' not found" test -s "$IMAGE" || die "image '$IMAGE' is empty" +if ! printf '\123\357' | cmp --bytes=2 "$IMAGE" - 1080; then + die "image '$IMAGE' is not in ext4 format" +fi + +if ! printf 'debvm\000' | cmp --bytes=6 "$IMAGE" - 1144; then + die "image '$IMAGE' was not created by debvm-create (wrong disk label)" +fi + cleanup() { set +x test -n "$KERNELTMP" && rm -f "$KERNELTMP" @@ -78,7 +86,7 @@ INITRDNAME=$(/sbin/debugfs "$IMAGE" -R "stat initrd.img" | sed 's/Fast link dest test -n "$KERNELNAME" || die "failed to discover kernel image" test -n "$INITRDNAME" || die "failed to discover initrd image" -KERNEL_CMDLINE="root=/dev/vda rw" +KERNEL_CMDLINE="root=LABEL=debvm rw" NETDEV="user,id=net0" set -- \ |