Installation serveur PXE pour installation

Un article de Casys (Canadian Sysadmins).

Auteur: Thomas Boutry

Sommaire

Description

Nous perdons beaucoup de temps dans l'installation de nos serveurs, en plus de la perte de temps nous sommes sujet à des risques d'erreurs humaines, dernier point nous voulons avoir des serveurs le plus uniforme possible. Je pourrais aussi dire que nous économisons le gravage de CD mais c'est le dernier de mes soucis.
La solution est d'automatiser la tâche d'installation, le serveur ou la station de travail boot sur le réseau et grâce à un petit menu nous allons choisir le type d'installation que l'on désire.

Installation

Nous allons installer les applications sur le serveurs : - Xinetd va nous permettre de faire la gestion du port 69/udp pour le serveur tftp - tftpd-hpa est le serveur tftp qui nous permettre de fournir le kernel au portable qui boot - dhcp3-server founira l'adresse ip indispensable pour faire une installation réseaux - lftp qui doit sûrement être déjà installé nous servira a tester le setup.

sudo apt-get install xinetd tftpd-hpa dhcp3-server lftp 

Nous pouvons, malgré les erreurs affiché a l'ecran valider que le service tftp est en fonction :

sudo netstat -uap | grep tftp

ceci doit vous fournir le résultat suivant :

udp        0      0 *:tftp                  *:*                                 8628/xinetd    

Comme toujours l'installation n'est pas longue à coté de la configuration :P

Configuration

Configuration du serveur DHCP

ATTENTION  : Si vous avez déjà un serveur DHCP sur le réseau vous risquez d'avoir des problèmes, il est important soit d'arréter l'autre serveur ou d'appliquer les configurations suivantes à ce dernier.

  • Copie du fichier original et supprésion de l'ancienne configue.
sudo cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd-ori-`date +%F`.conf
  • Création de notre configuration
sudo mkdir /etc/dhcp3/RCS
sudo vi /etc/dhcp3/dhcpd.conf
# dhcp3.conf
#
#  $Id$
#
# Configuration file for dhcpd.
#
# Boutry Thomas 10 Juillet 2008
#

option domain-name-servers 10.10.10.10,24.200.241.37,24.201.245.77,24.200.243.189;

default-lease-time 86400;
max-lease-time 604800;

authoritative;

subnet 10.10.10.0 netmask 255.255.255.0 {
        range 10.10.10.201 10.10.10.220;
        filename "pxelinux.0";
        option subnet-mask 255.255.255.0;
        option broadcast-address 10.10.10.255;
        option routers 10.10.10.1;
}

# EOF
sudo ci -u /etc/dhcp3/dhcpd.conf

L'instruction filename "pxelinux.0"; indique le fichier qui sera envoyé à la station qui boot en PXE , si vous ne pouvez pas remplacer le serveur DHCP actuelle il vous faudra mettre cette ligne dans la configuration du serveur DHCP actuelle et ajouté l'instruction : next-server ip_de_votre_serveur;

  • Configuration des interfaces pour le serveur DHCP
sudo mkdir /etc/default/RCS
sudo vi /etc/default/dhcp3-server
INTERFACES="eth0"

Ajouter le nom de toutes les interfaces pour qui le serveur doit fournir le DHCP.

sudo ci -u /etc/default/dhcp3-server
  • Redemarrez le service dhcp
sudo  /etc/init.d/dhcp3-server restart

Configuration du serveur tftp (PXE)

Pour que le portable puisse démarrer nous avons besoin d'un kernel afin de pouvoir initialiser le matériel. Dans le cas présent je vais utilisez ce qui est fournie avec Ubuntu , ceci sera valide pour toutes les distribution Unix.

  • Création des répertoires:

Par défault le serveur tftp prend ces fichier dans le répertoire /var/lib/tftpboot/

sudo mkdir -p /var/lib/tftpboot/ubuntu/hardy
sudo mkdir -p /var/lib/tftpboot/ubuntu/intrepid
sudo mkdir -p /var/lib/tftpboot/centos/5/
sudo mkdir -p /var/lib/tftpboot/freebsd/7.0/boot

Installation de Ubuntu (Hardy/Intrepid)

Ici nous allons faire l'installation automatique de Ubuntu Hardy et de Intrepid cependant ceci s'applique à toutes les distribitions Ubuntu.

  • ATTENTION confirmément au bug décrit dans ce thread:

https://bugs.launchpad.net/ubuntu/+source/net-retriever/+bug/234486

Il ne faut pas prendre l'image d'installation d'origine de Hardy car il est bugé utilisé le lien "update" suivant : http://archive.ubuntu.com/ubuntu/dists/hardy-updates/main/installer-i386/current/images/netboot/ubuntu-installer/i386/

  • Récupération des fichiers pour l'installation réseau
mkdir /tmp/ubuntu-intrepid-install
mkdir /tmp/ubuntu-hardy-install
cd /tmp/ubuntu-intrepid-install
lftp -c "open http://archive.ubuntu.com/ubuntu/dists/intrepid/main/installer-i386/current/images/; mirror netboot "
cd /tmp/ubuntu-hardy-install
lftp -c "open http://archive.ubuntu.com/ubuntu/dists/hardy-updates/main/installer-i386/current/images/; mirror netboot "


  • Copie des fichiers d'installation dans le répertoire du serveur tftp
sudo mv /tmp/ubuntu-hardy-install/netboot/ubuntu-installer/* /var/lib/tftpboot/ubuntu/hardy/
sudo mv /tmp/ubuntu-intrepid-install/netboot/ubuntu-installer/* /var/lib/tftpboot/ubuntu/intrepid/

Installation de CentOs

Ici nous allons faire l'installation automatique de CentOs 5.5 cependant ceci s'applique à toutes les distributions Centos

  • Récupération des fichiers pour l'installation réseau
cd /var/lib/tftpboot/centos/5/
sudo wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5/os/i386/images/pxeboot/initrd.img
sudo wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5/os/i386/images/pxeboot/vmlinuz

Installation de FreeBSD =

Ici nous allons faire l'installation automatique de FreeBSD 7.0 cependant ceci s'applique pour tous les BSD

  • Récupération des fichier pour l'installation réseau
cd /var/lib/tftpboot/freebsd/7.0/

Configuration du serveur PXE pour les distributions Unix

  • Copie des fichiers de configuration lors de la connection tftp
sudo mv /tmp/ubuntu-hardy-install/netboot/* /var/lib/tftpboot/

La dernière opération ne devrait copier que les fichiers relatif au démarrage par le système PXE tftp , en d'autre mot les fichiers suivant :
boot.img.gz mini.iso netboot.tar.gz pxelinux.0 pxelinux.cfg/

Contrairement au fichier d'installation ces fichiers sont commun a toutes les distrobutions.


  • Edition du fichiers d'option du boot
sudo vi /var/lib/tftpboot/pxelinux.cfg/default

DISPLAY boot.txt

DEFAULT Ubuntu_hardy_install

LABEL Ubuntu_hardy_install
        kernel ubuntu/hardy/i386/linux
        append vga=normal initrd=ubuntu/hardy/i386/initrd.gz --
LABEL Ubuntu_hardy_cli
        kernel ubuntu/hardy/i386/linux
        append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu/hardy/i386/initrd.gz --

LABEL Ubuntu_hardy_expert
        kernel ubuntu/hardy/i386/linux
        append priority=low vga=normal initrd=ubuntu/hardy/i386/initrd.gz --
LABEL Ubuntu_hardy_rescue
        kernel ubuntu/hardy/i386/linux
        append vga=normal initrd=ubuntu/hardy/i386/initrd.gz rescue/enable=true --


LABEL Ubuntu_intrepid_install
        kernel ubuntu/intrepid/i386/linux
        append vga=normal initrd=ubuntu/intrepid/i386/initrd.gz --
LABEL Ubuntu_intrepid_cli
        kernel ubuntu/intrepid/i386/linux
        append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=normal initrd=ubuntu/intrepid/i386/initrd.gz --

LABEL Ubuntu_intrepid_expert
        kernel ubuntu/intrepid/i386/linux
        append priority=low vga=normal initrd=ubuntu/intrepid/i386/initrd.gz --
LABEL Ubuntu_intrepid_rescue
        kernel ubuntu/intrepid/i386/linux
        append vga=normal initrd=ubuntu/intrepid/i386/initrd.gz rescue/enable=true --

LABEL Centos_5
         kernel centos/5/vmlinuz
         append initrd=centos/5/initrd.img


PROMPT 1
TIMEOUT 1000
  • Création de la liste des options:
sudo vi /var/lib/tftpboot/boot.txt 
Available Boot Options:
=======================
UBUNTU:
        HARDY:
        - Ubuntu_hardy_server
        - Ubuntu_hardy_desktop
        INTREPID:
        - Ubuntu_intrepid_server
        - Ubuntu_intrepid_desktop
CENTOS:
        - Centos_5
FREEBSD:
        - FreeBSD_7

Références

http://www.howtoforge.com/ubuntu_pxe_install_server : Setting Up A PXE Install Server For Multiple Linux Distributions With Ubuntu Edgy Eft

http://www.diablotins.org/index.php/Installation_PXE
http://wiki.netbsd.se/How_to_mount_FFS_partition_under_Linux
http://phaq.phunsites.net/2007/09/20/chaining-freebsds-pxeboot-with-pxelinux/
http://phaq.phunsites.net/2007/02/14/convert-freebsd-iso-image-for-pxe-bootstrap/