xref: /cloud-hypervisor/scripts/build-custom-image.sh (revision 80b2c98a68d4c68f372f849e8d26f7cae5867000)
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