-
-
Save cyrinux/6b97e4c9ca32f1a406d71f1541320e5d to your computer and use it in GitHub Desktop.
Ubuntu 20.04.1 AutoInstall
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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.1/ubuntu-20.04.1-live-server-amd64.iso | |
# Create ISO distribution dirrectory: | |
mkdir -p iso/nocloud/ | |
# Extract ISO: | |
7z x ubuntu-20.04.1-live-server-amd64.iso -oiso | |
# Create empty meta-data file: | |
touch iso/nocloud/meta-data | |
# Copy user-data file: | |
cp user-data iso/nocloud/user-data | |
# Remove BOOT directory: | |
rm -rf 'iso/[BOOT]/' | |
# Disable mandatory md5 checksum on boot: | |
md5sum iso/README.diskdefines > iso/md5sum.txt | |
sed -i 's|iso/|./|g' iso/md5sum.txt | |
# 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 | |
# Create Install ISO from extracted dir (ArchLinux): | |
xorriso -as mkisofs -r \ | |
-V Ubuntu\ custom\ amd64 \ | |
-o ubuntu-20.04.1-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.1-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' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#cloud-config | |
autoinstall: | |
version: 1 | |
interactive-sections: | |
- network | |
- storage | |
locale: en_US.UTF-8 | |
keyboard: | |
layout: us | |
ssh: | |
allow-pw: true | |
install-server: false | |
late-commands: | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove apport bcache-tools btrfs-progs byobu cloud-guest-utils cloud-initramfs-copymods cloud-initramfs-dyn-netconf friendly-recovery fwupd landscape-common lxd-agent-loader ntfs-3g open-vm-tools plymouth plymouth-theme-ubuntu-text popularity-contest rsync screen snapd sosreport tmux ufw | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 autoremove | |
- curtin in-target --target=/target -- apt-get clean | |
- sed -i 's/ENABLED=1/ENABLED=0/' /target/etc/default/motd-news | |
- sed -i 's|# en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|' /target/etc/locale.gen | |
- curtin in-target --target=/target -- locale-gen | |
- ln -fs /dev/null /target/etc/systemd/system/connman.service | |
- ln -fs /dev/null /target/etc/systemd/system/display-manager.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.timer | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-quit-wait.service | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-start.service | |
- ln -fs /dev/null /target/etc/systemd/system/systemd-resolved.service | |
- ln -fs /usr/share/zoneinfo/Europe/Kiev /target/etc/localtime | |
- rm -f /target/etc/resolv.conf | |
- printf 'nameserver 8.8.8.8\nnameserver 1.1.1.1\noptions timeout:1\noptions attempts:1\noptions rotate\n' > /target/etc/resolv.conf | |
- rm -f /target/etc/update-motd.d/10-help-text | |
- rm -rf /target/root/snap | |
- rm -rf /target/snap | |
- rm -rf /target/var/lib/snapd | |
- rm -rf /target/var/snap | |
- curtin in-target --target=/target -- passwd -q -u root | |
- curtin in-target --target=/target -- passwd -q -x -1 root | |
- curtin in-target --target=/target -- passwd -q -e root | |
- sed -i 's|^root:.:|root:$6$3b873df474b55246$GIpSsujar7ihMzG8urUKpzF9/2yZJhR.msyFRa5ouGXOKRCVszsc4aBcE2yi3IuFVxtAGwrPKin2WAzK3qOtB.:|' /target/etc/shadow | |
user-data: | |
disable_root: false |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#cloud-config | |
autoinstall: | |
version: 1 | |
interactive-sections: | |
- network | |
- storage | |
locale: en_US.UTF-8 | |
keyboard: | |
layout: us | |
ssh: | |
allow-pw: true | |
install-server: false | |
late-commands: | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 remove apport bcache-tools btrfs-progs byobu cloud-guest-utils cloud-initramfs-copymods cloud-initramfs-dyn-netconf friendly-recovery fwupd landscape-common lxd-agent-loader ntfs-3g open-vm-tools plymouth plymouth-theme-ubuntu-text popularity-contest screen snapd sosreport tmux ufw | |
- curtin in-target --target=/target -- apt-get -qq update | |
- curtin in-target --target=/target -- apt-get -y install wget gnupg python2.7 openssh-server | |
- curtin in-target --target=/target -- apt-get -qq update | |
- curtin in-target --target=/target -- apt-get -y dist-upgrade | |
- curtin in-target --target=/target -- apt-get --purge -y --quiet=2 autoremove | |
- sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /target/etc/ssh/sshd_config | |
- sed -i 's/ENABLED=1/ENABLED=0/' /target/etc/default/motd-news | |
- sed -i 's|# en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|' /target/etc/locale.gen | |
- curtin in-target --target=/target -- locale-gen | |
- ln -fs /dev/null /target/etc/systemd/system/connman.service | |
- ln -fs /dev/null /target/etc/systemd/system/display-manager.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.service | |
- ln -fs /dev/null /target/etc/systemd/system/motd-news.timer | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-quit-wait.service | |
- ln -fs /dev/null /target/etc/systemd/system/plymouth-start.service | |
- ln -fs /dev/null /target/etc/systemd/system/systemd-resolved.service | |
- ln -fs /usr/share/zoneinfo/Europe/Kiev /target/etc/localtime | |
- rm -f /target/etc/resolv.conf | |
- printf 'nameserver 8.8.8.8\nnameserver 1.1.1.1\noptions timeout:1\noptions attempts:1\noptions rotate\n' > /target/etc/resolv.conf | |
- rm -f /target/etc/update-motd.d/10-help-text | |
- rm -rf /target/root/snap | |
- rm -rf /target/snap | |
- rm -rf /target/var/lib/snapd | |
- rm -rf /target/var/snap | |
- curtin in-target --target=/target -- passwd -q -u root | |
- curtin in-target --target=/target -- passwd -q -x -1 root | |
- curtin in-target --target=/target -- passwd -q -e root | |
- sed -i 's|^root:.:|root:$6$3b873df474b55246$GIpSsujar7ihMzG8urUKpzF9/2yZJhR.msyFRa5ouGXOKRCVszsc4aBcE2yi3IuFVxtAGwrPKin2WAzK3qOtB.:|' /target/etc/shadow | |
- sed -i 's/ext4 defaults/ext4 prjquota,lazytime/g' /target/etc/fstab | |
- findmnt --real -U -n -t ext4 -o source | awk '{system("umount -l "$1)}' | |
- blkid -t TYPE="ext4" -o device | awk '{system("tune2fs -O project,quota -Q prjquota "$1)}' | |
user-data: | |
disable_root: false |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment