RemiX diskless - the project

RemiX (remote X) diskless is a complete and powerful graphical remote client system.
Here the true diskless version to be installed in a Linux server.
Related article: RemiX diskless thin client ready


Software inside

  * based on Slackware 12.2
     * glibc, core library, xorg (with latest openchrome driver) 
  * kernel with bootsplash patch
  * rdesktop 1.6 SVN revision r1600 

RemiX 4.x features

Common key features

   * Xserver autoconfiguration and other auto-detection tools
   * possibility of customization of single thin client
   * local resources shared and accessible from desktop client
   * Linux desktop client and Windows desktop clients (multi boot)
   * remote audio (both systems)
   * button power off ACPI
   * user client messages localization (English, Italian at this time)
   * automatic install script inside
   * installable also to USB-stick
   * very speedy installation procedures (2 to 4 minutes per client)
   * power-on to login screen: 15 seconds (typical for 800MHz, 128MB RAM) 
   * Resources consumption
         o 8 MB RAMdisk (with local /usr or NFS /usr)
         o 18 MB RAMdisk (with via-openchrome-vesa driver inside)
         o 32 MB RAMdisk (all-in-RAM system) 
   * 80 MB total in accelerated graphic mode runtime 

Linux remote desktop

   * 2D/3D Xserver (available now also in remote desktop)
   * remote audio (stereo) via ESD client
   * local resouces shared via FTP 

Windows terminal client

   * compatible with XP,W2000,W2008 servers
   * local resources shared via tsclient
   * audio client available 

How it works

RemiX diskless uses tftp service to get clients configuration from server and nfs service to share filesystem.

At boot time init script try to get from server some custom files as Config and This files are stored in /diskless/tftpboot/clients/ folder. "Config.common" file is used as common configuration file for all clients. Init try also to find a custom configuration file named "Config" per every client; search path is /diskless/tftpboot/clients/clientIP, for example /diskless/tftpboot/clients/

In common configuration path (/diskless/tftpboot/clients/), so also in single client configuration path, we can put other useful files as a custom "xorg.conf" (common or single Xorg config) or "" and "" as script files to customize clients (single or entire groups).

Remix, for the remainder, is entirely self-configuring, particularly "autoX" script generates the Xorg configuration file and "remiX" start the entire system, processing Config and xorg.conf files, start graphical desktop or leave boot control at "".

The configuration files (if found on-line or locally) are moved into the folder /custom of root filesystem in RAM. If these files are not found, RemiX uses default values already present in /custom at boot time.

Remix is also multi-boot, as it process several config files (Config, config2, Config3, etc..), but this operation is reserved to the thin client version, in which the different config files are stored on disk.


Installation consist in creation of a folder named "/diskless" and generation of working files

 * download latest remix-diskless compressed archive, example: wget
 * become root: su -
 * unpack the archive in /, example: tar -C / -xzplf remiX-diskless-#version.tar.gz
 * change directory to RemiX devel directory: cd /diskless/remiX-devel/
 * build system work files: ./Make-all

Install step by step

1) download

2) become root

3) unpack remiX-diskless-version-date.tar.gz in filesystem root "/"

4) cd /diskless/remiX-devel/

5) build system files: ./Make-all

6) add to /etc/inetd.conf:

tftp    dgram   udp     wait    root   /usr/sbin/tcpd  in.tftpd -s /diskless/tftpboot -r blksize

7) add to /etc/exports this line:

/diskless/NFS_DISK \

8) configure DHCP service; this is a minimal file /etc/dhcpd.conf:

#------ /etc/dhcpd.conf (Remix4 default) ------
ddns-update-style none;
allow booting;
allow bootp;
default-lease-time -1;
max-lease-time 7200;
# default gateway
option routers;
option subnet-mask;
option broadcast-address;
option domain-name-servers;
#option domain-name "RemiX-domain";
server-name "RemiX-server";
subnet netmask
 #If set "auto" in Config this is the remote desktop server
 #Used in both PXEclient and gPXE as default
 filename "/gpxelinux.0";
 range dynamic-bootp;
 option host-name "RemiX";
 if exists user-class and option user-class = "gPXE"
  filename "/gpxelinux.0";
 group customIP
  host pc-01  { hardware ethernet 00:11:22:33:44:55 ; fixed-address ; }

9) restart NFS and DHCP services

Server configuration

to operate, the system needs services TFTP and DHCP, plus NFS service for clients that uses a "/usr" shared folder:

TFTP configuration

RemiX diskless uses TFTP service to get configuration of clients (common configuration file or single client custom configuration file).
Root of tftp service is /diskless/tftpboot.
In Slackware, that uses inetd, add this line to /etc/inetd.conf:

tftp            dgram   udp     wait    root    /usr/sbin/tcpd  in.tftpd -s /diskless/tftpboot -r blksize

DHCP configuration

to boot via PXE, system needs of pxelinux.0 file. In /etc/dhcpd.conf pxelinux.0 is declared as default:

#---------- /etc/dhcpd.conf -----------
#Used in both PXEclient and gPXE as default
filename "/pxelinux.0";

NFS configuration

RemiX diskless NFS version uses NFS service to share a common compressed "/usr" folder. The location of compressed file /usr (named usr.cramfs) is /diskless/NFS_DISK. There is also an addidional shared folder /diskless/SWAP used to store a swapfile for client (not implemented yet, becouse mismatch kernel implementation). Typical configuration in /etc/exports:


Boot device and client boot image

RemiX can run in several ways:

 * PXE
 * erherboot
 * local disks (HD,flash)
 * USB-stick
 * "all-in-RAM" (min. 128M RAM)
 * "NFS shared /usr" (min. 64MB)

boot via PXE

PXE boot don't needs particular setup; PXE gets kernel image from /diskless/tftpboot/kernels/ and ramdisk images from /diskless/tftpboot/pxelinux.cfg/ initrd_nfs_text.img, initrd_ram_text.img, initrd_nfs.img, initrd_ram.img are standard compressed INITRAMs, while remixfs.igz is an experimental INITRAMFS Default PXE config file is /diskless/tftpboot/pxelinux.cfg/default:

#---------- PXE default ------------------------
# This is the custom client pxelinux config file.
prompt 1
default remix
timeout 50
label  remix
kernel kernels/bzImage
append CUSTOM=diskless CONFIG= initrd=pxelinux.cfg/initrd_nfs.img vga=788 ramdisk_size=8192 rw root=/dev/ram apm=off splash=verbose
label  remixram
kernel kernels/bzImage
append CUSTOM=diskless CONFIG= initrd=pxelinux.cfg/initrd_ram.img vga=788 ramdisk_size=34816 rw root=/dev/ram apm=off splash=verbose
label  remixfs
kernel kernels/bzImage
append CUSTOM=diskless CONFIG= initrd=pxelinux.cfg/remixfs.igz vga=788 apm=off splash=verbose

boot via etherboot

Linux kernel version > 2.6.22 seems not work with images made with mknbi-linux, RemiX uses only gPXE now. If the DHCP request is sended by a gPXE boot routine, then gpxelinux.0 will be used insted pxelinux.0:

#------ /etc/dhcpd.conf (Remix4 default) ------
 if exists user-class and option user-class = "gPXE"
  filename "/gpxelinux.0";

boot local disks (HD,flash)

append "CUSTOM=/dev/hdxx" to /etc/lilo.conf or to default PXE file (hdxx=your installation disk)

boot USB-stick

append "CUSTOM=usbdisk" to /etc/lilo.conf (or to default PXE file)

boot CD-ROM

append "CUSTOM=cdrom" to isolinux.cfg (or to default PXE file)

Choice of client configuration at boot

RemiX is thinked as multiboot system, so it search and process multiple Config files. First config file is called "Config", second "Config2" third "Config3", and so away ...

to choose Config#number file at boot time:

append "CONFIG=#number" to /etc/lilo.conf (or to default PXE file)


append "CONFIG=2"

Running mode

RemiX can run in two modes:

full diskless

to set full diskless system:

append "CUSTOM=diskless" to /etc/lilo.conf or default PXE file

other append as shown above are all "/usr-shared" systems

A look at filesystem tree

/diskless                              #Base of devel system, tftpboot and nfs shared folders
/diskless/tftpboot                     #Base of tftpd service (to set in inetd.conf)
/diskless/tftpboot/pxelinux.cfg        #PXE-Linux config files
/diskless/tftpboot/clients             #Custom configuration files of clients
/diskless/tftpboot/kernels             #Contain precompiled huge kernel
/diskless/NFS_DISK                     #Read-only condivision, contains usr.cramfs: a compressed /usr filesystem (for NFS version)
/diskless/SWAP                         #Read-write network folder to contain swapfiles of clients (not well implemented yet)
/diskless/remiX-devel                  #Devel tree. Note: in first installation exec ./Make-all to build all working files
/diskless/remiX-devel/INITRD           #Ramdisk filesystem and init scripts
/diskless/remiX-devel/USRfilesystem    #All files locates usually in /usr (to buid a compresse /usr file ad loo device)
/diskless/remiX-devel/thinclient-hd    #Filesystem tree of thin client version
/diskless/remiX-devel/examples         #FSeveral examples of client and desktop server configuration

Clients configuration

RemiX is a system with full auto-configure but is also customizable. The configuration parameters and other custom files are stored in /custom folder. The system configuration file is "Config". Since the RemiX system is thinked as multi-boot, you can have more Config#N files: first configuration file is Config, second Config2, third Config3, etc. RemiX, by default, is installed with 2 boot entry, so there are 2 files (Config and Config2) in /custom.

Read more about Config file

A look at the file lilo.conf

RemiX diskless can boot fully over network using an append "CONFIG=diskless", but also it can boot from local devices (fixed or removable). In these cases this is a suitable lilo.conf:

# LILO configuration file
# generated by remix
# Start LILO global section
boot = /dev/hda
#message = /boot/graphical
compact        # faster, but won't work on all systems.
timeout = 50
vga = 788
bmp-colors= 15,0,0;0,15,15
bmp-table= 478p,219p,1,15
bmp-timer= 575p,445p,0,15,15
# End LILO global section
# Linux bootable partition config begins
image = /boot/linux
  label = Desktop1
  read-write # Non-UMSDOS filesystems should be mounted read-only for checking
  append = "CUSTOM=/dev/hda1 load_ramdisk=1 ramdisk_size=8192 prompt_ramdisk=0 root=/dev/ram rw apm=off splash=silent"
image = /boot/linux
  label = Desktop2
  read-write # Non-UMSDOS filesystems should be mounted read-only for checking
  append = "CUSTOM=/dev/hda1 CONFIG=2 load_ramdisk=1 ramdisk_size=8192 prompt_ramdisk=0 root=/dev/ram rw apm=off splash=silent"
image = /boot/linux
  label = SETUP
  read-write # Non-UMSDOS filesystems should be mounted read-only for checking
  append = "load_ramdisk=1 ramdisk_size=8192 prompt_ramdisk=0 root=/dev/ram rw apm=off splash=verbose"


Latest version 4.0beta-100930

RemiX(v4), diskless version, with all xorg drivers and soundcard drivers included. Drivers are default open source drivers, does not include the proprietary drivers provided by nVidia or ATI. This is also a devel version and contain sources and scripts to build system and bootable images, thin client versions included.



RemiX diskless is released under GPL

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

See GPL licenses GPL

Récupérée de « »