Vmm /

Create Devuan ISO for VMM

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

Download and verify ISO

$ ftp https://mirror.leaseweb.com/devuan/devuan_beowulf/installer-iso/devuan_beowulf_3.1.1_amd64_netinstall.iso
$ ftp https://mirror.leaseweb.com/devuan/devuan_beowulf/installer-iso/SHA256SUMS
$ ftp https://mirror.leaseweb.com/devuan/devuan_beowulf/installer-iso/SHA256SUMS.asc

If gpg is not already installed:

$ doas pkg_add gnupg
$ gpg --keyserver keyserver.ubuntu.com --recv-keys E93D7167A4F5FA9E9FED497770285BA5CF280BA4
gpg: key 70285BA5CF280BA4: public key "Ralph Ronnquist (rrq) <ralph.ronnquist@gmail.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1
$ gpg --verify SHA256SUMS.asc SHA256SUMS
gpg: Signature made Fri Mar 26 17:50:56 2021 CDT
gpg:                using RSA key E93D7167A4F5FA9E9FED497770285BA5CF280BA4
gpg: Good signature from "Ralph Ronnquist (rrq) <ralph.ronnquist@gmail.com>" [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: E93D 7167 A4F5 FA9E 9FED  4977 7028 5BA5 CF28 0BA4
$ sha256 devuan_beowulf_3.1.1_amd64_netinstall.iso
SHA256 (devuan_beowulf_3.1.1_amd64_netinstall.iso) = 1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b
$ grep devuan_beowulf_3.1.1_amd64_netinstall.iso SHA256SUMS
1723cbbeb1aee26a54e1370b688e7dc03921402348d2a60086c58c18cd9cf24b  devuan_beowulf_3.1.1_amd64_netinstall.iso

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

We run these steps as root:

# vnconfig vnd0 devuan_beowulf_3.1.1_amd64_netinstall.iso
# mkdir old new
# mount /dev/vnd0c old
## (if this doesn't work, use mount_cd9660)
# cp -R old/* new
# cp -R old/.disk new
# umount old
# vnconfig -u vnd0

Make Changes (on Beowulf)

Here are the diffs of the changes we make:

jrmu# diff -ru {old,new}/isolinux/
diff -ru old/isolinux/isolinux.cfg new/isolinux/isolinux.cfg
--- old/isolinux/isolinux.cfg   Mon Feb  1 11:57:37 2021
+++ new/isolinux/isolinux.cfg   Sun Aug 22 00:34:12 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
 include menu.cfg
 default vesamenu.c32
diff -ru old/isolinux/txt.cfg new/isolinux/txt.cfg
--- old/isolinux/txt.cfg        Mon Feb  1 11:57:37 2021
+++ new/isolinux/txt.cfg        Sun Aug 22 00:35:37 2021
@@ -2,11 +2,11 @@
 label live
   menu label ^Install Ubuntu Server
   kernel /casper/vmlinuz
-  append   initrd=/casper/initrd quiet  ---
+  append vga=normal initrd=/casper/initrd --- console=ttyS0,115200n8
 label hwe-live
   menu label ^Install Ubuntu Server with the HWE kernel
   kernel /casper/hwe-vmlinuz
-  append   initrd=/casper/hwe-initrd quiet  ---
+  append vga=normal initrd=/casper/hwe-initrd --- console=ttyS0,115200n8
 label memtest
   menu label Test ^memory
   kernel /install/mt86plus

Make Changes (on Chimaera)

diff -ru old/boot/isolinux/isolinux.cfg new/boot/isolinux/isolinux.cfg
--- old/boot/isolinux/isolinux.cfg      Tue Oct 12 12:56:16 2021
+++ new/boot/isolinux/isolinux.cfg      Sun May 21 18:32:35 2023
@@ -1,4 +1,6 @@
 # search path for the c32 support libraries (libcom32, libutil etc.)
+serial 0 115200
+console 0
 path /boot/isolinux
 default vesamenu.c32
 include /boot/isolinux/menu.cfg
diff -ru old/boot/isolinux/txt.cfg new/boot/isolinux/txt.cfg
--- old/boot/isolinux/txt.cfg   Tue Oct 12 12:56:16 2021
+++ new/boot/isolinux/txt.cfg   Sun May 21 18:33:59 2023
@@ -1,4 +1,4 @@
 label install
        menu label ^Install
        kernel /boot/isolinux/linux
-       append vga=788 nomodeset initrd=/boot/isolinux/initrd.gz --- quiet 
+       append vga=normal nomodeset initrd=/boot/isolinux/initrd.gz --- console=ttyS0,115200n8

Generate ISO (on Beowulf)

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

Generate ISO (on Chimaera)

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


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

vm "username" {
        owner username
        memory 1024M
        cdrom "/home/iso/devuan-beowulf-3.1.1-vmm.iso"
        disk /home/username/username.qcow2
        interface { 
                locked lladdr aa:bb:cc:dd:ee:ff
                switch "switch0"
  1. Install

Install grub into /dev/vda

Ideas taken from: https://giocher.com/words/2018/ubuntu-on-openbsd-vmm/