Avant le premier démarrage, vous devez choisir quel moyen vous utiliserez pour bouter. Vous pouvez utiliser la disquette de boot ou configurer l'ordinateur pour démarrer via la carte réseau en utilisant un boot PROM, ce qui est beaucoup plus chic.
Si vous avez une carte réseau 3Com équipée d'un boot ROM par Lanworks Technologies ou qui inclut déjà le logiciel DynamicAccess Managed PC Boot Agent (MBA)[6], vous pouvez entrer dans le setup MBA en tapant Ctrl+Alt+B pendant le boot. Le setup devrait ressembler à ceci :
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 saveChoisissez la méthode de boot PXE et autorisez le boot local dans ce menu. Ainsi le premier équipement de boot sera la carte réseau en utilisant PXE, et le second doit être le disque dur local. Celà doit être configuré dans le BIOS de votre ordinateur. Si vous souhaitez utiliser le protocole BOOTP, sélectionnez TCP/IP, avec le protocole à BOOTP. En utilisant BOOTP, vous devez faire un lien symbolique du hostname de votre client vers l'image de noyau appropriée dans /boot/fai. Vous pouvez aussi utiliser l'utilitaire tlink (/usr/share/doc/fai/examples/utils/tlink) pour créer ce lien. Le fichier installimage_3com est créé par imggen et est prévu pour gérer le démarrage depuis les cartes réseau 3Com[7].[6][7]
Les cartes réseau les plus modernes supportent l'environnement de démarrage en boot PXE. Quelques cartes réseau (par exemple Intel EtherExpress PRO 100) ont une configuration de boot fixe, elles ne peuvent donc utiliser que le protocole de boot PXE. Cela exige un chargeur de boot PXE Linux et une version spéciale du démon TFTP, qui est disponible dans le paquet Debian tftpd-hpa . Installez d'abord les paquets nécessaires suivants :
# apt-get install dhcp3-server syslinux tftpd-hpaConfigurez alors le démon DHCP. Des fichiers de configuration types peuvent être trouvés dans /usr/share/doc/fai/examples/etc/dhcpd.conf . Copiez ce fichier dans /etc/dhcp3/dhcpd.conf . Validez ensuite le démon tftp spécial en utilisant cette ligne dans le fichier /etc/inetd.conf :
tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /boot/fai
Le client charge le bootloader pxelinux qui reçoit sa configuration via TFTP depuis un fichier dans le répertoire /boot/fai/pxelinux.cfg. En utilisant la commande fai-chboot[(8)], vous pouvez choisir quel noyau sera chargé par le chargeur PXE Linux etquels paramètres aditionnels sont passés à ce noyau. Lisez les pages de manuels, qui vous donnent aussi quelques bons exemples.Voir /usr/share/doc/syslinux/pxelinux.doc pour avoir plus d'information sur ce genre d'environnements de boot. L'environnement PXE utilise l'image originale du noyau (pas l'image de netboot faite par mknbi-linux ) qui est copié dans /boot/fai/vmlinuz-install.
Si votre carte réseau ne permet pas le boot PXE, vous avez deux options. La première est de créer une disquette de boot qui utilise etherboot, vous pouvez alors utiliser DHCP et TFTP pour obtenir le noyau d'installation qui a été créé avec mknbi-linux[ (8)]. Beaucoup de cartes éthernet supportent le démarrage via éthernet avec une EPROM spéciale de boot ou en démarrant depuis une disquette (http://rom-o-matic.net/). Une documentation détaillée sur le démarrage via éthernet peut être consultée sur http://etherboot.sourceforge.net.
La deuxième option est de démarrer sur une disquette, créée avec la commande make-fai-bootfloppy[ (8)]. Puisqu'elle ne contient aucune information spécifique au client, cette disquette convient pour démarrer l’installation de n’importe quel poste client. Vous pouvez aussi spécifier des paramètres complémentaires de noyau pour cette disquette de boot ou mettre d'autres variables, si nécessaire. Ne validez pas le support de BOOTP si vous avez un serveur DHCP en service sur votre réseau et vice versa. Cela peut provoquer des pertes d’informations. Consultez aussi la page de manuel pour make-fai-bootfloppy[ (8)]. Si vous n'avez aucun serveur BOOTP ou DHCP, indiquez la configuration réseau en paramètres de lancement du noyau. Le format est :
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
Pour une information complémentaire, voir /usr/src/linux/Documentation/nfsroot.txt dans les sources du noyau.
Le travail est en cours pour créer un CD-ROM boutable qui permette le démarrage et l’installation d’un client. Nous expérons que celà deviendra prochainement un paquet officiel Debian. Il contiendra le nfsroot, l'espace de configuration et un sous-ensemble du miroir Debian, qui contient tous les logiciels dont vous avez besoin pour une installation sans surveillance. Regardez les archives de la mailing-liste de FAI pour plus d'information. C'est actuellement disponible sur http://holbytla.org/fai/.
Maintenant il est temps de commencer l’installation de vos clients. SI vous boutez directement maintenant, l'installation échouera sur le client, parce qu'aucun démon BOOTP ou DHCP ne s’exécute encore ou reconnaisse les hôtes. Mais vous pouvez utiliser cette première tentative de boot pour facilement rassembler toutes les adresses Ethernet des cartes réseau.
Vous devez relever toutes les adresses Ethernet (MAC) des clients et assigner un hostname et une adresse IP à chaque client. Une solution pour collecter toutes les adresses MAC est de démarrer tous vos clients. Pendant la phase de boot, les clients envoient des paquets de diffusion (broadcast) sur le réseau local. Vous pouvez enregistrer les adresses MAC de ces hôtes en exécutant la commande suivante sur le serveur pendant cette phase :
# tcpdump -qte broadcast and port bootpc >/tmp/mac.lisAprès l’envoi de quelques paquets de broadcast par les clients (le démarrage échouera parce que bootpd ne fonctionne pas ou ne reconnaît pas encore les adresses MAC) interrompre tcpdump en tapant ctrl-c . Vous obtiendrez une liste de toutes les adresses MAC uniques avec ces commandes :
# perl -ane 'print "\U$F[0]\n"' /tmp/mac.lis | sort | uniqAprès cela, vous devez simplement assigner ces adresses MAC à des noms machines (hostname) et des adresses IP (/etc/ethers et /etc/hosts ou les maps NIS correspondantes). Avec ces informations vous pouvez configurer votre démon BOOTP ou DHCP (voir la section « Configuration du démon BOOTP »en page suivante). Je recommande d'écrire les adresses MAC (derniers trois octets suffiront si vous avez des cartes réseau du même vendeur) et le hostname sur une étiquette devant chaque machine.
Vous devrez utiliser cette méthode uniquement si vous ne pouvez pas utiliser de serveur DHCP. Il est en effet plus facile de créer et gérer la configuration pour DHCP. Vous trouverez une configuration d'exemple pour le démon BOOTP dans /usr/share/doc/fai/examples/etc/bootptab.
# /etc/bootptab example for FAI # replace FAISERVER with the name of your install server .faiglobal:\ :ms=1024:\ :hd=/boot/fai:\ :hn:bs=auto:\ :rp=/usr/lib/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:\ :ys=rubens:yd=informatik4711.YP:\ :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":
Insérez une ligne pour chaque client à la fin de ce fichier (comme pour les hôtes demohost et ant01 dans le fichier exemple). Remplacez la chaîne FAISERVER par le nom de votre serveur d’installation. Si le serveur d'installation a plusieurs cartes réseau et noms d'hôte, utilisez le nom d'hôte de la carte réseau sur laquelle les clients se connectent. Ajustez ensuite les autres paramètres de réseau (sm, gw, dn, ds) à vos besoins locaux.
masque de sous-réseau
passerelle par défaut / routeur
nom de domaine
Liste de serveurs DNS. Le fichier /etc/resolv.conf sera créé en utilisant cette liste de serveurs DNS et le nom de domaine.
Liste des FAI_FLAGS; par exemple verbose, debug, reboot, createvt, sshd, syslogd.
Les paramètres pour NIS et les serveurs de temps (yp, yd, nt) sont facultatifs. Les paramètres avec le préfixe T (à partir de T170) sont des paramètres génériques, utilisés pour transférer quelques données spécifiques FAI aux clients[8].
Les Items de la liste FAI_FLAGS peuvent être séparés par un espace ou une virgule. FAI_FLAGS dans bootptab doit être séparé par un espace. Si vous définissez FAI_FLAGS comme des paramètres complémentaires du noyau, les éléments doivent être séparés par une virgule. Si vous n'avez pas le contrôle total du démon BOOTP ou DHCP (parce que ce service est géré par une administration centralisée) vous pouvez aussi définir la variable FAI_ACTION dans des scripts /fai/class/*.var . Quand vous avez créé votre fichier bootptab , vous devez activer le démon BOOTP. Il est installé mais Debian ne l’active pas par défaut. Éditez /etc/inetd.conf et décommentez la ligne contenant #bootps. Rechargez alors la configuration de inetd .
# /etc/init.d/inetd reloadLe démon BOOTP recharge automatiquement le fichier de configuration si n'importe quel changement y est fait. Le démon pour DHCP doit toujours être redémarré manuellement après un changement dans le fichier de configuration. Maintenant il faut redémarrer tous les clients! FAI peut exécuter plusieurs actions au démarrage du client. Ces actions sont définies dans la variable FAI_ACTION. Soyez très prudent si vous positionnez FAI_ACTION sur install . Cela peut détruire toutes les données sur le client, car c’est la plupart de temps ce qu'il est supposé faire ;-). Il est donc recommandé de changer ce paramètre uniquement dans la base par client dans la configuration BOOTP. Ne le changez pas dans la section .failocal dans /etc/bootptab , qui est la définition pour l’ensemble des clients.[8]
Un exemple pour dhcp.conf[ (5)] est fourni dans /usr/share/doc/fai/examples/etc , qui fonctionne avec la version 3.x du démon DHCP. Commencez en utilisant cet exemple et observez toutes les options utilisées. Si vous faites des changements à cette configuration, vous devez redémarrer le démon.
# /etc/init.d/dhcp3-server restartDonc il est recommandé de mettre uniquement des données qui changent rarement dans ce fichier de configuration. Par défaut, le démon DHCP écrit son fichier journal dans /var/log/daemon.log . La commande fai-chboot[ (5)] est utilisée pour créer une configuration par hôte pour l'environnement pxelinux .
Voici les messages affichés lors du boot sur la disquette.
GRUB loading stage2..............
< now the grub menu with multiple boot options is displayed >
BOOTING 'FAI-BOTH'
kernel (fd0)/vmlinuz-2.4.26 root=/dev/nfs ip=both
[Linux-bzImage, setup=0x1400, size=0xd8450]
Uncompressing Linux... OK, booting the Kernel.
Linux version 2.4.26 (root@kueppers) (gcc version 2.95.4 20011002
.
.
.Après cela, les messages suivants seront identiques à ceux obtenus en boutant par la carte réseau. En boutant sur la carte réseau avec PXE vous verrez :
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 2.04 (Debian, 2004-06-24) Copyright (C) 1994-2003 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.150:192.168.1.250:192.168.1.254:255.255.255.0
TFTP prefix:
Trying to load pxelinnux.cfg/00-04-75-74-A2-43
Trying to load pxelinnux.cfg/C0A801C0
Loading vmlinuz-install.....................Ready.
Uncompressing Linux... OK, booting the Kernel.
Linux version 2.4.26 (root@kueppers) (gcc version 2.95.4 20011002
.
.
.
Sending DHCP requests ., OK
IP-Config: Got DHCP answer from 192.168.1.250, my address is 192.168.1.12
IP-Config: Complete:
device=eth0, addr=192.168.1.12, mask=255.255.255.0, gw=192.168.1.254,
host=demohost, domain=localdomain, nis-domain=(none),
bootserver=192.168.1.250, rootserver=192.168.1.250, rootpath=/usr/lib/fai/nfsroot,rw,rsize=8192,wsize=8192,acregmin=1800,acregmax=1800,acdirmin=1800,acdirmax=1800
Looking up port of RPC 1000003/2 on 192.168.1.250
Looking up port of RPC 1000005/1 on 192.168.1.250
VFS: Mounted root (nfs filesystem).
.
.
-----------------------------------------------------
Fully Automatic Installation for Debian GNU/Linux
FAI 2.6, 26 july 2004
Thomas Lange <lange@informatik.uni-koeln.de>
-----------------------------------------------------
Calling task_confdir
Kernel parameters: ip=dhcp devfs=nomount FAI_ACTION=install root=/dev/nfs FAI_FLAGS=verbose,sshd,createvt,syslogd BOOT_IMAGE=vmlinuz-install
Defining variable: ip=dhcp
Defining variable: devfs=nomount
Defining variable: FAI_ACTION=install
Defining variable: root=/dev/nfs
Defining variable: FAI_FLAGS=verbose,sshd,createvt,syslogd
Defining variable: BOOT_IMAGE=vmlinuz-install
Reading /tmp/fai/boot.log
FAI_FLAGS: verbose=1
FAI_FLAGS: sshd=1
FAI_FLAGS: createvt=1
FAI_FLAGS: syslogd=1
Configuration space /fai mounted from faiserver:/usr/local/share/fai
Monitoring to server faiserver enabled.
Calling task_setup
.
.
Calling task_defclass
/usr/bin/fai-class: Defining classes.
.
.
Calling task_action
FAI_ACTION: install
Performing FAI installation. All data may be overwritten!
.
.
Disable swap device /dev/hda5
Sun Jul 25 22:10:26 CEST 2004
The installation took 296 seconds.
Calling task_chboot
Calling hook: savelog.LAST
ERRORS found in log files. See /tmp/fai/error.log.
savelog.LAST OK.
Calling task_savelog
Save log files via rsh to fai@faiserver:demohost/install-20040725_220535
Calling task_faiend
Press <RETURN> to reboot or ctrl-c to execute a shellQuand le message de copyright de FAI s’affiche, le client a monté le nfsroot[9] comme répertoire racine (/) . C'est le système de fichiers complet pour le client à ce moment. Ensuite, task_confdir est exécuté. L'espace de configuration est monté ou reçu d'un dépôt CVS.
Avant de commencer l'installation (FAI_ACTION=install), l’ordinateur émet trois bips sonores. Alors, soyez vigilant quand vous entendez trois signaux sonore, si vous ne souhaitez pas exécuter une installation![9]
Si votre carte réseau fonctionne, mais que le serveur d’installation n'exporte pas l'espace de configuration aux clients, le message suivant s’affichera :
Root-NFS: Server returned error -13 while mounting /usr/lib/fai/nfsroot VFS: Unable to mount root fs via NFS, trying floppy. VFS: Cannot open root device "nfs" or 02:00 Kernel panic: VFS Unable to mount root fs on 02:00
Utilisez la commande suivante pour voir quels répertoires sont exportés par le serveur d'installation (nommé kueppers) :
showmount -e kueppersLe message d'erreur suivant indique que votre client n'obtient pas de réponse d'un serveur DHCP. Vérifiez vos câbles ou redémarrez le démon dhcpd[ (8)] avec l’option debug activée.
PXE-E51: No DHCP or BOOTP offers received
Network boot abortedLes messages suivants indiquent lorsque vous utilisez la méthode BOOTP qu'aucun serveur BOOTP ne répond.
Sending BOOTP requests ........ timed out!
IP-Config: Retrying forever (NFS root)...Si vous obtenez le message d'erreur suivant, le pilote pour votre carte réseau n’est pas compilé dans le noyau d'installation.
IP-Config: No network devices available
Partition check:
hda: hda1 hda2 < hda5 hda6 hda7 hda8 >
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Insert root floppy and press ENTERVous devez alors compiler le pilote de votre carte réseau dans un nouveau noyau. Ce pilote ne doit pas être en module. Le fichier README du paquet fai-kernels /usr/share/doc/fai-kernels/README décrit comment compiler un noyau personnalisé. Ajustez ensuite la variable KERNELPACKAGE dans /etc/fai/make-fai-nfsroot.conf et reconstruisez la nfsroot à l'aide de la commande make-fai-nfsroot[ (8)]. Ensuite, vous devez créer une nouvelle disquette si nécessaire. Maintenant, votre carte réseau est reconnue et le noyau peut monter la nfsroot avec succès.
Maintenant que les clients ont démarré avec FAI_ACTION positionné à sysinfo . Tapez Ctrl-c pour obtenir une console ou utilisez Alt-F2 ou Alt-F3 pour changer de terminal, si vous avez ajouté createvt à FAI_FLAGS . La connexion à distance est disponible par un shell sécurisé si sshd est ajouté à FAI_FLAGS . Le mot de passe crypté est fixé par défaut à fai avec la variable FAI_ROOTPW de /etc/fai/make-fai-nfsroot.conf. Vous pouvez créer un mot de passe crypté en utilisant mkpasswd[ (1)]. C'est le mot de passe root uniquement pendant le processus d'installation, pas pour le nouveau système installé . Vous pouvez aussi vous connecter sans mot de passe en utilisant SSH_IDENTITY . Pour vous connecter au client (nommé demohost dans cet exemple) depuis votre serveur d'installation, utilisez :
> ssh root@demohost
Warning: Permanently added 'demohost,134.95.9.200' to the list of known hosts.
root@demohost's password:Vous avez maintenant un système Linux opérationnel sur le client, sans utiliser le disque dur local. Vous pouvez utiliser cette méthode comme système de secours si votre disque local est endommagé ou si l'ordinateur ne peut pas démarrer correctement à partir du disque dur. Vous obtiendrez une console ou vous pouvez exécuter des commandes diverses (dmesg, lsmod, df, lspci...). Regardez le fichier de log dans /tmp/fai . Vous y trouverez beaucoup d'informations sur le processus de boot. Tous les fichiers de log de /tmp/fai sont aussi copiés sur le serveur $LOGSERVER (si celui-ci n’est pas défini, sur le serveur d’installation) dans le répertoire ~fai/demohost/sysinfo/[10]
Une fonctionnalité très utile de FAI est qu'il monte tous les systèmes de fichiers qu'il trouve sur les disques locaux, en lecture seulement. Il vous indique aussi sur quelle partition un fichier /etc/fstab est présent. Si une seule table de système de fichiers est trouvée, les partitions sont montées selon ces informations. Voici un exemple :
demohost:~# df
Filesystem 1k-blocks Used Available Use% Mounted on
rootfs 2064192 1071184 888152 55% /
/dev/root 2064192 1071184 888152 55% /
shm 63548 76 63472 1% /tmp
kueppers:/usr/local/share/fai
2064192 994480 964856 51% /fai
/dev/hda1 54447 9859 41777 19% /tmp/target
/dev/hda10 1153576 20 1141992 0% /tmp/target/files/install
/dev/hda9 711540 20 711520 0% /tmp/target/home
/dev/hda8 303336 13 300191 0% /tmp/target/tmp
/dev/hda7 1517948 98252 1342588 7% /tmp/target/usr
/dev/hda6 202225 8834 182949 5% /tmp/target/varCette méthode peut être utilisée comme environnement de secours! Dans l'avenir il sera possible de faire des sauvegardes ou restaurations de données sur les systèmes de fichiers existants. Si vous avez besoin d'un système de fichiers avec un accès en lecture-écriture, utilisez la commande rwmount :
demohost:~# rwmount /tmp/target/home
[10]
Si le client démarre avec l'option sysinfo , vous pouvez aussi vérifier si toutes les informations des démons BOOTP ou DHCP sont reçues correctement. L'information reçue est écrite dans /tmp/fai/boot.log . Un exemple du résultat d'une requête DHCP peut être trouvé dans au paragraphe Les routines de paramétrage des clients.
À tout moment vous pouvez redémarrer l'ordinateur en utilisant la commande faireboot , y compris à partir d’un terminal distant. Si l'installation n'est pas terminée, utilisez faireboot -s , alors les fichiers de log seront aussi copiés sur le serveur d'installation.
[7] Si vous avez des problèmes en boutant avec une carte réseau 3com™ (message d'erreur « BOOTP record too large » quand le noyau vient d'être chargé sur le PC) essayez le programme imggen-1.00 pour convertir l'image netboot en image installimage_3com. Ce problème a été relevé en utilisant netboot 0.8.1-4 et Image Creator for MBA ROMs V1.01, mais seulement avec un processeur Athlon.
[8] T170=FAI_LOCATION (maintenant définie dans fai.conf) et T171=FAI_ACTION. Vous pouvez définir ces variables dans le script class/*.var. Mais pour assurer une compatibilité ascendante, vous pouvez aussi définir ces variables depuis un server BOOTP ou DHCP.
[9] /usr/lib/fai/nfsroot sur le serveur d'installation.
[10] Plus généralement : ~$LOGUSER/$HOSTNAME/$FAI_ACTION/. Deux liens symboliques supplémentaires sont créés. Le lien symbolique last pointe sur le répertoire de log de la dernière action effectuée. Les liens symboliques last-install ou last-sysinfo pointent sus le répertoire de la dernière action correspondante. Des exemples de fichiers de log sont disponible sur la page d'accueil de FAI.