Difference between revisions of "Use nfsroot for diskless clients"

From FAIWiki
Jump to: navigation, search
(new grub.cfg)
Line 75: Line 75:
 
set default="FAI diskless client"
 
set default="FAI diskless client"
 
set timeout=3
 
set timeout=3
set resolution=1024x768
 
 
if loadfont /boot/grub/ascii.pf2 ; then
 
  insmod png
 
  set gfxmode=640x480
 
  insmod gfxterm
 
  insmod vbe
 
  terminal_output gfxterm
 
fi
 
  
 
# make sure we can access partitions
 
# make sure we can access partitions
 
insmod part_msdos
 
insmod part_msdos
 
insmod part_gpt
 
insmod part_gpt
 +
insmod all_video
 +
insmod gfxterm
  
if [ ${iso_path} ] ; then
+
set gfxmode=auto
    set loopback="findiso=${iso_path}"
+
set color_normal=white/black
fi
+
set color_highlight=red/black
 +
set menu_color_normal=white/black
 +
set menu_color_highlight=black/yellow
  
 
menuentry "FAI diskless client" --unrestricted {
 
menuentry "FAI diskless client" --unrestricted {
     set gfxpayload=$resolution
+
     search --set=root --file /FAI-CD
 
     linux  /boot/vmlinuz rd.live.image root=live:CDLABEL=FAI_CD
 
     linux  /boot/vmlinuz rd.live.image root=live:CDLABEL=FAI_CD
 
     initrd  /boot/initrd.img
 
     initrd  /boot/initrd.img

Revision as of 15:07, 27 March 2021

How to turn the FAI nfsroot into a file system for diskless clients

Someone asked me about using the FAI nfsroot for a diskless client setup. The clients should PXE boot and mount it's whole file system via NFS (NFS v3, v4 is not working with overlayfs) from the install server.

It's pretty easy. Tested with FAI 5.3.6 and dracut from Debian 9 (stretch).

First add all packages you like to have for your diskless clients to /etc/fai/NFSROOT.

Create the FAI nfsroot

fai-make-nfsroot -v

Then disable some FAI specific things inside the nfsroot:

chroot /srv/fai/nfsroot bash
rm -f /etc/init.d/rcS
dpkg-divert --package fai-nfsroot --remove --rename /etc/init.d/rcS
insserv -r fai-abort
exit

This also works with XFCE and xorg running a graphical desktop.


That's it. Now, boot your client. Since FAI is using overlayfs, the whole filesystem is writeable for the client, even it's mounted read-only.


How to create a Live CD with Xfce desktop

You will have an account called demo, the pw is fai.


fai-make-nfsroot -v

chroot /srv/fai/nfsroot bash
rm -f /etc/init.d/rcS
dpkg-divert --package fai-nfsroot --remove --rename /etc/init.d/rcS
insserv -r fai-abort
export LC_ALL=C
adduser --disabled-login --gecos "fai demo user" demo
ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1'
usermod -p "$ROOTPW" demo

apt-cache dumpavail > /var/lib/dpkg/available
apt-get update
apt-get -y install at-spi2-core locales task-xfce-desktop network-manager systemd-sysv sysvinit-core-
apt-get clean

rm lib/systemd/system/wpa_supplicant@.service
# optional
# rm -f /etc/hosts /etc/resolv.conf* /etc/fai/fai.conf /var/lib/apt/lists/*_* /var/tmp/base.tar.xz
exit

Then create the CD/USB ISO image using this command

fai-cd -MJd '' -g ~/grub.cfg-diskless ~/fai-diskless.iso

Adding -H to fai-cd will add some directories onto the CD, that are normally excluded. See man page https://fai-project.org/doc/man/fai-cd.html


Here's the grub.cfg.diskless:

## grub2 configuration
set default="FAI diskless client"
set timeout=3

# make sure we can access partitions
insmod part_msdos
insmod part_gpt
insmod all_video
insmod gfxterm

set gfxmode=auto
set color_normal=white/black
set color_highlight=red/black
set menu_color_normal=white/black
set menu_color_highlight=black/yellow

menuentry "FAI diskless client" --unrestricted {
    search --set=root --file /FAI-CD
    linux   /boot/vmlinuz rd.live.image root=live:CDLABEL=FAI_CD
    initrd  /boot/initrd.img
}


This disk space for creating new files is limited by the amount of free space in the disk image (created inside fai-cd in subroutine calculate_required_size). You will have about 200MB of free disk space. This is NO persistent storage.


You can download an ISO image, for and example of this Live CD http://fai-project.org/fai-cd/debian9-live-xfce.iso