The XFCE desktop environment, designed to be light and fast, runs on modest hardware. While not as light on resources as LXDE, it is less resource intensive than the GNOME and KDE desktops and provides a good option for running a full desktop on thin client hardware. Many mainstream distributions have alternate versions preconfigured with the XFCE desktop: Debian XFCE, Fedora XFCE Respin, Linux Mint XFCE, and Xubuntu. Packages for XFCE also appear in repositories for Arch, Gentoo, and Slackware for creating customised installations. XFCE is also available in the Slackware-based distros Vector Linux Light, Salix Xfce, and Zenwalk.
XFCE versions of mainstream distros are generally just configured with XFCE without further customisation for low-spec hardware. Some "standard" features (eg. SELinux) or services (eg. auditid, abrtd) with an acceptable performance on faster machines and servers are not justified on low-spec hardware. This does not make them unusable, but features and services may need to be removed, disabled, or adjusted for acceptable performance. (See the Tuning article).
The remainder of this article describes installing Xubuntu 12.04, an XFCE version of mainstream Ubuntu to an x86 thin client outfitted with a Compact Flash card. Xubuntu utilizes less drive space and installs on a greater number of processors than similar Fedora and Slackware derivatives. The standard features and services are also more lightweight than the Fedora LXDE Spin. While Fedora can certainly be tuned for similar performance, Xubuntu provides better "out of the box" performance. And Xubuntu 12.04.1 LTS comes with long term support until April 2015. These instructions can also apply to a thin client outfitted with a 2.5" laptop hard drive in place of the Compact Flash card.
Xubuntu 12.04 LTS does not work with all x86 processors. The National Semiconductor/AMD Geode GX processors, and VIA C3 and Eden processors with Samuel and Ezra cores are not supported. However, AMD Geode NX processors, VIA C3 and Eden processors with Nehemiah cores, and all VIA C7 processors (Esther cores) are compatible. Technically, Xubuntu 12.04 LTS is supplied with a non-PAE i686 kernel. A "non-PAE" kernel is compatible with all x86 processors. However an "i686" kernel utilises a specific processor instruction (cmov) not implemented on NS/AMD Geode GX processors, or VIA Samuel and Ezra cores.
Minimum requirements for the distribution are 256MB RAM memory (512MB recommended) and 4GB of drive space. A completed alternate install utilizes 2.6GB. Processors clocked under 800 MHz can work but may be unusable for some tasks.
Xubuntu has been tested to install and operate on:
noapic
boot optionXubuntu provides a desktop and applications with acceptable performance for web browsing, email, word processing, image editing, file browsing and printing on thin clients. It is not suited to video playback as output can be choppy especially running full screen. Web pages with complex scripting can feel sluggish with 800MHz processors.
You will need:
Install the Compact Flash card in place of the existing flash memory of your thin client. This will require an appropriate cable and adaptor unless your thin client is socketed for Compact Flash.
Download the alternate ISO installation image, not the desktop image of the 32-bit version of Xubuntu 12.04 LTS. Use the downloaded image to create a bootable USB flash drive according to directions at the Xubuntu website. The alternate ISO image is required to install in less than 4GB of drive space. The desktop ISO image should work for larger Compact Flash cards, but these instructions are specific to the alternate installation image.
Newer versions of Xubuntu are available, but again these instructions are specific to Xubuntu 12.04 LTS. Furthermore, newer versions are supplied with a non-PAE kernel compatible with even fewer thin client processors. If you install another version, you may have to improvise.
This is a standard Xubuntu installation. The default options create partitions with optimal alignment, an ext4 root filesystem with a optimal block size and flash performance, and a swap partition. No special accommodations are made or required for write minimisation. While capable of handling the daily traffic of normal disk write operations, Compact Flash devices are NOT as reliable as hard disk drives or solid-state drives. You are advised to implement and use a backup strategy for your installation.
Boot the thin client from the USB flash drive with the alternate installation image. It may be necessary to alter the BIOS setup to boot USB devices. (Try the DEL key with Neoware devices or the F10 key with HP devices to enter BIOS setup.) Once booted, follow these steps:
Wait as additional installer components are loaded.
Wait as the partitions are formatted and the base system installed.
Wait while configuring apt (package sources) and installing software.
Remove the USB flash drive as the system boots your newly installed operating system. The boot process is "quiet" - the screen is blank until the splash screen appears. This can be very slow on older hardware - you might stare at a blank screen for a full minute.
Some thin clients may freeze up during installation, or even in normal operation after a successful installation. Often this can be overcome by including the "noapic" kernel boot parameter. This explicitly disables a feature partially implemented with older VIA and Geode processors, and generally with no performance penalty on thin client hardware. Consult one of the many online guides for using and configuring this kernel parameter. Pay careful attention to spelling: "noapic" is not the same as boot parameter "noacpi".
With some thin clients, the IDE interface often defaults to UDMA/33 speeds because the kernel drivers cannot detect an "80 conductor cable". (See here for more detail on this).
If the Compact Flash card you are using is rated higher than 200x or 30MBps should see some benefit by logging in as root and then:
/etc/default/grub
with your favourite text editor.GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet libata.force=short40c"
update-grub
This article was contributed by Craig Oakes