PXE netboot diskless client for Linux Remote Desktop with ThinLinc
Written by Jean Zagonel and Tobias Oetiker
22nd March, 2022
Commonly the ThinLinc native client is installed locally on regular Windows, macOS, and Linux desktops computers as a way to provide VNC access to Linux Remote Desktops.
While this method is predominant and cost-effective, as it allows for easy deployment on existing devices, there is an alternative deployment method that might be relevant for those looking to optimize operations and reduce cost.
The technology is called PXE, Preboot Execution Environment, which enables the client devices to directly boot from a server, instead of the local storage. As a result the hardware used on the client side does not need to have storage capabilities, such as a hard disk.
Using PXE netboot virtually eliminates the setup-cost for client hardware and drastically reduces maintenance and support costs along with it.
PXE boot is supported by most contemporary computers with built-in network cards. From small Intel NUCs to expensive server systems, the configuration requires just a small change in the BIOS settings to enable boot from the network card.
The main benefit is the great reduction of time spent on setup and updates of clients, as only the client boot image on the server has to be updated. Whenever a client is started, it automatically boots with the latest software image available from the server. Thus, scaling the number of client devices is extremely simple and easy.
Recently, Tobias Oetiker from the company Oetiker+Partner AG in Switzerland, developed and published a system for automatically building such PXE boot images. This system is called Docker based RamRoot Generator (dbrrg) and is available from GitHub. Oetiker explains that he used to build custom boot images using buildroot system but was looking for a more mainstream base system. With dbrrg, the whole setup is built on standard components without the need to compile anything. This makes the process much faster and versatile since any package from the regular distro can easily be added to the setup.
The project currently produces an Ubuntu based boot image which directly starts the ThinLinc client. The build system is easily customized, so modifications to the list of the pre-installed packages can be performed effortlessly. Versions for RedHat or Suse could easily be developed.
The “dbrrg project” is a work in progress. A Golang server component is in the works, which will make deployment even simpler by providing the necessary DHCP, TFTP, and HTTP services directly without requiring any additional tools or configuration.
The project page on GitHub is https://github.com/oposs/dbrrg.
Besides Oetiker's project, there are others available that make enables the use of PXE with ThinLinc. One well known is thinRoot, which is a broader project and works with other server-based desktop environments as well.
|Regular Thin Client Approach||PXE Approach|
|Client device software||OS Stored on the local drive||OS stored on a boot-server, delivered via TFTP/HTTP|
|Client device hardware||Complete computer with hard disk, higher cost||Lighter computer with RAM, lower cost|
|Access to the client OS||Locally in the hard disk||Read-Only access to the OS image. Client-side modifications only in RAM.|
|Software update||Local/ one by one. Requires a special solution for automation. The device must be turned ON. During update the client may not be fully usable or requires a long time for reboot as updates are being installed.||Centralized. Image build process is fully automated, automatically getting all the latest components for optimal security.|