From e14dbeb99dc80832252033b9ed81b85b13bef5c4 Mon Sep 17 00:00:00 2001 From: Andrew Donnellan Date: Mon, 15 Dec 2025 14:34:12 +1100 Subject: tools/create-image.sh: add option to specify output prefix Add an option, -o / --output, to specify a prefix used for the name of the directory where debootstrap generates the system, and the final disk image and SSH key filenames. The default remains using the distro release codename. For now, ban the use of slashes, spaces, . and .. as output names. Signed-off-by: Andrew Donnellan --- tools/create-image.sh | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'tools/create-image.sh') diff --git a/tools/create-image.sh b/tools/create-image.sh index a760ff9d1..a489ce037 100755 --- a/tools/create-image.sh +++ b/tools/create-image.sh @@ -29,9 +29,12 @@ display_help() { echo " -d, --distribution Set on which Debian distribution to create (default: $RELEASE)" echo " -f, --feature Check what packages to install in the image, options are minimal, full (default: $FEATURE)" echo " -h, --help Display help message" + echo " -o, --output Set output prefix (default: value of --distribution)" echo " -p, --add-perf Add perf support. Requires environment variable \$KERNEL pointing to kernel source tree" echo " -s, --seek Image size in MB (default: $(($SEEK + 1)))" echo + echo "The chroot will be created in ./, the final image will be created in ./.img, and SSH keys will be named" + echo "./.id_rsa[.pub]." } while true; do @@ -56,6 +59,15 @@ while true; do FEATURE=$2 shift 2 ;; + -o | --output) + if [[ "$2" == *"/"* || "$2" == *" "* || "$2" == "." || "$2" == ".." ]] + then + echo "Error: output prefix cannot contain /, spaces, or be . or .." + exit 1 + fi + OUTPUT="$2" + shift 2 + ;; -p | --add-perf) PERF=true shift 1 @@ -127,7 +139,7 @@ if [ $FEATURE = "full" ]; then PREINSTALL_PKGS=$PREINSTALL_PKGS","$ADD_PACKAGE fi -DIR=$RELEASE +DIR="${OUTPUT:-$RELEASE}" sudo rm -rf $DIR sudo mkdir -p $DIR sudo chmod 0755 $DIR @@ -174,9 +186,9 @@ echo 'binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0' | sudo tee echo -en "127.0.0.1\tlocalhost\n" | sudo tee $DIR/etc/hosts echo "nameserver 8.8.8.8" | sudo tee -a $DIR/etc/resolv.conf echo "syzkaller" | sudo tee $DIR/etc/hostname -ssh-keygen -f $RELEASE.id_rsa -t rsa -N '' +ssh-keygen -f $DIR.id_rsa -t rsa -N '' sudo mkdir -p $DIR/root/.ssh/ -cat $RELEASE.id_rsa.pub | sudo tee $DIR/root/.ssh/authorized_keys +cat $DIR.id_rsa.pub | sudo tee $DIR/root/.ssh/authorized_keys # Add perf support if [ $PERF = "true" ]; then @@ -195,9 +207,9 @@ fi echo 'ATTR{name}=="vim2m", SYMLINK+="vim2m"' | sudo tee -a $DIR/etc/udev/rules.d/50-udev-default.rules # Build a disk image -dd if=/dev/zero of=$RELEASE.img bs=1M seek=$SEEK count=1 -sudo mkfs.ext4 -F $RELEASE.img +dd if=/dev/zero of=$DIR.img bs=1M seek=$SEEK count=1 +sudo mkfs.ext4 -F $DIR.img sudo mkdir -p /mnt/$DIR -sudo mount -o loop $RELEASE.img /mnt/$DIR +sudo mount -o loop $DIR.img /mnt/$DIR sudo cp -a $DIR/. /mnt/$DIR/. sudo umount /mnt/$DIR -- cgit mrf-deployment