1#!/bin/bash 2# shellcheck disable=SC2046,SC2086,SC2155 3 4set -ex 5 6#VFIO_CUSTOM_IMAGE="-vfio" 7 8mkdir -p custom-image 9pushd custom-image || exit 10wget -N https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img 11export IMAGE_NAME_BASE=jammy-server-cloudimg-amd64 12qemu-img convert -p -f qcow2 -O raw $IMAGE_NAME_BASE.img $IMAGE_NAME_BASE.raw 13if [ -n "$VFIO_CUSTOM_IMAGE" ]; then 14 qemu-img resize -f raw "$IMAGE_NAME_BASE.raw" 5G 15 sudo sgdisk -e "$IMAGE_NAME_BASE.raw" 16 sudo parted "$IMAGE_NAME_BASE.raw" resizepart 1 5369MB 17fi 18mkdir -p mnt 19export ROOTFS=/dev/mapper/$(sudo kpartx -v -a $IMAGE_NAME_BASE.raw | grep "p1 " | cut -f 3 -d " ") 20if [ -n "$VFIO_CUSTOM_IMAGE" ]; then 21 sudo e2fsck -f "$ROOTFS" 22 sudo resize2fs "$ROOTFS" 23fi 24sudo mount $ROOTFS mnt 25sudo mv mnt/etc/resolv.conf mnt/etc/resolv.conf.backup 26 27touch extra_commands 28 29if [ -n "$VFIO_CUSTOM_IMAGE" ]; then 30 cat >extra_commands <<EOF 31 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb 32 sudo dpkg -i cuda-keyring_1.1-1_all.deb 33 sudo apt-get update 34 sudo apt-get -y install cuda-drivers 35EOF 36fi 37 38cat >script <<EOF 39#!/bin/bash 40set -xe 41mount -t proc proc /proc 42mount -t devpts devpts /dev/pts 43echo "nameserver 1.1.1.1" > /etc/resolv.conf 44export DEBIAN_FRONTEND=noninteractive 45apt update 46apt install -y fio iperf iperf3 socat stress cpuid tpm2-tools kexec-tools 47apt remove -y --purge snapd pollinate 48source extra_commands 49umount /dev/pts 50umount /proc 51history -c 52exit 53EOF 54 55sudo cp script extra_commands mnt 56sudo chmod +x mnt/script 57sudo chroot mnt ./script 58sudo mv mnt/etc/resolv.conf.backup mnt/etc/resolv.conf 59sudo umount mnt 60sudo kpartx -d $IMAGE_NAME_BASE.raw 61cp $IMAGE_NAME_BASE.raw $IMAGE_NAME_BASE-custom$VFIO_CUSTOM_IMAGE-$(date "+%Y%m%d")-0.raw 62qemu-img convert -p -f raw -O qcow2 $IMAGE_NAME_BASE-custom$VFIO_CUSTOM_IMAGE-$(date "+%Y%m%d")-0.raw $IMAGE_NAME_BASE-custom$VFIO_CUSTOM_IMAGE-$(date "+%Y%m%d")-0.qcow2 63popd || exit 64