GUIDE: Testing your ISO with QEMU
Juxsta opened this issue · 1 comments
I used docker run --rm --volume "$(pwd):/data" --user $(id -u):$(id -g) deserializeme/pxeless \ -a -u user-data.basic -n jammy
to create a bootable drive. When ssh'ing into the machine I am unable to access it using the default username and password, vmadmin
and password
Thanks for the heads up!
I tried to reproduce the issue on my end but was unable to, i'll list the steps I followed for testing the image below.
Requirements
You will need to have a VNC client (tigerVNC or Remmina etc...) installed as well as the following packages:
sudo apt-get install -y qemu-kvm \
bridge-utils \
virtinst\
ovmf \
qemu-utils \
cloud-image-utils \
ubuntu-drivers-common \
whois \
git \
guestfs-tools
- You will need to replace my host IP (192.168.50.100) with your own.
- Also change the path to the ISO file to match your system.
- I have also set this VM to forward ssh over port 1234 instead of 22, feel free to change that as well.
Steps to Reproduce
-
Do fresh clone of the pxeless repo
-
Create the iso with
docker run --rm --volume "$(pwd):/data" --user $(id -u):$(id -g) deserializeme/pxeless -a -u user-data.basic -n jammy
-
Create a virtual disk with
qemu-img create -f qcow2 hdd.img 8G
-
Create a test VM to boot the ISO files with
sudo qemu-system-x86_64 -machine accel=kvm,type=q35 \ -cpu host,kvm=off,hv_vendor_id=null \ -smp 2,sockets=1,cores=1,threads=2,maxcpus=2 \ -m 2G \ -cdrom /home/max/repos/pxeless/ubuntu-autoinstall.iso \ -object iothread,id=io1 \ -device virtio-blk-pci,drive=disk0,iothread=io1 \ -drive if=none,id=disk0,cache=none,format=qcow2,aio=threads,file=hdd.img \ -netdev user,id=network0,hostfwd=tcp::1234-:22 \ -device virtio-net-pci,netdev=network0 \ -serial stdio -vga virtio -parallel none \ -bios /usr/share/ovmf/OVMF.fd \ -usbdevice tablet \ -vnc 192.168.50.100:0
-
Connect to the VM using VNC so we can watch the grub process run.
-
After the install process completes and the VM reboots, select the "Boot from next volume" grub option to prevent installing again
-
I was then able to log into he machine using
vmadmin
andpassword
for the credentials -
Finally i tried to SSH to the machine (since the vm I created is using SLIRP networking I have to reach it via a forwarded port)
Final Thoughts
The most common issues I run into with this process are improperly formatted yaml in the user-data file, and errors in the process of burning the ISO to a USB drive.
In those cases, the machine will perform a partial install but instead of seeing pxeless login:
as the machine name at login it will still say ubuntu login:
.
I prefer to use Etcher to create the USB drives on MacOS and dd on Linux as they seem to cause the fewest errors.
If your install makes it through Ubiquiti and into the Cloud-Init phase then the debugging steps here can be helpful tracking down the errors.
Hope this helps!