I’ve seen lots of examples on the Internet of Ubuntu installer boot commands for use in Packer. They appear to be derived from the same source and that’s fine, but they aren’t optimized and some comments about what are required are inaccurate. There are two reasons to minimize the boot command:
- Time – It takes time to enter the boot command over the VNC connection even if it automated. This affects the fix/test cycle time.
- Duplication – Options in the boot command can be specified in the preseed file. You either need to update both spots of wonder which value will be taken.
This is the command I use:
"boot_command": [ "<esc><wait>", "<esc><wait>", "<enter><wait>", "/install/vmlinuz", " initrd=/install/initrd.gz", " auto=true", " priority=critical", " url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `preseed_path`}}", "<enter>" ]
I believe this to be the absolute minimal Ubuntu install boot command for Packer. I minimize the use of <wait> to speed the process. For the options I do supply, I use the shortened alias to speed the process as well. The use of auto=true defers the keyboard and locale questions to after the preseed file is loaded by the installer and priority=critical suppresses remaining questions that will eventually be answered in the preseed file like hostname.
A couple of other items, make sure you use the Alternative CD image and not the Live CD and boot your VM using BIOS and not EFI. For Ubuntu 18.04.1 Server AMD64 use this URL: http://cdimage.ubuntu.com/releases/18.04.1/release/ubuntu-18.04.1-server-amd64.iso