Purpose
I want to install Ubuntu Desktop 16.04.1 LTS completely unattended. Put ISO CD in and walk away.
Issues
- Boot parameters incorrect
- Questions still being asked and needing mouse clicks
- Convoluted answers using kickstart/preseed
- Documentation examples no working as stated, specifically from partman and ubunutu
I came across this post here and it was close to what I needed but didn't quite accomplish what I needed since it was for Ubuntu Server. The post suggests using a "non-graphical" Ubuntu install, but I couldn't find a non-graphical install for Ubuntu Desktop, which makes sense. I tried to adapt the steps and get it working for Ubuntu Desktop 16.04.1 LTS.
Documentation Used
I have used all the following resources...
Apparently I can't include all of my resources because askubuntu doesn't allow more than 2 links. Well that's not very helpful - so here is just a list:
- AskUbuntu
- Ubuntu install.en.pdf
- Preseed Examples
- Ubiquity Installer Documentation
- Partman Documentation and Examples
- Partition Recipe Explaination of the 3 numbers and their weighting
- A More Complex Preseed Example
Current Solution
I have currently created an unattended install, but am not sure if it is correct - meaning that I should have edited the isolinux/isolinux.cfg
There were many differences between the post I linked and the Ubuntu Desktop image. Here is my solution:
Step 1
Mounted Ubuntu ISO so that I can copy the contents to another directory and then edit the pertinent files.
mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso
Step 2
I then copied the ISO files to another directory for editing.
mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso
Step 3
I edited the isolinux/isolinux.cfg
file and replaced everything inside with the following:
default live-install
label live-install
menu label ^Install Ubuntu
kernel /casper/vmlinuz.efi
append file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---
The append line is very long so for easy reading, here are all the options I used:
file=/cdrom/ks.preseed
auto=true
priority=critical
debian-installer/locale=en_US
keyboard-configuration/layoutcode=us
ubiquity/reboot=true
languagechooser/language-name=English
countrychooser/shortlist=US
localechooser/supported-locales=en_US.UTF-8
boot=casper
automatic-ubiquity
initrd=/casper/initrd.lz
quiet
splash
noprompt
noshell
I found that all these boot parameters were needed to get a completely unattended install. For Ubuntu Server, it may be different.
Step 4
I tried using and creating many preseed files, but I found the more complex, the more chance for errors. This is currently my simple preseed file that works with the above isolinux.cfg
file.
### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic
# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto
# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true
# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-amd64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop
# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true
# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note
# Custom Commands
I didn't include my encrypted passwords so if you try this preseed file, please change them to an encrypted password. Here is 3 ways to make the password.
Step 5
I created the new ISO from the the /opt/ubuntuiso/
directory.
mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso
Step 6
I finally tested it with Virtualbox and it created a completely unattended install.
Questions
Should I have to be editing the isolinux/isolinux.cfg
file?
In the other post, it seems they are able to edit the isolinux/txt.cfg
file and are able to make that work. I tried for about an hour to use the isolinux/txt.cfg
, but it did not work.
Does anyone have a working more complex partman recipe which directly specifies partitions? Or a working LVM setup? I tried to use a simple LVM setup, but it after reboot it wouldn't boot and would just sit a black screen. Also, not a single one of the preseed examples I listed in the documentation worked either.
Thank you for any help.