Ubuntu 24.04 Live Server and Desktop Install
UEFI with OVMF
Reference tutorial for building Ubuntu images using KVM/QEMU and Packer
Can build in parallel all three images in about 6 minutes (if Packer cached / downloaded the ISOs)
sudo apt update -y
sudo apt install -y qemu-system libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
sudo apt install -y ovmf cpu-checker cloud-init
sudo apt install -y git make curl wget unzip
sudo apt install cpu-checker -y
# Install binary manually for deb/ubuntu
# # https://releases.hashicorp.com/packer
# didnt work on 24.04 - just download and add to path
temp_dir=$(mktemp -d)
echo $temp_dir
wget --continue https://releases.hashicorp.com/packer/1.10.3/packer_1.10.3_linux_amd64.zip -P $temp_dir
# unzip packer_1.10.3_linux_amd64.zip
sudo unzip $temp_dir/packer_1.10.3_linux_amd64.zip -d $temp_dir/packer
sudo mv $temp_dir/packer/packer /usr/local/bin/
rm -rf $temp_dir
packer --version # validate
# /usr/local/bin/packer/packer --version
sudo mv /usr/local/bin/packer /usr/local/bin/packer1.10.3
sudo ln -s /usr/local/bin/packer1.10.3/packer /usr/local/bin/packer
/usr/local/bin/packer/packer --version
# Check for KVM acceleration
kvm-ok
# git clone git@github.com:hychan48/packer-qemu-ubuntu-tutorial.git
git clone https://github.com/hychan48/packer-qemu-ubuntu-tutorial.git
# builds the cloud-init meta-data and user-data
cd packer-qemu-ubuntu-tutorial/ubuntu
# modifies cloud-init files like username and password
make configure
make build
# ub24-server
vncviewer localhost:5905
# ub24-desktop
vncviewer localhost:5906
# ub22-server
vncviewer localhost:5907
# ub24-server
ssh -p 3455 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@localhost
ssh -p 3455 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@localhost
# ub24-desktop
ssh -p 3456 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@localhost
# ub22-server
ssh -p 3457 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@localhost
make build-ub24-server
make build-ub24-desktop
make build-ub22-server
packer init .
packer inspect -only "ub24.qemu.ub2*" \
-var uri_ub24_server="file:///var/lib/qemu/images/ubuntu-24.04-live-server-amd64.iso" \
-var uri_ub22_server="file:///var/lib/qemu/images/ubuntu-22.04-live-server-amd64.iso" \
-var uri_ub24_desktop="file:///var/lib/qemu/images/ubuntu-24.04-live-desktop-amd64.iso" \
.
ls -l assets/cloud-init/
assets
├── meta-data
├── user-data_desktop_live
└── user-data_server_live
username
username_password
*.pkrvars.hcl
.
├── assets
│ ├── meta-data
│ ├── user-data_desktop_live
│ └── user-data_server_live
├── debug.pkr.hcl
├── http
├── Makefile
├── README.md
├── ub24-nocloud.pkr.hcl
├── ub-cloudinit_config.pkr.hcl
├── variables-iso.pkr.hcl
└── variables.pkr.hcl
cloud-init --version
qemu-system-x86_64 --version
/usr/bin/cloud-init 24.1.3-0ubuntu3
qemu-system-x86_64 --version QEMU emulator version 8.2.2 (Debian 1:8.2.2+ds-0ubuntu1)
## Known Issues
* [ ] meta-data keys
* Cloud-init yaml is not the best
* [ ] Better cloud-init editing, yq or others tools
* clouding package
* datasource none or nocloud?
* [ ] auto.pkrvars.hcl
* make a script to write it
* [ ] qemu.sh
* parser
* [ ] general validations
* [ ] Packer installer improvements/refactor
* [ ] packer-maas
* borrow from there
* [ ] http proxy
* [ ] apt proxy