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

Sommaire

Software inside

  * based on Slackware 12.2
     * glibc, core library, xorg (with latest openchrome driver) 
  * kernel 2.6.29.4-huge 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 custom.sh. 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/192.168.0.11/.

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 "custom.sh" and "custom.sh.common" 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 "custom.sh".

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

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

 * download latest remix-diskless compressed archive, example: wget http://www.zoros.org/remix/4.0/remiX-diskless-#version.tar.gz
 * 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 http://www.zoros.org/remix/4.x/remiX-diskless-version-date.tar.gz

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  192.168.0.0/255.255.255.0 \
(ro,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,anonuid=-2,anongid=-2)

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;
authoritative;
#
# default gateway
option routers 192.168.0.200;
#
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option domain-name-servers 208.67.222.222;
#option domain-name "RemiX-domain";
server-name "RemiX-server";
#
subnet 192.168.0.0 netmask 255.255.255.0
{
 #If set "auto" in Config this is the remote desktop server
 next-server 192.168.0.1;
 #
 #Used in both PXEclient and gPXE as default
 filename "/gpxelinux.0";
 #
 range dynamic-bootp 192.168.0.128 192.168.0.248;
 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 192.168.0.11 ; }
 }
}


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:

/diskless/NFS_DISK  192.168.0.0/255.255.255.0(ro,sync,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,subtree_check,secure_locks,anonuid=-2,anongid=-2)
/diskless/SWAP      192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

Boot device and client boot image

RemiX can run in several ways:

 * PXE
 * erherboot
 * local disks (HD,flash)
 * USB-stick
 * CD-ROM
 * "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)

example:

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
#
map=/boot/map
#message=/boot/message
#
#message = /boot/graphical
#
compact        # faster, but won't work on all systems.
prompt
large-memory
timeout = 50
vga = 788
#
bitmap=/boot/lilo-remix.bmp
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
  initrd=/boot/initrd_ram.img
  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
  initrd=/boot/initrd_ram.img
  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
  password=mypass
  label = SETUP
  initrd=/boot/initrd_ram.img
  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"

Download

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.

Changelog

License

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 « http://www.zoros.org/wiki/index.php?title=Remix_diskless_project »