Ubuntu 14.04 network install

This is a quick heads-up to all who want to set-up a network install platform for ubuntu server 14.04 using a PXE environment with a local package-repository (an http/ftp server with copied contents from the iso image).
You will need the knowledge to set up a PXE boot server and configure your DHCP server to point to it. This post has no attention of beeing a complete how-to. Though it does have some vital information on how to set things straight on 14.04.

In the pxelinux.cfg/default file you will need a segment similar to the one below:

label <X>
    kernel boo/linux
    append vga=788 initrd=boot/initrd.gz -- quiet locale=en_US console-setup/layoutcode=sl keymap=sl debian-installer/keymap=sl auto url=http://<your_local_server>/preseed.seed

Brief description of the parameters used:
  • label parameter should be clear to you.
  • kernel line points to the location of file "linux" on your tftp server (copied from iso:/install/netboot/ubuntu-installer/amd64/ )
  • append line adds parameters to the kernel that sets different options:
  • vga sets the screen resolution
  • initrd sets the location of the "initrd.gz" file on your tftp server (copied from iso:/install/netboot/ubuntu-installer/amd64/ )
  • locale sets the locale/language used for installation process (to get rid of the language/keyboard selection)
  • console-setup/layoutcode sets your local keyboard layout during install process (to get rid of the language/keyboard selection)
  • keymap sets the keymap used while booting
  • debian-installer/keymap sets the keymap during the install process
  • url sets the url-type path of the preseed.seed file that holds the automated install options - sample follows.
In the preseed.seed file there are many options - you can find many samples on the Internet. The crucial line is the one shown in red. There's been a change to how the installation process works in 12.10 - the setup now copies initial system files from an image instead of installing packages. Here's the example that I use:

d-i clock-setup/utc boolean true
d-i time/zone string Europe/Ljubljana
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string sl
d-i debian-installer/language string English
d-i debian-installer/country string SI
d-i debian-installer/locale string en_US.UTF-8
d-i keyboard-configuration/layout select Slovenian
d-i keyboard-configuration/variant select Slovenian
d-i keyboard-configuration/layoutcode string sl
d-i keyboard-configuration/xkb-keymap select sl
d-i mirror/country string manual
d-i mirror/http/hostname string netboot.abakus.si
d-i mirror/http/directory string /iso/ubuntus1404_64
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i apt-setup/backports boolean true
d-i apt-setup/services-select multiselect security
d-i apt-setup/security_host string netboot.abakus.si
d-i apt-setup/security_path string /iso/ubuntus1404_64/ 
d-i live-installer/net-image string http://<your_local_server>/iso/install/filesystem.squashfs
#d-i debian-installer/allow_unauthenticated boolean true
d-i preseed/late_command string wget http://<your_local_server>/boot/sources.list -O /target/etc/apt/sources.list

The last line helps me set the correct sources.list file to get updates from the Internet. I'ts based on the slovenian mirror site. The reason behind this is the fact that I do not sync the updates mirror to my local server. I therefore get no access to updates unless I use the ones on the Internet. Install process will set apt sources to what you provide within preceed.seed file. So you have to somehow override this at the end of the install process.