Physical Address
Metro Manila, Philippines
Physical Address
Metro Manila, Philippines
In Part 1, we introduced the design for a centralized Linux thin client solution using LTSP, LDAP, NFS, XFCE, Google Chrome kiosk mode, and Apache Guacamole.
In this second part, we will build the LTSP server that allows client machines to boot from the network using PXE and iPXE.
This article focuses on the LTSP server foundation. The goal is to prepare an Ubuntu 24.04 server, install LTSP, configure network boot services, generate a client image, and test the first PXE boot.
LDAP authentication, shared user home directories, desktop behavior, kiosk mode, Guacamole, security hardening, and Ansible automation will be covered in later parts of this series.
The LTSP server will provide the boot environment for thin clients.
A client machine will power on, request network boot information, load iPXE, receive the LTSP boot menu, and start the Linux client environment from the LTSP server.
The basic boot flow looks like this:
Thin Client
|
| PXE boot request
v
Network DHCP server
|
| IP address assignment
v
LTSP Server with Proxy DHCP
|
| iPXE boot files
v
LTSP Client Image
|
v
Linux desktop login screen
This setup uses a proxy DHCP model. That means the existing router or DHCP server can continue assigning IP addresses. The LTSP server only provides the network boot details needed by PXE clients.
This is useful when you do not want to replace the current DHCP service in an office, classroom, or lab network.
LTSP provides an integrated solution for network booting Linux clients using iPXE, image management, and centralized configuration. Compared to manually combining PXE, TFTP, NFS, and boot scripts, LTSP simplifies deployment and maintenance by managing these components together.
For more details, see:
https://ltsp.org/docs/
Proxy DHCP allows integration into existing networks without replacing the current DHCP server. This avoids disruption and reduces the risk of configuration conflicts.
dnsmasq provides proxy DHCP, TFTP, and optional DNS in a single lightweight service. Alternatives such as ISC DHCP and standalone TFTP servers require more complex configuration.
Important note: On Ubuntu 24.04, dnsmasq can conflict with the system’s native DNS resolver (systemd-resolved). By default, systemd-resolved listens on port 53, which dnsmasq may also attempt to use if DNS functionality is enabled.
In this LTSP setup, dnsmasq is only used for proxy DHCP and TFTP, not DNS. The LTSP helper (ltsp dnsmasq) configures dnsmasq in proxy DHCP mode, which avoids DNS binding. If needed, explicitly disable DNS:
sudo nano /etc/dnsmasq.conf
Add or confirm:
port=0
Then restart dnsmasq:
sudo systemctl restart dnsmasq
iPXE supports advanced boot features such as HTTP booting, scripting, and improved hardware compatibility compared to traditional PXE firmware.
NFS is used to serve the LTSP client image because it is efficient and well-supported for Linux network filesystems.
XFCE is lightweight and performs well on older or low-resource thin clients.
LightDM is lightweight and easy to configure for thin client environments.
Snap is removed to maintain a consistent APT-based package environment and avoid automatic Snap dependencies.
| Item | Example value |
|---|---|
| Server OS | Ubuntu 24.04 LTS |
| Server hostname | ltsp01 |
| Server IP address | 192.168.100.137 |
| Network | 192.168.100.0/24 |
| Existing DHCP server | Router or firewall |
| LTSP mode | Proxy DHCP |
| Client boot method | PXE or UEFI network boot |
| Client desktop | Basic XFCE login screen |
| Browser | Google Chrome Stable in a later part |
| Snap | Not used |
Replace the sample IP addresses with your own network values.
Ubuntu 24.04 LTS is supported with standard security maintenance until 31 May 2029.
See:
https://documentation.ubuntu.com/release-notes/24.04/
You need:
Start with a clean Ubuntu 24.04 installation.
Update the system:
sudo apt update
sudo apt upgrade -y
Install basic tools:
sudo apt install -y software-properties-common curl wget gnupg ca-certificates
Set the hostname:
sudo hostnamectl set-hostname ltsp01
Check the IP address:
ip addr
Remove Snap:
sudo apt purge snapd -y
sudo apt autoremove --purge -y
Prevent Snap from being reinstalled:
cat <<'EOF' | sudo tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release *
Pin-Priority: -10
EOF
sudo add-apt-repository ppa:ltsp/ppa -y
sudo apt update
See:
https://ltsp.org/docs/installation/
sudo apt install --install-recommends -y \
ltsp ltsp-binaries dnsmasq nfs-kernel-server \
openssh-server squashfs-tools ethtool net-tools epoptes \
lightdm lightdm-gtk-greeter xfce4 \
xserver-xorg-core xinit x11-xserver-utils
Add your admin user to epoptes:
sudo gpasswd -a administrator epoptes
sudo mkdir -p /etc/lightdm/lightdm.conf.d
sudo nano /etc/lightdm/lightdm.conf.d/50-xfce.conf
[Seat:*]
greeter-session=lightdm-gtk-greeter
greeter-hide-users=true
greeter-show-manual-login=true
user-session=xfce
allow-guest=false
Restart:
sudo systemctl restart lightdm
sudo ltsp dnsmasq
sudo systemctl restart dnsmasq
sudo ltsp image /
See:
https://ltsp.org/man/ltsp/
sudo ltsp ipxe
sudo ltsp nfs
sudo systemctl restart nfs-kernel-server
sudo ltsp initrd
See:
https://ltsp.org/man/ltsp.conf/
systemctl status dnsmasq --no-pager
systemctl status nfs-kernel-server --no-pager
systemctl status ssh --no-pager
Set client boot order:
Network Boot / PXE Boot first
Disk boot second
The client should reach the LightDM login screen.
sudo adduser testuser
Rebuild:
sudo ltsp image /
sudo ltsp initrd
sudo ltsp image /
If configuration changes:
sudo ltsp initrd
Check the DHCP server.
Check dnsmasq.
Ensure port=0 is set in /etc/dnsmasq.conf.
Check NFS.
Use a local test user.
Rebuild the LTSP image.
We built the base LTSP server on Ubuntu 24.04.
Part 3 will cover centralized authentication and user home directories.
LTSP Documentation
https://ltsp.org/docs/
LTSP Installation Guide
https://ltsp.org/docs/installation/
LTSP Manual
https://ltsp.org/man/ltsp/
LTSP Configuration Manual
https://ltsp.org/man/ltsp.conf/
Ubuntu 24.04 LTS Release Notes
https://documentation.ubuntu.com/release-notes/24.04/
Ubuntu Server Documentation
https://documentation.ubuntu.com/server/
Ubuntu Chromium Browser Package
https://packages.ubuntu.com/noble/chromium-browser
Google Linux Software Repositories
https://www.google.com/linuxrepositories/