Installing Ubuntu Linux with FAI
This tutorial will:
- Install FAI 4.2.4 on an Ubuntu 14.04 (64-Bit) 'Trusty Tahr' server
- in order to be able to install clients with Ubuntu 14.04 (64-Bit) using a 14.04 NFSroot
- with the option to install other architectures (32-Bit), versions (Ubuntu 14.10, Ubuntu 12.04) and basically any other debian-based distribution using a single NFSroot.
If you are looking to Install Ubuntu 12.04 LTS with the FAI 3.4.8 packages from the Ubuntu repositories, look here: Installing Ubuntu 12.04 with FAI 3.4.8.
Introduction
You need the following prerequisites in your network:
- Working DNS and DHCP infrastructure (plus DHCP configured to point to your TFTP server)
- Ubuntu 14.04 (64-bit) on the FAI server
- Basic understanding of FAI (class concept, configuration space, ...)
- Adequate knowledge on the workings of DNS, DHCP, PXE and TFTP.
Just for your information, on this page, the following conventions are used:
- FAI server: faiserver.example.com, 192.168.0.10
- FAI client: faiclient.example.com
Setting up the FAI server
Installing FAI
In order to get the latest FAI packages, add the FAI repository to the Ubuntu installation. Open this file:
vi /etc/apt/sources.list.d/fai.list
and add this line to the empty file:
deb http://fai-project.org/download wheezy koeln
Import the GPG key of the FAI repository. If you get error messages about a wrong URI of the key server, try to run this command a second time:
gpg -a --recv-keys 074BCDE4; gpg -a --export 074BCDE4 | apt-key add -
Update the package lists and install FAI:
apt-get update apt-get upgrade apt-get install fai-quickstart
Note: 'fai-quickstart' will install not only FAI-related packages but additional packages like DHCP and TFTP as well. If they are already present on your infrastructure, the following alternative packages will suffice:
apt-get install fai-server fai-doc
Setting up FAI
First and foremost FAI needs to be configured. Open the fai.conf file:
vi /etc/fai/fai.conf
and make sure it looks like this:
# See fai.conf(5) for detailed information. # Account for saving log files and calling fai-chboot. #LOGUSER=fai SERVER=faiserver.example.com # URL to access the fai config space #FAI_CONFIG_SRC=nfs://yourservername/path/to/config/space FAI_CONFIG_SRC=nfs://$SERVER/srv/fai/config # Sending FAI install logfiles from the install client to the # FAI server LOGUSER=fai LOGSERVER=$SERVER FAI_LOGPROTO=ssh
The next important step is to configure the NFSroot. Open the nfsroot.conf:
vi /etc/fai/nfsroot.conf
and edit it like this:
# For a detailed description see nfsroot.conf(5) # "<suite> <mirror>" for debootstrap FAI_DEBOOTSTRAP="trusty http://archive.ubuntu.com/ubuntu" FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1' NFSROOT=/srv/fai/nfsroot TFTPROOT=/srv/tftp/fai NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/ FAI_DEBOOTSTRAP_OPTS="--exclude=info --include=aptitude" # Configuration space FAI_CONFIGDIR=/srv/fai/config
As FAI traditionally is Debian-centric, some additional modifications to the NFSroot packages are required. First, FAI nowadays uses the modern dracut in the NFSroot by default. Due to package dependencies the usage of dracut on Ubuntu will not work easily and would likely break the system. Solution: Use the good old live-boot instead. Second, the Linux kernel has a different package name on Ubuntu as opposed to Debian. Third, the mentioned network card firmware just exists on Debian. Open this file:
vi /etc/fai/NFSROOT
and edit it like this:
# package list for creating the NFSROOT PACKAGES aptitude #sysvinit-core # use this for booting jessie without systemd nfs-common fai-nfsroot module-init-tools ssh rdate lshw rpcbind rsync lftp less dump reiserfsprogs e2fsprogs usbutils hwinfo psmisc pciutils hdparm smartmontools parted mdadm lvm2 dnsutils ntpdate dosfstools xfsprogs xfsdump procinfo numactl dialog console-common kbd iproute moreutils udev subversion xz-utils cupt pxelinux syslinux-common # in jessie we need both # some network cards needs firmware #firmware-bnx2 firmware-bnx2x firmware-realtek #firmware-linux-nonfree # dracut can replace live-boot #dracut-network live-boot- live-boot-initramfs-tools- # choose if you like live-boot or dracut inside the nfsroot #live-boot live-boot-doc # you should not edit the lines below # architecture dependend list of packages that are installed #git # git consumes a lot of disk space on the FAI CD (ISO 9660) PACKAGES aptitude I386 grub-pc #linux-image-686 # packages for Ubuntu natty/oneiric/precise: linux-image-generic live-boot PACKAGES aptitude AMD64 grub-pc #linux-image-amd64 # packages for Ubuntu natty/oneiric/precise: linux-image-generic live-boot
And finally, FAI has to be told to get the packages from the correct repositories to build the NFSroot from. Open this file:
vi /etc/fai/apt/sources.list
and replace the existing contents with the following lines:
# Using the Ubuntu repositories deb http://de.archive.ubuntu.com/ubuntu/ trusty main restricted deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates main restricted deb http://de.archive.ubuntu.com/ubuntu/ trusty universe deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates universe deb http://de.archive.ubuntu.com/ubuntu/ trusty multiverse deb http://de.archive.ubuntu.com/ubuntu/ trusty-updates multiverse deb http://de.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu trusty-security main restricted deb http://security.ubuntu.com/ubuntu trusty-security universe deb http://security.ubuntu.com/ubuntu trusty-security multiverse deb http://extras.ubuntu.com/ubuntu trusty main # FAI repository to get the most up-to-date FAI packages on the install clients deb http://fai-project.org/download wheezy koeln
Creating the NFSroot
Set up FAI:
fai-setup -v
- -v enables verbose output of the above command - recommended!
Go get yourself a nice cup of coffee, as this will take some time.
Now, by default fai-make-nfsroot - which is called by the above command - builds a dracut-based NFSroot. As mentioned above, this does not work on Ubuntu. So fai-make-nfsroot needs to be called again with the instruction to build a live-boot-based NFSroot:
fai-make-nfsroot -vlf
- -v again, enables verbose output
- -l is required in order to be live-boot compatible
- -f will overwrite the existing dracut-based NFSroot.
Execution of this command will also take some time. Another coffee?
The above commands create the necessary PXE boot files in /srv/tftp/fai. Unfortunately, at least with FAI 4.2.4 one file in this directory has no read permissions by default, which needs to be corrected:
chmod 644 /srv/tftp/fai/vmlinuz-*
The basic setup of FAI and the NFSroot is now complete.
Modifying the rest of the server
What is still required is the modification of two other critical components of any FAI install server: NFS and TFTP.
NFS
You need the following settings on your exports (namely, adding a unique fsid for each export) or using FAI in this constellation won't work:
vi /etc/exports
Modify your exports file to look like this:
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /srv/fai/config 192.168.0.0/24(fsid=1,ro,nohide,insecure,no_subtree_check,async) /srv/fai/nfsroot 192.168.0.0/24(fsid=2,ro,nohide,insecure,no_subtree_check,async,no_root_squash)
Start the NFS server:
/etc/init.d/nfs-kernel-server start
TFTP
Next, point the TFTP server to the correct directory:
vi /etc/default/tftpd-hpa
and make this file look like:
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp/fai" TFTP_ADDRESS="[::]:69" TFTP_OPTIONS="--secure"
Now, here comes the next caveat: restarting the TFTP server alone doesn't force it to read this new configuration. A tougher method has to be used:
killall in.tftpd /etc/init.d/tftpd-hpa restart
Preparing boot of a client
In order to tell FAI to install a new client, this command is usually issued, which is a good thing to start with:
fai-chboot -IB 192.168.0.7
However, on Ubuntu, there are some additional pitfalls with FAI 4.2.4. First of all, using the above command only won't allow the client to be installed because some critical information is missing from the resulting pxelinux.cfg file. Open this file:
vi /srv/tftp/fai/pxelinux.cfg/C0A80007
The original file should look like this:
# generated by fai-chboot for host 192.168.0.7 with IP 192.168.0.7 default fai-generated label fai-generated kernel vmlinuz-3.2.0-68-generic append initrd=initrd.img-3.2.0-68-generic ip=dhcp root=/srv/fai/nfsroot boot=live FAI_FLAGS=verbose,sshd,reboot FAI_ACTION=install
Make it look like this:
# generated by fai-chboot for host 192.168.0.7 with IP 192.168.0.7 default fai-generated label fai-generated kernel vmlinuz-3.13.0-35-generic append initrd=initrd.img-3.13.0-35-generic ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live FAI_FLAGS=verbose,sshd,reboot FAI_ACTION=install SERVER=faiserver.example.com FAI_CONFIG_SRC=nfs://$SERVER/srv/fai/config
Pro tip #1: If something goes wrong, these FAI flags will allow you to use a second virtual terminal (Control+Alt+F2) on the install client to see what's going on:
FAI_FLAGS=verbose,sshd,createvt
Pro tip #2: Once on the virtual terminal, you land directly on the live filesystem which will be discarded upon reboot. The filesystem of the install client can be found mounted at /target.
Modifying the FAI configuration space
So far the install clients can boot the live install system, but won't be able to do anything further, because the configuration space is still missing. The config space instructs the live install system what to do with the client [1].
A good starting point are the examples of the fai-doc packages. These will be the starting point of any further modifications, so first, they need to be copied over to the configspace:
cp -a /usr/share/doc/fai-doc/examples/simple/* /srv/fai/config
The examples are perfect for Debian clients, but in order to install Ubuntu, they need to be modified, or client installation will fail.
Now with the example config space in place, some directories need to be created:
mkdir -p /srv/fai/config/files/etc/apt/sources.list/ /srv/fai/config/files/etc/apt/sources.list.d/fai.list /srv/fai/config/files/etc/apt/trustdb.gpg/ /srv/fai/config/files/etc/apt/trusted.gpg/ mkdir -p /srv/fai/config/files/etc/network/interfaces mkdir /srv/fai/config/scripts/UBUNTU
Before continuing, a new custom class shall be introduced: OS_UBUNTU_1404_AMD64. This class tells FAI to install:
- Ubuntu as OS
- Version 14.04 of this OS
- AMD64 (64-Bit) as the desired architecture.
This class will act as a switch in order to decide which files FAI will use in its install sequence.
The most obvious one being the repository configuration. As outlined at the beginning of this tutorial, an Ubuntu 14.04 64-Bit server is used to install an Ubuntu 14.04 64-Bit client. In this case, the next steps are easy: Just copy over your current apt configuration from the install server to the FAI config space in order to be used by the install client. Of course, if you have different requirements regaring what should be installed on the client (e.g. Debian), you have to adjust every single one of these files and name them accordingly!
cp /etc/apt/sources.list /srv/fai/config/files/etc/apt/sources.list/OS_UBUNTU_1404_AMD64 cp /etc/apt/sources.list.d/fai.list /srv/fai/config/files/etc/apt/sources.list.d/fai.list/OS_UBUNTU_1404_AMD64 cp /etc/apt/trustdb.gpg /srv/fai/config/files/etc/apt/trustdb.gpg/OS_UBUNTU_1404_AMD64 cp /etc/apt/trusted.gpg /srv/fai/config/files/etc/apt/trusted.gpg/OS_UBUNTU_1404_AMD64 chmod 644 /srv/fai/config/files/etc/apt/trustdb.gpg/OS_UBUNTU_1404_AMD64
To actually put these files to use, create a new file:
vi /srv/fai/config/hooks/updatebase.UBUNTU
and fill it with contents:
#! /bin/bash # Import custom apt sources.lists and apt keys. echo "Preparing apt" fcopy -v /etc/apt/sources.list fcopy -v /etc/apt/sources.list.d/fai.list fcopy -v /etc/apt/trustdb.gpg fcopy -v /etc/apt/trusted.gpg # Initialize apt-key before apt is called the first time if [ -x $target/usr/bin/apt-key ]; then echo "Apt: list of keys" $ROOTCMD /usr/bin/apt-key list fi
Make this file executable:
chmod 755 /srv/fai/config/hooks/updatebase.UBUNTU
Some additional packages need to be installed on the Ubuntu install client:
vi /srv/fai/config/package_config/UBUNTU
Again, modify this file to look like this:
PACKAGES aptitude I386 linux-image-generic initramfs-tools memtest86+ PACKAGES aptitude CHROOT linux-image-generic- PACKAGES aptitude AMD64 linux-image-generic initramfs-tools memtest86+ PACKAGES aptitude DHCPC isc-dhcp-client PACKAGES aptitude GRUB_PC grub-pc grub-legacy- lilo- PACKAGES aptitude UBUNTU console-setup cryptsetup libpam-mount ubuntu-minimal
Enable networking on the install client.
vi /srv/fai/config/files/etc/network/interfaces/UBUNTU
Modify this file's content to your requirements; the config below will simply use DHCP, which will probably be fine:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
Now on to something crucial: In order to accomodate to the specifics of Ubuntu, three things have to be done:
- Setting the hostname
- Since Ubuntu does not use root but uses sudo instead, a local admin user with the username loc and the default password fai will be created
- The above network configuration will be copied to the install client.
Open a new file:
vi /srv/fai/config/scripts/UBUNTU/10-misc
and paste the following contents:
#! /bin/bash # Set the hostname if [ -n $HOSTNAME ]; then echo $HOSTNAME > $target/etc/hostname fi # Create a local admin user $ROOTCMD useradd --password $ROOTPW --groups adm,dialout,cdrom,plugdev,sudo -c "Local Admin,,," --shell /bin/bash loc $ROOTCMD mkdir /home/loc $ROOTCMD chmod 0700 /home/loc $ROOTCMD chown loc:loc /home/loc fcopy -ir /home/loc # Basic network configuration fcopy -v /etc/network/interfaces
Make this file executable:
chmod 755 /srv/fai/config/scripts/UBUNTU/10-misc
One final thing needs to be done: Basically activating everything you did above by specifying the correct classes for your install client. Open the main FAI control file:
vi /srv/fai/config/class/50-host-classes
and add the configuration for your client between the case $HOSTNAME in statement and the line containing the asterisk *), e.g. like this:
faiclient) echo "FAIBASE DHCPC UBUNTU OS_UBUNTU_1404_AMD64" ;;
As you wanted to install an Ubuntu 14.04 AMD64 client using an Ubuntu 14.04 AMD64 server with an Ubuntu 14.04 AMD64 NFSroot, you are set and done. Go ahead, boot up your client - if required, choosing the network card as boot device - sit back and let FAI handle the installs for you from now on.
Appendix
A. [Optional] Installing different operating systems and architectures
With FAI you can install different versions of Ubuntu like Ubuntu 14.10, different architectures like AMD64 or i386 or even other distributions like Debian in parallel without one affecting the other.
Say, you'd like FAI to not install Ubuntu 14.04 64-bit, but a 32-bit version of Ubuntu. This can be done without any changes to the configuration above. All you have to do is:
- create of a new class matching the architecture you'd like to install, e.g. OS_UBUNTU_1404_I386 and
- create a matching basefile.
If you would like to install previous or future versions of Ubuntu, you have to:
- create of a new class matching the Ubuntu version you'd like to install, e.g. OS_UBUNTU_1204_AMD64 and
- create a matching basefile and
- appropriately modify the apt repositores, namely these files:
- /srv/fai/config/files/etc/apt/sources.list/OS_UBUNTU_1204_AMD64
- /srv/fai/config/files/etc/apt/trustdb.gpg/OS_UBUNTU_1204_AMD64
- /srv/fai/config/files/etc/apt/trusted.gpg/OS_UBUNTU_1204_AMD64
Installing other distributions like Debian is also possible, but out of scope of this article. However, the steps required to do so should be similiar to the ones in this tutorial. Please feel free to add a new Wiki page is you've done that!
Creating the basefile
For each target environment - e.g. Ubuntu 12.04, Ubuntu 14.04 - and architecture - i386, amd64 - you need to create a separate basefile.
The easiest and fastest way to do so is downloading the desired target version (in this example it is assumed you want to use Ubuntu 14.04 32-bit as target environment) and create a Live USB with it.
Then you boot into the Live USB. Once it finished booting, you open a terminal and update the live system first:
apt-get update apt-get dist-upgrade
Then you install the required packages to create the basefile:
apt-get install pbuilder debootstrap
Important: Due to a bug [2] pbuilder will build a 'saucy' basefile by default. This is not what you want. So you need to open the file
vi /usr/share/pbuilder/pbuilderrc
and change the line
DISTRIBUTION = saucy
to
DISTRIBUTION = trusty
Then you can start building the basefile:
pbuilder create
This will take a couple of minutes.
The finished basefile is in /var/cache/pbuilder/base.tgz. Now copy this basefile to your FAI-Server:
scp /var/cache/pbuilder/base.tgz root@faiserver.example.com:
You can now shutdown and discard the live environment; you don't need it anymore.
On the FAI server, copy the basefile to the basefiles directory of your config space:
cp /root/base.tgz /srv/fai/config/OS_UBUNTU_1404_I386.tar.gz
The basefile needs to have a certain filename extension, so the command above did the renaming already.
Done! Now add the class OS_UBUNTU_1404_I386 to an host in your 50-host-classes file and it will install this basefile.
Note: If you are using a differnt operating system version than the NFSroot on your FAI server was built with (e.g. you want to install Ubuntu 14.10, but the NFSroot is based on Ubuntu 14.04), don't forget to modify the apt repository in the config space!
B. [Optional] Using a Debian Wheezy NFSroot
It is perfectly possible to use a Debian Wheezy NFSroot instead of a Ubuntu FAI NFSroot - on an Ubuntu 14.04 FAI server.
This section will talk about:
- Installing FAI 4.2.4 on an Ubuntu 14.04 (64-Bit) 'Trusty Tahr' server
- in order to be able to install clients with Ubuntu 14.04 (64-Bit) using a Debian Wheezy NFSroot
- with the option to install other architectures (32-Bit), versions (Ubuntu 14.10, Ubuntu 12.04) and basically any other debian-based distribution using a single NFSroot.
It is intended to replace the chapter Setting up the FAI server from the beginning of this article.
Installing FAI
In order to get the latest FAI packages, add the FAI repository to the Ubuntu installation. Open this file:
vi /etc/apt/sources.list.d/fai.list
and add this line to the empty file:
deb http://fai-project.org/download wheezy koeln
Import the GPG key of the FAI repository. If you get error messages about a wrong URI of the key server, try to run this command a second time:
gpg -a --recv-keys 074BCDE4; gpg -a --export 074BCDE4 | apt-key add -
Import the GPG keys of the Debian repositories, which are required for building the Debian Wheezy NFSroot:
apt-get install debian-archive-keyring
Update the package lists and install FAI:
apt-get update apt-get upgrade apt-get install fai-quickstart
Note: 'fai-quickstart' will install not only FAI-related packages but additional packages like DHCP and TFTP as well. If they are already present on your infrastructure, the following alternative packages will suffice:
apt-get install fai-server fai-doc
Setting up FAI
First and foremost FAI needs to be configured. Open the fai.conf file:
vi /etc/fai/fai.conf
and edit it like this:
# See fai.conf(5) for detailed information. # Account for saving log files and calling fai-chboot. #LOGUSER=fai SERVER=faiserver.example.com # URL to access the fai config space #FAI_CONFIG_SRC=nfs://yourservername/path/to/config/space FAI_CONFIG_SRC=nfs://$SERVER/srv/fai/config # Sending FAI install logfiles from the install client to the # FAI server LOGUSER=fai LOGSERVER=$SERVER FAI_LOGPROTO=ssh
The defaults of the NFSroot are fine. If you want to review them, open the nfsroot.conf:
vi /etc/fai/nfsroot.conf
and make sure it looks like this (which are the defaults):
# For a detailed description see nfsroot.conf(5) # "<suite> <mirror>" for debootstrap FAI_DEBOOTSTRAP="wheezy http://http.debian.net/debian" FAI_ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1' NFSROOT=/srv/fai/nfsroot TFTPROOT=/srv/tftp/fai NFSROOT_HOOKS=/etc/fai/nfsroot-hooks/ FAI_DEBOOTSTRAP_OPTS="--exclude=info --include=aptitude" # Configuration space FAI_CONFIGDIR=/srv/fai/config
Check if your FAI-specific apt sources.list. Open it:
vi /etc/fai/apt/sources.list
and make sure it looks like this:
# These lines should work for many sites deb http://http.debian.net/debian wheezy main contrib non-free deb http://security.debian.org/debian-security wheezy/updates main contrib non-free # repository that may contain newer fai packages for wheezy deb http://fai-project.org/download wheezy koeln
Creating the NFSroot
Set up FAI:
fai-setup -v
- -v enables verbose output of the above command - recommended!
Go get yourself a nice cup of coffee, as this will take some time.
The basic setup of FAI and the NFSroot is now complete.
Modifying the rest of the server
What is still required is the modification of two other critical components of any FAI install server: NFS and TFTP.
NFS
You need the following settings on your exports (namely, adding a unique fsid for each export) or using FAI in this constellation won't work:
vi /etc/exports
Modify your exports file to look like this:
# /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /srv/fai/config 192.168.0.0/24(fsid=1,ro,nohide,insecure,no_subtree_check,async) /srv/fai/nfsroot 192.168.0.0/24(fsid=2,ro,nohide,insecure,no_subtree_check,async,no_root_squash)
Start the NFS server:
/etc/init.d/nfs-kernel-server start
TFTP
Next, point the TFTP server to the correct directory:
vi /etc/default/tftpd-hpa
and make this file look like:
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp/fai" TFTP_ADDRESS="[::]:69" TFTP_OPTIONS="--secure"
Now, here comes the next caveat: restarting the TFTP server alone doesn't force it to read this new configuration. A tougher method has to be used:
killall in.tftpd /etc/init.d/tftpd-hpa restart
Preparing boot of a client
In order to tell FAI to install a new client, this command is usually issued, which is a good thing to start with:
fai-chboot -IB 192.168.0.7
However, on Ubuntu, there are some additional pitfalls with FAI 4.2.4. First of all, using the above command only won't allow the client to be installed because some critical information is missing from the resulting pxelinux.cfg file. Open this file:
vi /srv/tftp/fai/pxelinux.cfg/C0A80007
The original file should look like this:
# generated by fai-chboot for host 192.168.0.7 with IP 192.168.0.7 default fai-generated label fai-generated kernel vmlinuz-3.2.0-68-generic append initrd=initrd.img-3.2.0-68-generic ip=dhcp root=/srv/fai/nfsroot boot=live FAI_FLAGS=verbose,sshd,reboot FAI_ACTION=install
Make it look like this:
# generated by fai-chboot for host 192.168.0.7 with IP 192.168.0.7 default fai-generated label fai-generated kernel vmlinuz-3.2.0-4-amd64 append initrd=initrd.img-3.2.0-4-amd64 ip=dhcp root=192.168.0.10:/srv/fai/nfsroot aufs FAI_FLAGS=verbose,sshd,reboot FAI_ACTION=install SERVER=faiserver.example.com FAI_CONFIG_SRC=nfs://$SERVER/srv/fai/config
Pro tip #1: If something goes wrong, these FAI flags will allow you to use a second virtual terminal (Control+Alt+F2) on the install client to see what's going on:
FAI_FLAGS=verbose,sshd,createvt
Pro tip #2: Once on the virtual terminal, you land directly on the live filesystem which will be discarded upon reboot. The filesystem of the install client can be found mounted at /target.
All that is left to do is the modification of the FAI configuration space - see the corresponding chapter. This process is not different than the one with the Ubuntu NFSroot. One exception: You need a basefile in any case!
C. Troubleshooting
Logs
If something doesn't work as expected, first and foremost, check the install log. If copying the logs via SSH to your FAI server is working, you should find them at this location on your FAI server:
/var/log/fai/faiclient/last-install
One of the first files to check is the error log:
vi /var/log/fai/faiclient/last-install/error.log
In case copying of the install logs to your FAI server is not working, you have to review them directly on the install client. See chapter Preparing boot of a client for details on how to do that.
Permissions
Found an error in the logs but don't know how to deal with them? Check permissions of the files and directories in the config space, especially those that you did create or modify! They should all be 644, with scripts and hooks being 755.
Files
Check the contents of all modified files. Perhaps there has been some copy&paste error.
Comments
[1] A good overview of the installation sequence and the configuration space is at http://fai-project.org/fai-guide/_anchor_id_config_xreflabel_config_installation_details.html.
[2] https://bugs.launchpad.net/ubuntu/+source/pbuilder/+bug/1316423