Notes d'installation de FreeBSD par PXE

Introduction

Cette note présente comment installer FreeBSD sur une machine ("client") en mode automatique à partir d'un serveur connecté sur le réseau ("serveur").

Une note (en anglais) sur le sujet ici.

Présentation de PXE

PXE (Pre-boot eXecution Environment) est une extension du BIOS des PC Intel qui permet de charger un OS depuis le réseau (l'OS est chargé depuis le réseau comme s'il était chargé depuis un disque dur connecté directement sur l'ordinateur).

PXE attribue une adresse IP à une carte réseau de la machine, puis charge un kernel et l'exécute.

PXE utilise des protocoles "standard", normalisés comme DHCP et TFTP.

Fonctionnement diskless

FreeBSD peut être configuré pour démarrer complètement depuis un serveur de fichier "réseau" : la machine utilise uniquement des fichiers lus sur le serveur de fichier en utilisant le protocole réseau NFS (le kernel est lu par NFS, les drivers sont lus par NFS, les fichiers de coniguration sont lus par NFS et les comptes des utilisateurs sont lus par NFS (la machine ne contient absolument aucun fichier sur un disque dur local).

Une telle configuration permet d'aoir des clients "légers", dépendant complètement d'un serveur pour pouvoir fonctionner. Le mode de fonctionnement nominal de la machine est de démarrer en utilisant l'OS chargé depuis le réseau.

Démarrage diskless :

obtention par PXE d'une adresse IP

chargement par TFTP du loader pxeboot

chargement par NFS du kernel et des modules additionnels

montage de la partition "root" par NFS

démarrage du process "init"

exécution des scripts /etc/rc.diskless{1,2}

montage des autres partitions /usr, /home, ... par NFS

Installation diskless (Jumpstart)

L'installation "diskless" vise à installer une version de FreeBSD sur un disque dur local, connecté sur la machine, à partir des média d'installation stockés sur un serveur réseau, en mode automatique :

Après l'installation, le disque dur de la machine contient FreeBSD, qui est prêt à démarrer : le mode de fonctionnement nominal de la machine est de démarrer en utilisant l'OS de son disque dur.

Un réseau spécifique est créé pour la liaison entre le serveur et les clients "Boot PXE".

Configuration du serveur de démarrage

(serveur lui aussi sous FreeBSD)

Configuration du serveur DHCP

Le client PXE demande une adresse IP par le protocole DHCP. Il faut donc installer un serveur DHCP.

Le serveur DHCP dispose de deux cartes réseau : une carte reliée au réseau de Massy, et une autre reliée au réseau de test.

Les adresses IP des interfaces du serveur sont fixes (les interfaces des PC de Massy sont dynamiques et allouées elles-mêmes par DHCP).

Le démon DHCP est installé à partir des ports de FreeBSD.

Les fichiers de configuration du démon sont :

/usr/local/etc/dhcpd.conf

/usr/local/etc/rc.isc-dhcpd.conf

Le client PXE charge par TFTP le programme pxeboot. Ce programme est un "loader" du kernel : il va chercher le fichier "kernel" ainsi que tous les drivers décrits dans loader.rc.

Configuration du serveur TFTP

Un démon TFTP est utilisé pour charger pxeboot.

(voir l'extrait /etc/inetd.conf)

Le contenu du répertoire /usr/local/export/tftpboot suit :

%ls -R
boot install.cfg mfsroot
pxeboot kernel

./boot:
device.hints kernel loader loader.rc

./boot/kernel:
nfsclient.ko

Configuration du serveur NFS

(voir l'extrait /etc/rc.conf et et /etc/exports)

Configuration du serveur DNS

Le serveur DNS est utilsé pour XXXX

(voir /etc/named.conf et autres : zone directe et zone inverse)

Configuration du script de démarrage

(/boot/loader.rc et install.cfg)

configuration d'installation sur le disque dur local

Mise en place des média d'installation

Modification du contenu des floppys

Après l'installation

reprise de /etc/rc.conf pour complément

Problèmes rencontrés :

duplex Ethernet / reset disque dur IDE

$Id: Install_PXE.html,v 1.4 2004/02/12 09:54:04 herbelot Exp $