Hello! We have used diskless clients for years. I am typing this answer on one :-) .
I install them just like regular machines. A couple of hooks are needed: chboot.DISKLESS contains just "skiptask chboot". I manually change the tftp configuration afterwards to boot the installed kernel; partition.DISKLESS (below) is a bit longer, and involves mounting the appropriate install location from the disk server onto "/target", creating a one-line fstab, and an empty disk_var.sh, and skipping the tasks partition and mountdisks. There are a couple of other modifications for the sake of efficiency, but these two should be the only changes which enable installation of a diskless client. Of course you also need to set up a server to export the root directory with appropriate permissions and make sure that the NFS is efficient and reliable in *your* network. My root is currently mounted as rw,vers=3,rsize=32768,wsize=32768,namlen=255,hard,intr,nolock,proto=tcp, timeo=7,retrans=3,sec=sys,mountproto=udp . Your preferences and situation may vary. Here is my partition.DISKLESS, derived from sample code which came with FAI some versions ago. ------------------------------- snip -------------------------------- #! /bin/sh # install a diskless workstation # this is just an example, but not perfect code # # (c) Thomas Lange, 2001, [email protected] # server and all filesystems for diskless client server=glauber root=/export/$HOSTNAME usr= var= swap= # The mount point does not necessarily exist at this stage yet. [ ! -d $target ] && mkdir $target # dpkg wants a lock but linux NFS can't do it yet mountopt="-o nolock,async" # Add the options which helped to speed up diskless machines under etch. mountopt=${mountopt},tcp,intr,rsize=8192,wsize=8192,retrans=10 # mount2dir can't mount nfs directories yet, so do it now # and skip the default task later # also clean up the directories (preserve is not yet possible) mount $mountopt $server:$root $target echo 'Deleting target files from previous OS may take some time...' echo 'You may help a little by deleting files yourself on the server.' rm -rf $target/.[0-z]* $target/* (cd $target; mklost+found) #mkdir $target/usr #mount $mountopt $server:$usr $target/usr ------------------------------- snip -------------------------------- Toomas Tamm
