Discover how to install Ubuntu from PXE server with this detailed guide. Learn step-by-step instructions for setting up and deploying Ubuntu over your network efficiently and effortlessly. #centlinux #linux #ubuntu #pxe
Table of Contents
Problem Statement
In our previous posts, we have configured a PXE boot server that supports both BIOS and UEFI based clients. We have also configured our CentOS 7 PXE server to install RHEL 6 and RHEL 7 operating systems using Kickstart. Now, we will install Ubuntu from PXE Server.
We will also create a Kickstart file for automated installation of Ubuntu 18.10 operating system, and ensure that it will support both BIOS and UEFI based clients.

PXE Server Specification
We use the same CentOS 7 machine that we have configured as PXE Boot Server in our previous article. These specifications have been re-mentioned below for convenience of the readers.
- CPU – 2 Core (2.4 Mhz)
- Memory – 2 GB
- Storage – 50 GB
- Operating System – CentOS 7.5
- Hostname – pxe-server.itlab.com
- IP Address – 192.168.116.41/24
Recommended Training: Linux Administration: The Complete Linux Bootcamp in 2025 from Andrei Dumitrescu, Crystal Mind Academy

Read Also: How to install Windows 10 over PXE Linux Server
Configure NFS Server in CentOS 7
Connect to pxe-server.itlab.com using ssh as root user.
Install NFS packages using yum command.
# yum install -y nfs-utils
Start and Enable NFS service.
# systemctl start nfs-server # systemctl enable nfs-server Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
Create a directory for sharing Ubuntu 18.10 ISO.
# mkdir /nfsshare # chown nfsnobody:nfsnobody /nfsshare
Allow NFS and relevant ports in CentOS 7.5 Firewall.
# firewall-cmd --permanent --add-service={nfs,mountd,rpc-bind} success # firewall-cmd --reload success
Adjust SELinux Permissions.
# semanage fcontext --add -t nfs_t '/nfsshare(/.*)?' # restorecon -Rv /nfsshare/ restorecon reset /nfsshare context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:nfs_t:s0
Export /nfsshare directory for all clients.
# echo "/nfsshare *(ro)" >> /etc/exports # exportfs -r
Amazon Fire HD 10 Kids Pro tablet (newest model) ages 6-12. Bright 10.1″ HD screen, includes ad-free content, robust parental controls, 13-hr battery and slim case for older kids, 32 GB, Happy Day
$139.99 (as of April 18, 2025 16:01 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Copy Ubuntu ISO in NFS Share
Attach Ubuntu 18.10 Server ISO/DVD and mount it at /mnt/iso (you can use any mountpoint, according to your choice).
# mount -t iso9660 /dev/cdrom /mnt/iso mount: /dev/sr0 is write-protected, mounting read-only
Copy contents of /mnt/iso directory to NFS server.
# cp -rf /mnt/iso /nfsshare/ubuntu18
Create Kickstart File for Automated Installation
We have to write a Kickstart file for Ubuntu 18.10 within the /nfsshare/ubuntu18/preseed/ directory, so it can be accessed by PXE clients via NFS service.
# vi /nfsshare/ubuntu18/preseed/ubuntu.seed
A sample kickstart file is given below, you can modify it according to your requirements.
# Enable extras.ubuntu.com. d-i apt-setup/extras boolean true # Install the Ubuntu desktop. tasksel tasksel/first multiselect ubuntu-desktop # On live DVDs, don't spend huge amounts of time removing substantial # application packages pulled in by language packs. Given that we clearly # have the space to include them on the DVD, they're useful and we might as # well keep them installed. ubiquity ubiquity/keep-installed string icedtea6-plugin openoffice.org #System language lang en_US #Language modules to install langsupport en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone Asia/Karachi #Root password rootpw --disabled #Initial user (user with sudo capabilities) user ubuntu --fullname "ahmer" --password ahmer1234 #Reboot after installation reboot #Use text mode install text #Install OS instead of upgrade install #Installation media nfs --server=192.168.116.41 --dir=/nfsshare/ubuntu18/ #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #Partition clearing information clearpart --all --initlabel #Basic disk partition part / --fstype ext4 --size 1 --grow --asprimary part swap --size 1024 part /boot --fstype ext4 --size 256 --asprimary #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Firewall configuration firewall --disabled --trust=eth0 --ssh
Redragon M908 Impact RGB LED MMO Gaming Mouse with 12 Side Buttons, Optical Wired Ergonomic Mouse with Max 12,400DPI, High Precision, 18 Programmable Macro Shortcuts, Comfort Grip
$22.79 (as of April 17, 2025 16:01 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Copy boot images in tftpboot directory
The Boot images in the Ubuntu ISO won’t work for network boot Therefore, we downloaded netboot images from Ubuntu website.
# wget http://archive.ubuntu.com/ubuntu/dists/cosmic/main/installer-amd64/current/images/netboot/netboot.tar.gz --2018-11-17 11:09:13-- http://archive.ubuntu.com/ubuntu/dists/cosmic/main/installer-amd64/current/images/netboot/netboot.tar.gz Resolving archive.ubuntu.com (archive.ubuntu.com)... 91.189.88.152, 91.189.88.161, 91.189.88.162, ... Connecting to archive.ubuntu.com (archive.ubuntu.com)|91.189.88.152|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 56245393 (54M) [application/x-gzip] Saving to: ânetboot.tar.gz.1â 100%[======================================>] 56,245,393 179KB/s in 7m 23s 2018-11-17 11:16:40 (124 KB/s) - ânetboot.tar.gz.1â saved [56245393/56245393]
Extract download TARBall.
# mkdir netboot # tar xf netboot.tar.gz -C netboot
We need to copy initrd.gz and linux files from netboot directory ~/netboot/ubuntu-installer/amd64/ to /var/lib/tftpboot/networkboot/ubuntu18 directory. These files will be referenced in the menu entry of PXE boot menu.
# mkdir /var/lib/tftpboot/networkboot/ubuntu18 # cp ~/netboot/ubuntu-installer/amd64/{linux,initrd.gz} /var/lib/tftpboot/networkboot/ubuntu18/
Add Ubuntu Entry in PXE Menu
Edit PXE boot menu for BIOS based clients.
# vi /var/lib/tftpboot/pxelinux.cfg/default
Add a menu entry for Ubuntu 18.10 installation therein.
default vesamenu.c32 prompt 0 timeout 30 menu title Ahmer's PXE Menu label Install RHEL 7.5 kernel /networkboot/rhel7/vmlinuz append initrd=/networkboot/rhel7/initrd.img inst.repo=ftp://192.168.116.41/pub/rhel7 ks=ftp://192.168.116.41/pub/rhel7/rhel7.cfg label Install RHEL 6.0 (64-bit) kernel /networkboot/rhel6/vmlinuz append initrd=/networkboot/rhel6/initrd.img inst.repo=ftp://192.168.116.41/pub/rhel6 ks=ftp://192.168.116.41/pub/rhel6/rhel6.cfg label Install Ubuntu 18.10 Server menu label Install Ubuntu 18.10 Server kernel networkboot/ubuntu18/linux append vga=788 initrd=networkboot/ubuntu18/initrd.gz ks=nfs:192.168.116.41:/nfsshare/ubuntu18/preseed/ubuntu.seed --- quiet
Edit PXE boot menu for UEFI based clients. For more information on UEFI, please refer to Add UEFI Support to PXE Server in CentOS 7.
# vi /var/lib/tftpboot/grub.cfg
Add a menu entry for Ubuntu 18.10 installation in this file.
set timeout=60 menuentry 'Install RHEL 7.5' { linuxefi /networkboot/rhel7/vmlinuz inst.repo=ftp://192.168.116.41/pub/rhel7/ inst.ks=ftp://192.168.116.41/pub/rhel7/rhel7.cfg initrdefi /networkboot/rhel7/initrd.img } menuentry 'Install RHEL 6.0' { linuxefi /networkboot/rhel6/vmlinuz inst.repo=ftp://192.168.116.41/pub/rhel6/ inst.ks=ftp://192.168.116.41/pub/rhel6/rhel6.cfg initrdefi /networkboot/rhel6/initrd.img } menuentry "Install Ubuntu 18.10 Server" { set gfxpayload=keep linuxefi /networkboot/ubuntu18/linux inst.repo=nfs:192.168.116.41:/nfsshare/ubuntu18 inst.ks=nfs:192.168.116.41:/nfsshare/ubuntu18/preseed/ubuntu.seed initrdefi /networkboot/ubuntu18/initrd.gz }
Now, connect a BIOS based PXE client to network and boot it. It will display the following PXE boot menu.

Similarly, connect a UEFI based PXE client to network and boot it. It will display the following PXE boot menu.

We have successfully configured our CentOS 7 PXE boot server to install Ubuntu 18.10. You can also add other versions of Ubuntu in similar manner.
Kali Linux Penetration Testing Bible
$27.68 (as of April 17, 2025 16:01 GMT +00:00 – More infoProduct prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on [relevant Amazon Site(s), as applicable] at the time of purchase will apply to the purchase of this product.)Final Thoughts
If you found this guide on installing Ubuntu from a PXE server useful and need further assistance, I’m here to help. I offer expert services to ensure your PXE server setup and Ubuntu deployment are seamless and efficient. Visit my Fiverr profile for more details and to get started: Seasoned Linux Administrator. Let’s make your installation process smooth and hassle-free!
Leave a Reply
You must be logged in to post a comment.