[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ next ]
Before booting the client for the first time, you have to choose which medium you use for booting. You can use the boot floppy or configure the computer to boot via network card using a boot PROM. Also booting from CD-ROM or from an USB stick is easy to set up. The preferred method for booting is using PXE. PXE is the Preboot Execution Environment which most modern network cards support.
If you have a 3Com network card that is equipped with a boot ROM by Lanworks Technologies or already includes the DynamicAccess Managed PC Boot Agent (MBA) software[5], you can enter the MBA setup by typing Ctrl+Alt+B during boot. The setup should look like this:
Managed PC Boot Agent (MBA) v4.00 (C) Copyright 1999 Lanworks Technologies Co. a subsidiary of 3Com Corporation All rights reserved. =============================================================================== Configuration Boot Method: PXE Default Boot: Network Local Boot: Enabled Config Message: Enabled Message Timeout: 3 Seconds Boot Failure Prompt: Wait for timeout =============================================================================== Use cursor keys to edit: Up/Down change field, Left/Right change value ESC to quit, F9 restore previous settings, F10 to save
Set the boot method to PXE (do not use RPL or BOOTP) and enable
local boot in this menu. So the first boot device will be the network card
using PXE, and the second should be the local hard disk. This has to be
configured in the BIOS of your computer. For using the BOOTP protocol choose
TCP/IP and set the protocol to BOOTP. When using
BOOTP, you have to make a symbolic link from the host name of your client to
the appropriate kernel image in /srv/tftp/fai
. You can also use
the utility tlink
(/usr/share/doc/fai-doc/examples/utils/tlink
) to create this link.
The file installimage_3com
is created by imggen
and
is suitable for booting 3Com network cards.[6]
Most modern bootable network cards support the PXE boot environment. Some
network cards (e.g. on notebooks) have a fixed boot configuration, so they can
only use the PXE boot protocol. This requires a PXE Linux boot loader and a
special version of the TFTP daemon, which is available in the
Debian package tftpd-hpa
. First install following additional
needed packages:
# apt-get install dhcp3-server syslinux tftpd-hpa
Then set up the DHCP daemon. A sample configuration file can be found in
/usr/share/doc/fai-doc/examples/etc/dhcpd.conf
. Copy this file to
/etc/dhcp3/dhcpd.conf
. Then enable the special tftp daemon using
this line in file /etc/inetd.conf
:
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /srv/tftp/fai
The install client then loads the pxelinux boot loader which receives its
configuration via TFTP from a file in the directory
/srv/tftp/fai/pxelinux.cfg
(defined by the variable
TFTPROOT in /etc/fai/make-fai-nfsroot.conf
). Using the
command fai-chboot(8)
you can define which kernel will be loaded
by the PXE Linux loader and which additional parameters are passed to this
kernel. You should read the manual pages, which give you some good examples.
See /usr/share/doc/syslinux/pxelinux.doc
for more information
about how to boot such an environment. The PXE environment uses the original
kernel image (not the netboot image made by mknbi-linux) which is copied to
/srv/tftp/fai/vmlinuz-install
.
If your network card can't boot by itself, you have two options. The first is
to create a small boot floppy that uses etherboot, which will provide the PXE
feature for your network card. So you can use DHCP and TFTP to get the install
kernel that was created with mknbi-linux(8)
. A lot of ethernet
cards support booting via ethernet if a special boot EPROM is inserted or
booted from floppy provided by rom-o-matic.net/
. In depth
documentation about booting via ethernet may be found at
www.etherboot.org
. The second option is to boot via floppy disk
that is created with the command make-fai-bootfloppy(8)
. Since
there's no client specific information on this floppy, it's suitable for all
your install clients. You can also specify additional kernel parameters for
this boot floppy or set other variables, if desired. Do not enable BOOTP
support when you have a DHCP server running in your network and vice versa.
This could lead to missing information. There's also a manual page for
make-fai-bootfloppy(8)
. If you have no BOOTP or DHCP server,
supply the network configuration as kernel parameters. The format is
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<host-name>:<device>:<autoconf> for setting up the network and nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] for specifying the nfsroot (which is required as the default path is not suitable for FAI.)
For additional information see
/usr/src/linux/Documentation/nfsroot.txt
in the kernel sources.
It's possible to perform an automatic installation from CD-ROM without an
install server. The CD-ROM contains all data needed for the installation. The
command fai-cd(8)
puts the nfsroot, the configuration space and a
subset of the Debian mirror onto a CD-ROM. The partial mirror is created using
the command fai-mirror(1)
which contains all packages that are
used by the classes used in your configuration space. A sample ISO image is
available at www.informatik.uni-koeln.de
/fai/fai-cd/
.
Using the command fai-cd(8)
you can also create a bootable USB
stick. First format your stick with an ext2 file system (ext3 makes no sense
on flash memory devices). Then mount it. After that call: fai-cd -m
/path/to/mirror -u /path/to/mounted/stick Then unmount the USB stick.
The USB stick must be formatted with an ext2 file system. VFAT is not yet
tested. Currently the file system that will be written onto the stick is not
compressed.
Now it's time to boot your install clients for the first time. They will fail to boot completely, because no BOOTP or DHCP daemon is running yet or recognizes the hosts. But you can use this first boot attempt to easily collect all Ethernet addresses of the network cards.
You have to collect all Ethernet (MAC) addresses of the install clients and assign a host name and IP address to each client. To collect all MAC addresses, now boot all your install clients. While the install clients are booting, they send broadcast packets to the LAN. You can log the MAC addresses of these hosts by running the following command simultaneously on the server:
# tcpdump -qtel broadcast and port bootpc >/tmp/mac.list
After the hosts have been sent some broadcast packets (they will fail to boot
because bootpd
isn't running or does not recognize the MAC address
yet) abort tcpdump
by typing ctrl-c. You get a list
of all unique MAC addresses with these commands:
# perl -ane 'print "\U$F[0]\n"' /tmp/mac.lis|sort|uniq
After that, you only have to assign these MAC addresses to host names and IP
addresses (/etc/ethers
and /etc/hosts
or
corresponding NIS maps). With this information you can configure your
BOOTP
or DHCP
daemon (see the section Configuration of the BOOTP daemon, Section 4.7). I
recommend to write the MAC addresses (last three bytes will suffice if you have
network cards from the same vendor) and the host name in the front of each
chassis.
You should only use this method if you can't use a DHCP server, since it's
easier to create and manage the configuration for DHCP. An example
configuration for the BOOTP daemon can be found in
/usr/share/doc/fai-doc/examples/etc/bootptab
.
# /etc/bootptab example for FAI # replace FAISERVER with the name of your install server .faiglobal:\ :ms=1024:\ :hd=/srv/tftp/fai:\ :hn:bs=auto:\ :rp=/srv/fai/nfsroot: .failocal:\ :tc=.faiglobal:\ :sa=FAISERVER:\ :ts=FAISERVER:\ :sm=255.255.255.0:\ :gw=134.95.9.254:\ :dn=informatik.uni-koeln.de:\ :ds=134.95.9.136,134.95.100.209,134.95.100.208,134.95.140.208:\ :nt=time.rrz.uni-koeln.de,time2.rrz.uni-koeln.de: # now one entry for each install client demohost:ha=0x00105A240012:bf=demohost:tc=.failocal:T172="verbose sshd createvt debug": ant01:ha=0x00105A000000:bf=ant01:tc=.failocal:T172="sshd":
Insert one entry for each install client at the end of this file as done for the hosts demohost and ant01. Replace the string FAISERVER with the name of your install server. If the install server has multiple network cards and host names, use the host name of the network card to which the install clients are connected. Then adjust the other network tags (sm, gw, dn, ds) to your local needs.
Subnet mask
Default gateway / router
Domain name
List of DNS server. The /etc/resolv.conf
file will be created
using this list of DNS servers and the domain name.
List of FAI_FLAGS; e.g. verbose, debug, reboot, createvt, sshd
The tag for time servers (nt) are optional. Tags with prefix
T (starting from T170) are generic tags which are used to transfer
some FAI specific data to the clients[7] The list of FAI_FLAGS can be space or comma
separated. FAI_FLAGS in bootptab
must be separated by
whitespace. If you define FAI_FLAGS as an additional kernel
parameter, the flags must be separated with a comma. If you do not have full
control over the BOOTP or DHCP daemon (because this service is managed by a
central service group) you can also define the variable FAI_ACTION
in the /fai/class/*.var
scripts. When you have created your
bootptab
file, you have to enable the BOOTP daemon once. It's
installed but Debian does not enable it by default. Edit
/etc/inetd.conf
and remove the comment (the hash) in the line
containing #bootps. Then tell inetd
to reload its
configuration.
# /etc/init.d/inetd reload
The BOOTP daemon automatically reloads the configuration file if any changes are made to it. The daemon for DHCP must always be manually restarted after changes to the configuration file are made.
Now it's time to boot all install clients again! FAI can perform several
actions when the client is booting. This action is defined in the variable
FAI_ACTION. Be very careful if you set FAI_ACTION to
install. This can destroy all your data on the install client, indeed
most time it should do this ;-). It's recommended to change this only on a
per-client base in the BOOTP configuration. Do not change it in the section
.failocal in /etc/bootptab
, which is a definition for
all clients.
The BOOTP daemon can also be started in debug mode if it is not enabled in
inetd.conf
:
# bootpd -d7
An example for dhcpd.conf(5)
is available in
/usr/share/doc/fai-doc/examples/etc
, which is working with version
3.x of the DHCP daemon. Start using this example and look at all options used
therein. One issue to bear in mind when configuring your DHCP daemon is that
the daemon needs to supply the nfsroot path to the client because the kernel
uses a path different from /srv/fai/nfsroot
by default. If you
make any changes to the DHCP daemon configuration, you must restart the daemon.
# /etc/init.d/dhcp3-server restart
Therefore it's recommended to only supply data into this configuration file,
which doesn't change frequently. By default, the DHCP daemon writes its log
files to /var/log/daemon.log
. The command
fai-chboot(8)
is used for creating a per host configuration for
the pxelinux environment.
These are the messages when booting from floppy disk. From FAI 3.2 the kernel and initrd will not fit onto a 1.4M floppy disk any more.
GRUB loading stage2.............. < now the grub menu with multiple boot options is displayed > BOOTING 'FAI-BOTH' kernel (fd0)/vmlinuz-2.4.27 root=/dev/nfs ip=both [Linux-bzImage, setup=0x1400, size=0xd8450] Uncompressing Linux... OK, booting the Kernel. Linux version 2.4.27 (root@kueppers) (gcc version 2.95.4 20011002 . . .
After this, the rest of the boot messages will be equal to those when booting from network card. When booting from network card with PXE you will see:
Managed PC Boot Agent (MBA) v4.00 . . Pre-boot eXecution Environment (PXE) v2.00 . . DHCP MAC ADDR: 00 04 75 74 A2 43 DHCP.../ CLIENT IP: 192.168.1.12 MASK: 255.255.255.0 DHCP IP: 192.168.1.250 GATEWAY IP: 192.168.1.254 PXELINUX 3.31 (Debian, 2007-03-09) Copyright (C) 1994-2005 H. Peter Anvin UNDI data segment at: 0009D740 UNDI data segment size: 3284 UNDI code segment at: 00090000 UNDI code segment size: 24C0 PXE entry point found (we hope) at 9D74:00F6 My Ip address seems to be C0A801C0 192.168.1.12 ip=192.168.1.12:192.168.1.250:192.168.1.254:255.255.255.0 TFTP prefix: Trying to load pxelinnux.cfg/01-00-04-75-74-A2-43 Trying to load pxelinnux.cfg/C0A801C0 Loading vmlinuz-2.6.18-5-486.....................Ready. Loading initrd.img-2.6.18-5-486.................................. Ready Uncompressing Linux... OK, booting the Kernel. Linux version 2.6.18-5-486 (Debian 2.6.18.dfsg.1-13etch1) . . Done. Mounting root file system..... eth0: link up Registering unionfs 1.4 unionfs: debugging is not enabled . . Begin: Running /scripts/live-premount ... Done. Done. FATAL: Module not found. IP-Config: eth0 hardware address 00:0c:29:c9:81:38 mtu 1500 DHCP RARP ipconfig: /tmp/net-eth0.conf: SIOCGIFINDEX: No such device IP-Config: eth0 guessed broadcast address 192.168.1.255 IP-Config: eth0 complete (from 192.168.1.250): address: 192.168.1.12 broadcast: 192.168.1.255 netmask: 255.255.255.0 gateway: 192.168.1.254 dns0 : 192.168.1.250 dns1 : 192.168.8.9 host : demohost domain : informatik.uni-koeln.de rootserver: 192.168.1.250 rootpath: filename : pxelinux.0 Begin: Trying netboot from 192.168.1.250:/srv/fai/nfsroot ... FATAL: Module not found. Begin: Trying nfsmount -o nolock -o ro 192.168.1.250:/srv/fai/nfsroot /live/image ... . . ------------------------------------------------- Fully Automatic Installation - FAI FAI 3.2, 21 Aug 2007 Copyright (c) 1999-2007 Thomas Lange <lange@informatik.uni-koeln.de> ------------------------------------------------- Calling task_confdir Kernel parameters: initrd=initrd.img-2.6.18-5-486 ip=dhcp root=/dev/nfs nfsroot=/srv/fai/nfsroot boot=live FAI_FLAGS=verbose,sshd,c reatevt FAI_ACTION=install BOOT_IMAGE=vmlinuz-2.6.18-5-486 Reading /var/log/fai/current/boot.log FAI_FLAGS: verbose sshd createvt Configuration space kueppers:/srv/fai/config mounted to /var/lib/fai/config Can't connect to monserver on kueppers port 4711. Monitoring disabled. Calling task_setup FAI_FLAGS: verbose sshd createvt rdate: connect: Connection refused 21 Aug 14:26:53 ntpdate[3279]: step time server 134.95.4.129 offset 548.691554 sec Press ctrl-c to interrupt FAI and to get a shell Calling task_defclass /usr/bin/fai-class: Defining classes. Executing /var/lib/fai/config/class/10-base-classes. 10-base-classes OK. Executing /var/lib/fai/config/class/20-hwdetect.source. . . 50-host-classes OK. List of all classes: DEFAULT LINUX I386 FAIBASE DHCPC DEMO GRUB demohost LAST Calling task_defvar Executing FAIBASE.var ++ FAI_ALLOW_UNSIGNED=1 ++ CONSOLEFONT= ++ KEYMAP=us-latin1 ++ UTC=yes ++ TIMEZONE=Europe/Berlin ++ ROOTPW='$1$kBnWcO.E$djxB128U7dMkrltJHPf6d1' ++ MODULESLIST='usbkbd ehci-hcd ohci-hcd uhci-hcd usbhid psmouse' Loading keymap(s) us-latin1 ...done. Calling task_action FAI_ACTION: install Performing FAI installation. All data may be overwritten!
When the copyright message of FAI is shown, the install client has mounted the
nfsroot[8] to the clients' root
directory /
. This is the whole file system for the client at this
moment. After task_confdir is executed, the configuration space
is mounted or received from a CVS repository. Before the installation is
started (FAI_ACTION=install) the computer beeps three times. So, be
careful when you hear three beeps but you do not want to perform an
installation!
This is the error message you will see, when your network card is working, but the install server does not export the configuration space directory to the install clients, mostly a problem of missing permissions on the server side.
Begin: Mounting root file system... ... eth0: link up BusyBox v1.1.3 (Debian 1:1.1.3-4) Built-in shell (ash) Enter 'help' for a list of built-in commands. /bin/sh: can't access tty: job control turned off (initramfs)
You will get a shell prompt and can look at the log files, for examples
/live.log
or /tmp/net-eth0.conf
.
Use the following command on the isntall server to see which directories are exported from the install server (named faiserver):
showmount -e faiserver
The following error message indicates that your install client doesn't get an
answer from a DHCP server. Check your cables or start the
dhcpd(8)
daemon with the debug flag enabled.
PXE-E51: No DHCP or BOOTP offers received Network boot aborted
These are the messages when you are using the BOOTP method and no BOOTP server replies.
Sending BOOTP requests ........ timed out! IP-Config: Retrying forever (NFS root)...
If you get the following error message, the install kernel could not detect your network card, for example because of a missing driver:
Begin: Mounting root file system... ... Kernel panic - not syncing: Attempted to kill init!
Check the initrd in the nfsroot if the kernel driver of your network card is included there.
Now the clients have booted with FAI_ACTION set to sysinfo.
Type ctrl-c to get a shell or use Alt-F2 or
Alt-F3 and you will get another console terminal, if you have
added createvt to FAI_FLAGS. Remote login is available
via the secure shell if sshd is added to FAI_FLAGS.
The encrypted password is set with the variable FAI_ROOTPW in
/etc/fai/make-fai-nfsroot.conf
and defaults to "fai".
You can create the encrypted password using mkpasswd(1)
and use
the crypt(3)
or md5 algorithm. This is only the root password
during the installation process, not for the new installed system. You can
also log in without a password when using SSH_IDENTITY. To log in
from your server to the install client (named demohost in this example) use:
> ssh root@demohost Warning: Permanently added 'demohost,134.95.9.200' to the list of known hosts. root@demohost's password:
You now have a running Linux system on the install client without using the
local hard disk. Use this as a rescue system if your local disk is damaged or
the computer can't boot properly from hard disk. You will get a shell and you
can execute various commands (dmesg
, lsmod
,
df
, lspci
, ...). Look at the log file in
/tmp/fai
. There you can find much information about the boot
process. All log files from /tmp/fai
are also written to the
$LOGSERVER (if not defined: the server defined by $SERVER
from get-boot-info) into the directory
~fai/demohost/sysinfo/[9]
FAI mounts all file systems it finds on the local disks read only. It also
tells you on which partition a file /etc/fstab
exists. When only
one file system table is found, the partitions are mounted according to this
information. Here's an example:
demohost:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 4099064 414088 3645296 11% / udev 10240 76 10164 1% /dev 192.168.1.250:/srv/fai/nfsroot 3905600 410976 3454944 11% /live/image unionfs 4099064 414088 3645296 11% / tmpfs 193464 3112 190352 2% /live/cow unionfs 4099064 414088 3645296 11% /dev/.static/dev unionfs 4099064 414088 3645296 11% /tmp/fai faiserver:/srv/fai/config 3905600 410976 3454944 11% /var/lib/fai/config /dev/sda1 241116 74519 154149 33% /target /dev/sda9 4364212 139888 4179988 4% /target/home /dev/sda7 553376 16840 536536 4% /target/tmp /dev/sda8 2221628 275936 1832840 14% /target/usr /dev/sda6 577096 172924 374856 32% /target/var udev 10240 76 10164 1% /target/dev
This method can be used as a rescue environment! In the future
it will be possible to make backups or restore data to existing file systems.
If you need a file system with read-write access use the rwmount
command:
demohost:~# rwmount /target/home
If the install client boots with action sysinfo, you can also check if
all information from the BOOTP or DHCP daemons are received correctly. The
received information is written to /tmp/fai/boot.log
. An example
of the result of a DHCP request can be found in The setup routines of the install clients, Section
7.3.
At any time you can reboot the computer using the command
faireboot
, also if logged in from remote. If the installation
hasn't finished, use faireboot -s, so the log files are also
copied to the install server.
[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ next ]
FAI Guide (Fully Automatic Installation)
FAI Guide version 2.6.8, 7 December 2007 for FAI package version 3.2.1lange@informatik.uni-koeln.de