Vmm /

Create Debian ISO for VMM

To use VMM, the ISO image you provide must support the serial console. In this guide, we download and modify the debian ISO to boot from serial console.

Download and verify ISO

$ ftp https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.1.0-amd64-netinst.iso
$ ftp https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS
$ ftp https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign

If gpg is not already installed:

$ doas pkg_add gnupg

then:

$ gpg --keyserver keyserver.ubuntu.com --recv-keys DF9B9C49EAA9298432589D76DA87E80D6294BE9B
$ gpg --verify SHA512SUMS.sign SHA512SUMS
gpg: Signature made Sat Aug 14 15:22:04 2021 CDT
gpg:                using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B
gpg: Good signature from "Debian CD signing key <debian-cd@lists.debian.org>" [unknown] 
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: DF9B 9C49 EAA9 2984 3258  9D76 DA87 E80D 6294 BE9B
# sha512 debian-11.0.0-amd64-netinst.iso                                 
SHA512 (debian-11.1.0-amd64-netinst.iso) = 5f6aed67b159d7ccc1a90df33cc8a314aa278728a6f50707ebf10c02e46664e383ca5fa19163b0a1c6a4cb77a39587881584b00b45f512b4a470f1138eaa1801
# grep debian-11.1.0-amd64-netinst.iso SHA512SUMS 
5f6aed67b159d7ccc1a90df33cc8a314aa278728a6f50707ebf10c02e46664e383ca5fa19163b0a1c6a4cb77a39587881584b00b45f512b4a470f1138eaa1801  debian-11.1.0-amd64-netinst.iso

The two checksums must match perfectly or else you should stop installation.

We run these steps as root:

# vnconfig vnd0 debian-11.1.0-amd64-netinst.iso
# mkdir old new
# mount -t cd9660 /dev/vnd0c old
# cp -R old/* new
# cp -R old/.disk new
# umount old
# vnconfig -u vnd0

Make Changes

Here are the diffs of the changes we make:

# diff -ru {old,new}/isolinux/             
diff -ru old/isolinux/adtxt.cfg new/isolinux/adtxt.cfg               
--- old/isolinux/adtxt.cfg      Sat Aug 14 05:09:00 2021
+++ new/isolinux/adtxt.cfg      Sat Aug 21 10:52:36 2021
@@ -1,9 +1,9 @@
 label expert    
        menu label E^xpert install
        kernel /install.amd/vmlinuz                                                     
-       append priority=low vga=788 initrd=/install.amd/initrd.gz --- 
+       append priority=low vga=normal initrd=/install.amd/initrd.gz --- console=ttyS0,1
15200n8        
 include rqtxt.cfg
 label auto                                 
        menu label ^Automated install
        kernel /install.amd/vmlinuz                                                     
-       append auto=true priority=critical vga=788 initrd=/install.amd/initrd.gz --- qui
et    
+       append auto=true priority=critical vga=normal initrd=/install.amd/initrd.gz --- 
console=ttyS0,115200n8 
diff -ru old/isolinux/isolinux.cfg new/isolinux/isolinux.cfg
--- old/isolinux/isolinux.cfg   Sat Aug 14 05:09:00 2021
+++ new/isolinux/isolinux.cfg   Sat Aug 21 10:51:41 2021
@@ -1,5 +1,7 @@
 # D-I config version 2.0
 # search path for the c32 support libraries (libcom32, libutil etc.)
+serial 0 115200
+console 0
 path 
 include menu.cfg
 default vesamenu.c32
diff -ru old/isolinux/txt.cfg new/isolinux/txt.cfg
--- old/isolinux/txt.cfg        Sat Aug 14 05:09:00 2021
+++ new/isolinux/txt.cfg        Sat Aug 21 10:51:56 2021
@@ -1,4 +1,4 @@
 label install
        menu label ^Install
        kernel /install.amd/vmlinuz
-       append vga=788 initrd=/install.amd/initrd.gz --- quiet 
+       append vga=normal initrd=/install.amd/initrd.gz --- console=ttyS0,115200n8

Generate ISO

# pkg_add xorriso
# xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes -partition_offset 16 -A "Debian/VMM" -b isolinux/isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o debian-11.1.0-vmm.iso  ./new

VMM

In /etc/vm.conf, we update the cdrom image:

vm "username" {
        owner username
        memory 1024M
        cdrom "/home/iso/debian-11.1.0-vmm.iso"
        disk /home/username/username.qcow2
        interface { 
                locked lladdr aa:bb:cc:dd:ee:ff
                switch "switch0"
        }
}