Pasted from Ralf Hinze's mail: First of all, let me say thanks for this great how-to. To my surprise, I was able to set up a diskless node within a few hours. I ran into a few problems which I have documented below. I hope the feedback is useful. Thanks again and cheers, Ralf Comments on the how-to ---------------------- - Before you start: Maybe it's worth mentioning that you have to select LAN booting in the BIOS (after all, the how-to is aimed at beginners). - About the slave kernel: I am not sure why you recommend to compile the slave kernel without modules. Loading modules works without any problems here. [Of course, the network driver must be built-in.] - Code Listing2.13: Creating mount points and directories in the slave's filesystem: I would add # chmod a+w /diskless/192.168.1.21/tmp # mkdir /diskless/192.168.1.21/var/spool KDE uses "tmp" a lot, "cron" requires "spool". - Code Listing3.8: Sample /etc/conf.d/dhcp: DHCPD_OPTS="-d" didn't work for me; dhcpd wouldn't start. - About PXELINUX: The guide says that PXELINUX supports *various* kernel options. As far as I can tell it supports arbitrary options via "append" (including boot-splash). Maybe it's helpful to show a Grub configuration file and a corresponding one for PXELINUX, see below. title=Gentoo root (hd0,0) kernel (hd0,0)/boot/bzImage root=/dev/hda3 video=vesa:ywrap,mtrr vga=0x317 splash=silent initrd=/boot/initrd-1024x768 label Gentoo kernel bzImage append ip=dhcp root=/dev/nfs nfsroot=192.168.1.1:/diskless/192.168.1.21 video=vesa:ywrap,mtrr vga=0x317 splash=silent initrd=initrd-1024x768 - Code Listing4.4: Files that PXE looks for in pxelinux.cfg/ in sequence: Interestingly, the hex digits of the slave's MAC address *must* be in lower case (took me a while to figure this out). - Code Listing4.5: Sample pxelinux.cfg/default: Change "DEFAULT /diskless/bzImage" to "DEFAULT bzImage": the files are specified relative to the root path "/diskless". - Troubleshooting the network boot process: No problems here. I just wanted to remark that this section was very valuable. - Code Listing5.5: Sample master /etc/exports: Maybe add "sync" to the options (otherwise "exportfs" will issue a warning). - Code Listing5.6: Sample slave fstab: What is the purpose of the "nolock" option? My understanding is that this is only required for old NFS servers that don't support locking. - Code Listing6.1: Creating a slave filesystem: I used "rsync -avz" instead of "cp" since this also takes care of symbolic links, owners and permissions. - Initialization scripts: The "netmount" script mounts "usr", "opt" and "home". Given the standard dependencies it is started *after* "consolefont", "keymaps" etc. However, the latter scripts already need to access the "usr" directory. Therefore, I added "need netmount" dependencies to "consolefont" and "keymaps" (and several others). This resolved most of the booting problems. One glitch remains: on reboot "netmount" always fails reporting that the device is still busy. BTW, what is the difference between "netmount" and "nfsmount" (apart from the fact that "netmount" also takes care of other network filesystems)? Missing files and directories ----------------------------- Several services failed at boot time because the standard directories did not exist. May be it's worth mentioning this potential source of trouble in the how-to. - "rc" uses "find" which usually resides in "usr/bin" (I copied "find" to "bin") - "xkb" requires "/var/lib/xkb" (if the directory is not present, X does not configure the keyboard correctly; one symptom is that the "ALT Gr" key does not work) - "vixie-cron" requires "/var/spool" - "postfix" requires "/var/spool/postfix" - "statd" (used by "nfsmount") requires "/var/lib/nfs" Maintenance ----------- Finally, is there a recommended way to keep "bin", "lib", "sbin" and, in particular, "etc" up to date?
Various changes committed (tx to unsolo). See also #45545