How to configure PXE Network Boot Server for Ubuntu 18.04 Desktop
Channel: Heikki Koivisto
Date: 2019-09-02

I found a lot guides for Ubuntu Server pxe installation. So i made my guide for How to configure PXE Network Boot Server for Ubuntu 18.04 Desktop. I Create server which can provide tool for installing Desktop Ubuntu 16.04/18.04 and preseed file for it.
Support channel: https://www.youtube.com/c/HeikkiKoivisto/?sub_confirmation=1
Commands:
Install dhcp/tftp server and apache2
apt update && sudo apt install -y dnsmasq apache2
move dnsmasq conf 
mv -v /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

edit dnsmasq file
nano /etc/dnsmasq.conf

interface=enp0s3 #enp0s8
bind-interfaces
domain=koti.local
 
dhcp-range=ens38,192.168.100.100,192.168.100.240,255.255.255.0,8h
dhcp-option=option:router,192.168.100.1
dhcp-option=option:dns-server,192.168.100.1
dhcp-option=option:dns-server,8.8.8.8
 
enable-tftp
tftp-root=/netboot/tftp
dhcp-boot=pxelinux.0,linuxhint-s20,192.168.100.11
pxe-prompt="Press F8 for PXE Network boot.", 2
pxe-service=x86PC, "Install OS via PXE",pxelinux

create tftp folder:
mkdir -p /netboot/tftp

restart dnsmasq
systemctl restart dnsmasq

install nfs server
apt install -y nfs-kernel-server

create forder for nfs share
mkdir /netboot/nfs

edit nfs share settings:
nano /etc/exports

/netboot/nfs  *(ro,sync,no_wdelay,insecure_locks,no_root_squash,insecure,no_subtree_check)

make share available
exportfs -a

install required pxe boot files:
apt install -y syslinux pxelinux

copy pxelinux and other - files to tftp folder
cp /usr/lib/PXELINUX/pxelinux.0 /netboot/tftp/
cp /usr/lib/syslinux/modules/bios/{ldlinux.c32,libcom32.c32,libutil.c32,vesamenu.c32} /netboot/tftp

create pxelinux.cfg folder for boot menu file 
mkdir /netboot/tftp/pxelinux.cfg
touch /netboot/tftp/pxelinux.cfg/default

Copy Ubuntu 1804 desktop iso
winscp or wget iso - file

mount iso to mnt
mount -o loop ubuntu-18.04.2-desktop-amd64.iso /mnt

create folders and copy files on it
mkdir -v /netboot/{nfs,tftp}/ubuntu1804
cp -Rf /mnt/* /netboot/nfs/ubuntu1804/
cp -rf /mnt/casper/* /netboot/tftp/ubuntu1804
mkdir /netboot/tftp/ubuntu1804/casper/
cp -rf /mnt/casper/* /netboot/tftp/ubuntu1804/casper/

change permission to /netboot
chmod -Rf 777 /netboot

create boot menu:
nano /netboot/tftp/pxelinux.cfg/default

default vesamenu.c32

label install1
menu label ^Install Ubuntu 18.04 LTS Desktop
menu default
kernel ubuntu1804/casper/vmlinuz
append initrd=ubuntu1804/caspter/initrd boot=casper automatic-ubiquity netboot=nfs nfsroot=192.168.100.11:/netboot/nfs/ubuntu1804/ auto=true url=http://192.168.100.11/local-sources.seed quiet splash toram ---

restart nfs secatrver
/etc/init.d/nfs-kernel-server restart

nano /var/www/html/local-sources.seed

# ubiquity ubiquity/summary

# Choices: Dialog, Readline, Gnome, Kde, Editor, Noninteractive
d-i debconf debconf/frontend select Noninteractive

### Localization
d-i debian-installer/locale string en_GB

### Keyboard selection
d-i console-setup/ask_detect boolean false
d-i console-setup/layout select us
d-i console-setup/variant select us

ubiquity languagechooser/language-name select English (US)
ubiquity countrychooser/shortlist select FI
ubiquity keyboard-configuration/layoutcode select fi
ubiquity keyboard-configuration/modelcode  select pc105
ubiquity localechooser/supported-locales multiselect en_US.UTF8
ubiquity console-keymaps-at/keymap select  fi
ubiquity console-keymaps-at/variant select  fi

d-i kbd-chooser/method select British English

### Network
d-i netcfg/get_hostname string de-vm
d-i netcfg/get_domain string unassigned-domain

### Clock and time zone setup
d-i time/zone string Europe/Helsinki
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true

### Partitioning
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select atomic
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

### Account setup
d-i passwd/user-fullname string de
d-i passwd/username string de
d-i passwd/user-password password 123
d-i passwd/user-password-again password 123
d-i passwd/auto-login boolean true
d-i user-setup/encrypt-home boolean false
d-i user-setup/allow-password-weak boolean true

### Package installation

# Enable extras.ubuntu.com.
d-i apt-setup/extras    boolean true
# Install the Ubuntu desktop.
tasksel tasksel/first   multiselect ubuntu-desktop,standard

choose-mirror-bin mirror/http/proxy string

#For the update
d-i pkgsel/update-policy select none
d-i pkgsel/install-language-support boolean false

### Bootloader
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true

### Reboot after preseeding
d-i finish-install/reboot_in_progress note
ubiquity ubiquity/reboot boolean true
#ubiquity ubiquity/poweroff boolean true



missing steps:
mkdir /netboot/tftp/casper/
cp /netboot/nfs/ubuntu1804/casper/* /netboot/tftp/casper/