Les tâches suivantes sont exécutées lors d’une installation, après le démarrage du noyau Linux sur les clients.
Mise en place de la configuration FAI
Chargement des modules de noyau
Définition des classes
Définition des variables
Partitionnement des disques locaux
Création et montage des systèmes de fichiers locaux
Installation des paquets de logiciels
Lancement des scripts de configuration spécifiques (de site)
Sauvegarde des fichiers de journal
Redémarrage du nouveau système installé
Vous pouvez aussi définir des programmes complémentaires ou des scripts qui seront lancés à des occasions particulières. Ils sont appelés crochets. Les crochets peuvent ajouter des fonctions complémentaires au processus d'installation ou remplacer les tâches secondaires par défaut de FAI. Il est alors très facile de personnaliser le processus d'installation complet. Les crochets sont expliqués en détail dans le chapitre Crochets (Hooks).
La durée de l'installation est déterminée par le nombre de logiciels, mais aussi par la vitesse du processeur et du disque dur. Voici quelques durées types. Tous les clients ont une carte réseau à 100Mbits/s. L'utilisation d'un réseau local à 10Mbits/s n'augmente pas considérablement le temps d'installation. Le réseau ne sera pas le goulot d'étranglement en cas d’installation simultanée de plusieurs PC clients.
Athlon XP1600+ , 896MB,SCSI disk, 1 GB software 6 min
AMD-K7, 500MHz , 320MB, IDE disk, 780 MB software 12 min
PentiumPro 200MHz , 128MB, IDE disk, 800 MB software 28 min
Pentium III 850MHz, 256MB, IDE disk, 820 MB software 10 min
Pentium III 850MHz, 256MB, IDE disk, 180 MB software 3 min
Vous pouvez contrôler l'installation des clients avec la commande faimond[ (8)]. Tous les clients vérifient si le démon est lancé sur le serveur d'installation (ou sur la machine définie par la variable monserver). Alors, un message est envoyé quand une tâche commence et se termine. Le démon de surveillance fai affiche ce message sur la sortie standard. Une interface graphique sera développée dans le futur,.
Lors du démarrage du PC client, le script /sbin/rcS_fai[11] est exécuté. C'est le script principal qui contrôle la séquence des actions pour FAI. Aucun autre script dans /etc/init.d/ n'est exécuté.
Un disque virtuel (Ramdisk) est créé et monté sur /tmp , qui est le seul répertoire accessible en écriture jusqu'à ce que les systèmes de fichiers locaux soient montés. Des paramètres complémentaires sont reçus du démon BOOTP ou DHCP et l'espace de configuration est monté via NFS depuis le serveur d'installation sur /fai . Le paramétrage est fini lorsque des terminaux virtuels complémentaires sont créés et que le démon de shell sécurisé (ssh) pour l'accès à distance est démarré.[11]
Le script fai-class[ (1)] est utilisé pour définir les classes. Par suite, plusieurs scripts sont exécutés dans /fai/class/ pour la définition des classes. Tous les scripts commençant par un chiffre [0-9]* sont exécutés par ordre alphanumérique. Chaque mot que ces scripts envoient sur la sortie standard sont interprétés comme des noms de classes. Les scripts se terminant par .source sont sourcés , ils peuvent ainsi définir de nouvelles classes en les ajoutant à la variable newclasses (voir 06hwdetect.source pour un exemple). La sortie de ces scripts est ignorée. Ces classes sont définies pour le client en cours d’installation. On peut aussi dire que ce client appartient à ces classes. Une classe est définie ou indéfinie mais n'a pas de valeur. Seules les classes définies présentent un intérêt pour un PC client. La description de toutes les classes peut être trouvée dans /usr/share/doc/fai/classes_description.txt. Il est recommandé de documenter le travail réalisé par une nouvelle classe. Cette documentation sert de base pour composer l’ensemble de la configuration à partir des classes. Le script 06hwdetect.source charge les modules nécessaires au noyau « à la demande ». La description complète de tous ces scripts peut être trouvée dans Scripts dans /fai/scripts.
Le script 30menu.source fait apparaître un petit menu qui demande à l'utilisateur quelle sorte d'installation doit être exécutée (par exemple : Poste de travail CAO, portable, poste de travail scientifique, serveur de groupe de travail, poste bureautique ...). Mais réfléchissez que cela ne mènera pas à une installation entièrement automatique ;-)
Après la définition des classes, chaque fichier *.var avec un préfixe qui correspond à une classe définie est exécuté pour définir les variables. Là, vous devez définir la variable FAI_ACTION et d'autres. Par défaut, FAI_ACTION est définie par la commande fai-chboot[(8)].
Pour le partitionnement des disques, un fichier de configuration est choisi dans /fai/disk_config en utilisant les classes. C'est la description de la façon dont tous les disques locaux seront divisés, où les systèmes de fichiers seront créés (et leurs types comme ext2, ext3, reiserfs) et comment ils seront montés. Il est également possible de préserver le partitionnement du disque ou les données sur certaines partitions. C’est fait au moyen de la commande setup_harddisks , qui utilise sfdisk pour le partitionnement. Le format du fichier de configuration est décrit dans /usr/share/doc/fai/README.disk_config.
Pendant le processus d'installation, tous les systèmes de fichiers locaux sont monté relativement à /tmp/target. Par exemple /tmp/target/home deviendra /home dans le nouveau système installé.
Quand les systèmes de fichiers locaux sont créés, ils sont vides (à l’exception des partitions préservées). Le système de base Debian et tous les logiciels demandés sont ensuite installés. D'abord les archives de base sont décompressées, puis la commande install_packages[ (8)] installe tous les logiciels en utilisant apt-get[ (8)] sans qu'aucune action manuelle ne soit nécessaire. Si un logiciel exige la présence d’un autre logiciel, apt-get[ (8)] résout les dépendances et installe le paquet requis.
Les classes sont aussi utilisées lors de la sélection des fichiers de configuration dans /fai/package_config/ pour l'installation des logiciels. Le format des fichiers de configuration est décrit dans Configuration des paquets logiciels.
Une fois tous les logiciels installés, le système est presque prêt. Mais les configurations par défaut des logiciels ne répondront pas aux besoins spécifiques de votre site. C’est pourquoi vous pouvez lancer des scripts qui ajustent la configuration du système. Donc les scripts qui correspondent à un nom de classe dans /fai/scripts seront exécutées. Si /fai/scripts/classname/ est un répertoire, tous les scripts nommés S[0-9] dans ce répertoire sont exécutés. Il est possible d'avoir plusieurs scripts de types différents (shell, cfengine...) à exécuter pour une même classe. FAI est fourni avec quelques exemples de scripts, mais vous pouvez écrire votre propre script (bash, perl, cfengine…).
Ces scripts importants sont décrits en détail dans Scripts dans /fai/scripts.
Quand toutes les tâches d'installation sont terminées, les fichiers de journal sont sauvegardés dans /var/log/fai/$HOSTNAME/install/[12] sur le nouveau système et vers le compte sur le serveur d'installation si $LOGUSER est défini dans /etc/fai/fai.conf . Il est aussi possible de spécifier un autre hôte comme destination de la sauvegarde de log par un fichier dans /fai/class/ . De plus, deux liens symboliques sont créés pour indiquer le dernier répertoire écrit. Cette méthode utilise rsh/rcp ou ssh/scp par défaut.
Vous pouvez utiliser d'autres méthodes de sauvegarde des logs sur le serveur distant. La méthode courante est définie par la variable $FAI_LOGPROTO dans le fichier /etc/fai/fai.conf :
Cette option sauvegarde les journaux sur le serveur FTP distant défini par la variable $LOGSERVER (la valeur $SERVER est utilisée si non définie). La connexion au serveur FTP est faite en tant qu'utilisateur $LOGUSER , avec le mot de passe $LOGPASSWD. Le répertoire de log sur le serveur FTP est défini dans $LOGREMOTEDIR. Ces variables sont toutes définies dans le fichier /etc/fai/fai.conf . L'accès en écriture est nécessaire pour le $LOGREMOTEDIR sur le serveur FTP.
Tous les fichiers dans le répertoire /tmp/fai sont copiés sur le serveur FTP suivant cet exemple :
ftp://$LOGUSER:$LOGPASSWD@$LOGSERVER/$LOGREMOTEDIR/.
Aucune sauvegarde des fichiers de log sur le serveur d'installation.
[12]
Le système est automatiquement redémarré si « reboot » a été ajouté à FAI_FLAGS .En principe, le système nouvellement installé doit redémarrer depuis son second dispositif, le disque dur local. Pour sauter le boot sur la carte réseau, vous pouvez utiliser la commande fai-chboot pour valider le boot local.Si vous utilisez une disquette de boot, vous devez retirer la disquette sinon l'installation sera exécutée de nouveau. LisezChanger l’unité de démarrage pour savoir comment changer d'unité de lancement.
Bon ! Vous ne voulez pas lire le manuel en entier ? Vous préférez essayer l’installation sans lire le manuel ? OK. Voici comment le faire en quelques minutes .
Installer fai et tous les logiciels recommandés (voir Installation FAI ) sur votre serveur d’installation.
Installer les exemples simples dans l'espace de configuration :
# cp -a /usr/share/doc/fai/examples/simple/* /usr/local/share/fai/Obtenir l'adresse MAC de votre hôte de test
Ajouter votre hôte (essayez de le nommer demohost ) dans /etc/hosts et dhcpd.conf
Si votre demohost n'a aucun disque IDE, copiez le fichier disk_config/SMALL_IDE dans un fichier appelé demohost et remplacez le nom de disque hda par votre valeur spécifique.
Si vous utilisez PXE, indiquez au client de charger le noyau d'installation et d'effectuez une installation au boot suivant.
fai-chboot -IFv demohost
Démarrer votre hôte de démonstration et profiter de l'installation complètement automatique.
Si l'installation se termine avec succès, l'ordinateur doit démarrer un système Debian minimal . Vous pouvez ouvrir une session utilisateur « demo » avec le mot de passe « fai ».
Mais maintenant n'oubliez pas de lire le chapitre suivant Préparez votre installation, FAI suivra vos instructions !