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