The DC requests to mount /tftpboot/< IP address of DC > (in Linux Kernel 2.1 and above it is - /tftpboot/< name of DC in bootptab > ) as its root directory '/' by NFS from server. You must export this from the server (rw, no_root_squash) because the DC wants to write on it (log files, etc).
The root directory / must contain /sbin, /bin, /lib, /etc, /var, /tmp, /root, /dev and /proc.
/sbin, /bin, /lib can be a copy of an existing Redhat Linux system. They can be shared between all DCs. But hard links only. By the way, don't link to server originals.
/etc, /var and /dev should be non-sharable copies. Customise /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/fstab, /etc/conf.modules, and others. Turn off all network services you don't need. Remove all stuff you don't need from /var, e.g. RPM db, lpd files.
/root and /proc should just exist. /tmp should exist and be mode 1777.
You probably want to create /usr and /home mount points. /usr can be mounted ro (read-only).
About 10 MB per DC plus about 15 MB of shared files should be sufficient. By the way, if your DCs are quite similar, the kernel image can also be shared.
Here is an illustrative script to create the first root filesystem.
#!/bin/sh if [ $# != 1 ] then echo Usage: $0 client-IP-addr exit 1 fi cd / umask 022 mkdir -p /tftpboot/$1 # just make these ones for d in home mnt proc tmp usr do mkdir /tftpboot/$1/$d done chmod 1777 /tftpboot/$1/tmp touch /tftpboot/$1/fastboot chattr +i /tftpboot/$1/fastboot # copy these ones cp -a bin lib sbin dev etc root var /tftpboot/$1 cat <<EOF Now, in /tftpboot/$1/etc, edit sysconfig/network sysconfig/network-scripts/ifcfg-eth0 fstab conf.modules and configure rc.d/rc3.d EOF
Here is an illustrative script to duplicate the root filesystem
#!/bin/sh if [ $# != 2 ] then echo Usage: $0 olddir newdir exit 1 fi cd /tftpboot if [ ! -d $1 ] then echo $1 is not a directory exit 1 fi umask 022 mkdir -p $2 # just make these ones for d in home mnt proc tmp usr do mkdir $2/$d done chmod 1777 $2/tmp touch $2/fastboot chattr +i $2/fastboot # link these ones for d in bin lib sbin do (cd $1; find $d -print | cpio -pl ../$2) done # copy these ones for d in dev etc root var do cp -a $1/$d $2 done cat <<EOF Now, in /tftpboot/$2/etc, edit sysconfig/network sysconfig/network-scripts/ifcfg-eth0 fstab (maybe) conf.modules (maybe) and configure rc.d/rc3.d EOF
On the server, make sure the DC is matched by a clause in /etc/X11/xdm/Xaccess and comment out the :0 in /etc/X11/xdm/Xservers. Then make sure that xdm is run from the init scripts.
On the client, run X -query server
You will get the xdm login box and then all your X clients will run on the server.
For other applications use - you could use diskless technique for netboot routers, print servers (but should not be spooling print server), standalone apps, etc.