requirements
    which kvm
    man kvm
    mkdir -p /etc/qemu/
    vi /etc/qemu/bridge.conf
    allow guestbr0
disk skeleton
guest=bookworm1
mkdir -p /data/guests/$guest/ cd /data/guests/$guest/
–either– skeleton sparse-file
    dd if=/dev/zero of=$guest.ext4 bs=1G count=0 seek=10
    mkfs.ext4 $guest.ext4
    mkdir lala/ 
    mount -o loop $guest lala/
bootstrap
    # use same mirror as from host system
    cat /etc/apt/sources.list
    mirror=`cat /etc/apt/sources.list | awk '{print $2}'`
    apt install lsb-release debootstrap
    # use same release as host system
    lsb_release -cs
    time debootstrap --arch=amd64 `lsb_release -cs 2>/dev/null` lala/ $mirror
post-bootstrap
    cat > lala/etc/fstab <<-EOF # override
    /dev/vda1 / ext4 defaults 0 0
    proc /proc proc defaults 0 0
    tmpfs /tmp tmpfs rw,nodev,nosuid,noatime,relatime 0 0
    devpts /dev/pts devpts gid=5,mode=620 0 0
    EOF
setup the network
vi lala/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
    address x.x.x.x/xx
    gateway x.x.x.x
unlock the root account
chroot lala/ passwd root ^D
is host kernel suitable for serial output?
    ls -lhF /boot/config*
    grep CONFIG_VIRTIO_CONSOLE /boot/config-6.1.0-32-cloud-amd64
    grep -i virtio /boot/config-6.1.0-32-cloud-amd64
get guest kernel modules ready
mkdir lala/lib/modules/ cp -R /lib/modules/6.1.0-32-cloud-amd64/ lala/lib/modules/
fortunately here we’re using same kernel on both sides – anyhow that would be executed at boot-time
chroot lala/ depmod -a
and you’re good to go
umount -R lala/
rmdir lala/
    kvm -nic model=help
    screen -S consoles
    vdisk=/root/guest1.ext4
    vdisk=/root/guest2.ext4
    vdisk=/root/guest3.ext4
    bridge=guestbr0
    # we are lucking we're doing a poc using nested virtualization here...
    ls -lhF /boot/vmlinuz*
    ls -lhF /boot/initrd*
    kernel=/boot/vmlinuz-6.1.0-32-cloud-amd64
    initrd=/boot/initrd.img-6.1.0-32-cloud-amd64
    # beware the path here needs to be /dev/vda not /dev/vda1
    kvm --enable-kvm -m 256 \
            -display curses -serial pty \
            -drive file=$vdisk,media=disk,if=virtio,format=raw \
            -kernel $kernel -initrd $initrd -append "ro root=/dev/vda net.ifnames=0 biosdevname=0 mitigations=off" \
            -nic bridge,br=guestbr0,model=virtio-net-pci
    # init=/bin/bash
    # ,mac=xx:xx:xx:xx:xx:xx
            # -overcommit mem-lock=off \
            # -display none -nographic -serial pty \
            # -device virtio-serial-pci,id=serial0 \