Installation PXE

Un article de Diablotins.org.


Image:brush.png

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).

Projets :
Boîte à outils