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.