# Docs: - https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls - https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls/ConfigReference - https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html - https://discourse.ubuntu.com/t/please-test-autoinstalls-for-20-04/15250/53 # Download ISO Installer: wget https://ubuntu.volia.net/ubuntu-releases/20.04.2/ubuntu-20.04.2-live-server-amd64.iso # Create ISO distribution dirrectory: mkdir -p iso/nocloud/ # Extract ISO using 7z: 7z x ubuntu-20.04.2-live-server-amd64.iso -x'![BOOT]' -oiso # Or extract ISO using xorriso and fix permissions: xorriso -osirrox on -indev "ubuntu-20.04.2-live-server-amd64.iso" -extract / iso && chmod -R +w iso # Create empty meta-data file: touch iso/nocloud/meta-data # Copy user-data file: cp user-data iso/nocloud/user-data # Update boot flags with cloud-init autoinstall: ## Should look similar to this: initrd=/casper/initrd quiet autoinstall ds=nocloud;s=/cdrom/nocloud/ --- sed -i 's|---|autoinstall ds=nocloud\\\;s=/cdrom/nocloud/ ---|g' iso/boot/grub/grub.cfg sed -i 's|---|autoinstall ds=nocloud;s=/cdrom/nocloud/ ---|g' iso/isolinux/txt.cfg # Disable mandatory md5 checksum on boot: md5sum iso/.disk/info > iso/md5sum.txt sed -i 's|iso/|./|g' iso/md5sum.txt # (Optionally) Regenerate md5: # The find will warn 'File system loop detected' and return non-zero exit status on the 'ubuntu' symlink to '.' # To avoid that, temporarily move it out of the way mv iso/ubuntu . (cd iso; find '!' -name "md5sum.txt" '!' -path "./isolinux/*" -follow -type f -exec "$(which md5sum)" {} \; > ../md5sum.txt) mv md5sum.txt iso/ mv ubuntu iso # Create Install ISO from extracted dir (ArchLinux): xorriso -as mkisofs -r \ -V Ubuntu\ custom\ amd64 \ -o ubuntu-20.04.2-live-server-amd64-autoinstall.iso \ -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \ -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \ -isohybrid-mbr /usr/lib/syslinux/bios/isohdpfx.bin \ iso/boot iso # Create Install ISO from extracted dir (Ubuntu): xorriso -as mkisofs -r \ -V Ubuntu\ custom\ amd64 \ -o ubuntu-20.04.2-live-server-amd64-autoinstall.iso \ -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table \ -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot \ -isohybrid-gpt-basdat -isohybrid-apm-hfsplus \ -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \ iso/boot iso # After install: - login with 'root:root' and change root user password - set correct hostname with 'hostnamectl'