Installation PXE
Un article de Diablotins.org.
|
Installation en réseau.
Les professionnels ont souvent besoin d'un mécanisme pour installer automatiquement FreeBSD.
Cet article présente PXE/SysInstall qui va vous permettre d'installer FreeBSD depuis le réseau.
Sysinstall est un outil utilisé pour installer FreeBSD, il est configurable par scripts, et ce, suffisamment pour automatiser une installation.
PXE (Pre eXecution Environment) est un standard de Intel(ctmetcsdc) qui permet d'amorcer depuis le réseau.Il se retrouve sur nombre de cartes mère modernes.
Pour contrôler le bon fonctionnement des services, je vous conseille d'installer le port security/nmap.
Sommaire |
Les services réseau
Plusieurs services réseaux sont nécessaires à cette installation.
TFTP
TFTP (Trivial File Transfer Protol) est un protocole de transfert de fichier sans authentification, un FTP réduit. Dans le cas de PXE, il est utilisé pour charger l' amorce. Èvidemment, il ne doit pas être accessible de l'extérieur de votre LAN. Par exemple, le VLAN d'administration ou plutôt ici, le VLAN d'installation. Laissez la gestion de TFTP à inet et dé-commentez la ligne «tftp» de /etc/inetd.conf:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /usr/autoboot/
Créez /usr/autoboot/:
mkdir /usr/autoboot/
Vérifiez:
# nmap -sU localhost|grep tftp 69/udp open tftp
NFS
Ce serveur NFS va distribuer le noyau et ses modules. Ajoutez les entrées NFS à /etc/rc.conf, ainsi que les répertoires à distribuer dans /etc/exports:
/usr/autoboot -maproot=root -ro
Vérifiez:
showmount -e Exports list on localhost: /data/autoboot Everyone
DHCP
Pour localiser les ressouces réseau, installez un serveur DHCP. Définissez ensuite les ressources à distribuer, dans dhcpd.conf:
option domain-name "monreseau.net";
option domain-name-servers 192.168.1.2, 192.168.1.3;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-identifier install.monreseau.net;
server-name "install";
next-server install.monreseau.net;
option root-path "install:/data/autoboot/";
filename "pxeboot";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
option domain-name-servers 192.168.1.2, 192.168.1.3;
option domain-name "monreseau.net";
ddns-domainname "monreseau.net";
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}
~
Vérifiez:
# nmap -sU localhost|grep dhcp 67/udp open dhcpserver
Création du système
Nous allons copiez les fichiers et ressources à partir d'un CD d'installation minimale de FreeBSD; c'est à dire une amorce PXE, un noyau et ses modules et une MFSROOT d'installation.
# cd /tmp # ftp ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/5.3/5.3-BETA7-i386-miniinst.iso
Chargez en mémoire l'image ISO:
# mdconfig -a -t vnode -f 5.3-BETA7-i386-miniinst.iso -u 0
Montez l'image:
# mount -t cd9660 /dev/md0 /cdrom
Copiez le noyau:
# rsync -av /cdrom/boot/kernel /usr/autoboot/boot/
l'amorce PXE :
# cp /cdrom/boot/pxeboot /usr/autoboot/boot
et la MFSROOT standard SysInstall (sans init):
# cp /cdrom/boot/mfsroot /usr/autoboot/boot
Liez symboliquement l'amorce à la racine du TFTP.
# ln -s /usr/autoboot/boot/pxeboot /usr/autoboot/pxeboot
Maintenant, nous pouvons libérez le CéDé et décharger l'image:
# umount /cdrom # mdconfig -d -u 0
Mise en place du RC Loader
Le PXEboot, comprend une amorce, celle de FreeBSD: BTX.
BTX enveloppe un interpréteur FORTH qui va nous permettre de séquencer le démarrage de notre Installation.
Pour cela on édite un script RC en forth pour BTX, /usr/autoboot/boot/loader.rc:
echo FreeBSD Installation Serveur echo => install.monreseau.net echo Current version FreeBSD 5.3b7 echo \007\007 echo Loading Kernel... load boot/kernel/kernel echo Loading FreeBSD installer MFSROOT... load -t mfs_root boot/mfsroot echo MFS ok. echo Unloading ACPI mode... set hint.acpi.0.disabled=1 echo ACPI OFF. echo Boot from MemoryDisk root MFSROOT... set vfs.root.mountfrom=ufs:/dev/md0c echo \007\007 echo Booting .... echo Background kernel execution ... echo Please wait for interactive menu loading ... boot
Ou pour obtenir une installation différente avec un menu avec horloge:
echo FreeBSD Installation Serveur echo => install.monreseau.net echo Current version FreeBSD 5.3b7 echo \007\007 echo Loading Kernel... load boot/kernel/kernel echo echo You have 5 seconds to select one of the following: echo echo 1. Interactive echo 2. Auto echo read -t 5 -p "Type in your selection : " choice echo include /boot/loader.rc$choice
Avec deux fichier pour deux MFSROOT différentes, la standard et celle qui intègre le fichier install.cfg;
Le premier, /usr/autoboot/boot/loader.rc1:
echo entering Interactive Installer echo Loading FreeBSD installer MFSROOT... load -t mfs_root boot/mfsroot1 echo MFS ok. echo Unloading ACPI mode... set hint.acpi.0.disabled=1 echo ACPI OFF. echo Boot from MemoryDisk root MFSROOT... set vfs.root.mountfrom=ufs:/dev/md0c echo \007\007 echo Booting .... echo Background kernel execution ... echo Please wait for interactive menu loading ... boot
et /usr/autoboot/boot/loader.rc2:
echo entering automatique installer echo Loading FreeBSD installer MFSROOT... load -t mfs_root boot/mfsroot2 echo MFS ok. echo Unloading ACPI mode... set hint.acpi.0.disabled=1 echo ACPI OFF. echo Boot from MemoryDisk root MFSROOT... set vfs.root.mountfrom=ufs:/dev/md0c echo \007\007 echo Booting .... echo Background kernel execution ... echo Please wait for automatic installer starting ... boot
Dans ce cas la :
# cp /usr/autoboot/boot/mfsroot /usr/autoboot/boot/mfsroot2 # mv /usr/autoboot/boot/mfsroot /usr/autoboot/boot/mfsroot1
Il va falloir modifier la mfsroot2 pour inclure un fichier install.cfg et d'éventuels scripts de post-installation
Modification de MFSROOT
La MFSROOT ( Memory FileSystem ROOT) est l'image de la racine d'un système de fichier, servie en mémoire. pour la monter afin de la modifier:
# cd /usr/autoboot/boot/ # mdconfig -a -t vnode -u 0 -f mfsroot2 # mount /dev/md0 /mnt
Editez un fichier d'installation par défaut, /tmp/install.cfg -Dans cet exemple je vais créer une partition racine (/) assez imposante, ce n'est pas généralement une bonne idée, adapter le à votre propre plan de partitionnement)-
tryDHCP=YES ################################ hostname=leeloo.ultragreen.net domainname=ultragreen.net ################################ _ftpPath=ftp://fr.freebsd.org/pub netDev=xl0 mediaSetFTP ################################ dists=bin doc manpages info compat4 des src sbase ssys distSetCustom ################################ disk=ad0 partition=all bootManager=standard diskPartitionEditor ################################ ad0s1-1=ufs 40000M / # And a 20MB swap partition ad0s1-2=swap 512M none ad0s1-3=ufs 0 /data 1 diskLabelEditor ################################ installCommit ################################ # exemple d'ajout de paquet package=bash-1.14.7 packageAdd ################################ # exemple d'execution de script externe # system /stand/my.script shutdown
Copiez le fichier dans la MFSROOT:
# cp /tmp/install.cfg /mnt # umount /mnt # mdconfig -d -u 0
Serveur d'installation
Précédemment, j'ai volontairement choisit de faire une installation FTP.
Pour un mode intéractif il en est de même, il faut choisir d'installer par le réseau et via FTP.
Par contre il reste possible de monter un espace NFS avec le contenue d'un CD d'installation de FreeBSD complet et ensuite de faire une installation automatique ou manuelle via NFS.
Il est aussi possible de poser les fichiers dans un espace déja contruit.
je rajouterai un chapitre sur cette méthode.
Utilisation PXE
Au boulot!
La configurantion DHCP précédente, j'ai volontairement indiqué des informations de Next-server en dehors d'une plage (range) pour permettre à des blocs d'un hôte donné de l'utiliser.
Vous pouvez aussi construire des NFSROOT spécfiques pour des hôtes donnés.
Démarrez maintenant le PC sur le réseau,
-sur la plupart des NICs avec un ROM MBA il suffit de taper sur N ou F12. sinon fouillez le SETUP pour modifier la séquence de démarrage de votre machine.--
A,CDROM,C => LAN,CDROM,C grossièrement.
Et c'est parti, suivez le guide (sysinstall).
