PXE - Netboot

De Dinfadom - Wiki
Aller à : navigation, rechercher
Netboot.png

Difficultés : Etoile.pngEtoile.pngEtoile.png


Netboot

ATTENTION : Cet article, fait suite aux articles concernant la création d’un serveur mirroir apt-mirror et la creation d'un script Kickstart

pré-requis serveur :

Serveur sous Ubuntu (VM ou Physique) avec au moins 30 GB d’espace de stockage.

  • Dans notre cas je me suis basé sur une Ubuntu 14.04.3 LTS (trusty) cette version LTS est suivi jusqu’en 2019
  • un accès au réseau local (LAN)
  • Connexion internet configurée pour ce serveur.
  • Un DNS privé (si vous souhaitez qu’une utilisation local) ou public (si vous décidez de le rendre accessible sur internet) vous aurez donc besoin de créer des enregistrements A et CNAME nécessaire à notre configuration (non détaillé ici)

pré-requis client(s) :

Une machine cliente même sans lecteur de CD-ROM possédant une carte réseau compatible PXE

Objectifs finaux :

Automatisation de l’installation d’Ubuntu depuis le réseau avec :

  • Type d’installation : réseau (Netinstall)
  • Langue : FR

  • OS : ubuntu 14.04.3 LTS avec bureau Unity
  • OS : ubuntu 16.04 LTS avec bureau Unity
  • architecture : amd64

  • Créer un utilisateur dinfadmin avec mot de passe.
  • Activer l'utilisateur "root" avec mot de passe.

Informations utiles et mise en situation :

Pour exemple :

  • Société : Dinfadom

  • nom d’hôte : pxe.dinfadom.com

  • IP : 192.168.1.249/24
  • LAN : 192.168.1.0/24
  • Passerelle : 192.168.1.1
  • DNS : 192.168.1.1

Roles :

Serveur : pxe.dinfadom.com

  • DHCP
  • TFTP

Emplacements des fichiers/dossiers :

  • /etc/dhcp/ : emplacement des fichiers de configuration du serveur isc-dhcp-server
  • /var/lib/tftpboot/ : emplacement des fichiers de boot TFTP
  • /var/lib/tftpboot/ubuntu : emplacement des fichiers de boot pour la distribution Ubuntu
  • /etc/default/tftpd-hpa/ : emplacement des fichiers de configuration du serveur TFTP

Explication du processus de démarrage PXE

  • L'ordinateur client démarre par l'interface réseau en mode PXE.

  • Le serveur DHCP, présent sur le réseau, lui envoie le fichier pxelinux.0

  • L'ordinateur client accède alors, par TFTP, au fichier de configuration de la machine se trouvant dans le répertoire pxelinux.cfg.

  • Il charge le fichier de configuration par défaut.
* Le fichier contient les informations nécessaire à l'affichage d'un menu sur l'écran de l'ordinateur client.


Installer et lancer le serveur DHCP

Installation

apt-get install isc-dhcp-server

Configurations

vim /etc/dhcp/dhcp.conf
# Support du DDNS.)
ddns-update-style none;

# Serveur DNS et Nom de domain
option domain-name "dinfadom.com";
option domain-name-servers 192.168.1.1, 8.8.8.8, 8.8.4.4;

# Bail
default-lease-time 600;
max-lease-time 7200;

# Gestion des Logs
log-facility local7;


## Réseau ##

#Plage 192.168.1.10 à 192.168.1.50 (40 postes adressable)

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.10 192.168.1.50;
  option routers 192.168.1.1;

# évalue si l'adresse est déjà attribuée
ping-check = 1;


### PXE ###

# Permet le boot réseau pour TFTP 
allow bootp;
allow booting;

# À placer à la racine du serveur TFTP.
filename "pxelinux.0";

# définit le serveur qui servira le fichier « pxelinux.0 »
next-server 192.168.1.249;

## Reservations ##

}

Démarrage du service :

service isc-dhcp-server start

Installer et lancer le serveur TFTP

Le serveur TFTP est celui qui va fournir les fichiers nécessaires au démarrage réseau.

apt-get install tftpd-hpa syslinux

Syslinux couvre une suite de chargeurs d'amorçage de faible taille pour Linux.

vim /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="192.168.1.249:69"
TFTP_OPTIONS="--secure"

#Defaults for tftpd-hpa
RUN_DAEMON="yes"

Démarrage du service :

À la suite de cette modification, redémarrez le service:

service tftpd-hpa restart

Mise en place des fichiers de démarrage

Lorsque l'ordinateur client se fait assigner son adresse IP par le serveur DHCP, le serveur DHCP lui précise de télécharger le fichier “pxelinux.0” depuis le serveur TFTP de l'ordinateur serveur.

Ce fichier a été installé précédemment par le paquet syslinux sur votre serveur TFTP, il ne reste qu'à le copier dans le dossier partagé par le serveur TFTP ainsi qu'un autre fichier chargé d'afficher un menu de démarrage :

 cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/lib/syslinux/{pxelinux.0,vesamenu.c32,ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
Icon-quote.png chain.c32 est un module COM32 pour Syslinux . Il peut charger : MBR , secteurs partition de démarrage de Windows , bootloaders ( ntldr , setupldr.bin et bootmgr ) , MS- DOS et PC -DOS Io.sys , kernel.sys FreeDOS , isolinux.bin (seulement de ISOLINUX ), grldr de grub4dos ou un bootsector enregistré dans un fichier. 
Nous l'utiliserons afin de créer un menu pour pouvoir démarrer sur le 1er disque : ideal pour faire booter votre PC sur l'OS installé directement via notre menu sans avoir à redémarrer le poste, passer par le bios pour désactiver le démarrage sur le réseau ou via un "quick boot" (touche F9 en générale) proposer par certains bios
Icon-quote.png menu.c32 est un module COMBOOT pour Syslinux qui créer un menu sur l'écran .

Nous allons ensuite créer les dossiers :

  • pxelinux.cfg (contiendra le menu de démarrage)
  • ubuntu_trusty (contient les fichiers d'ubuntu - 14.04 LTS)
  • ubuntu_xenial (contient les fichiers d'ubuntu - 16.04 LTS) - Nouveau : Ubuntu 16.04 LTS est disponible depuis le 21/04/2016


 mkdir /var/lib/tftpboot/pxelinux.cfg
 mkdir /var/lib/tftpboot/ubuntu_trusty
 mkdir /var/lib/tftpboot/ubuntu_xenial

Depuis l'ISO Officiel (Netboot - mini.iso)

wget http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/netboot/mini.iso
 mkdir /mnt/iso
 mount mini.iso /mnt/iso
 cp  -R /mnt/iso/* /var/lib/tftpboot/ubuntu_trusty/
 umount /mnt/iso/

Nouveau : Ubuntu 16.04 LTS est disponible depuis le 21/04/2016, il vous suffit de répéter ces opérations avec le Mini ISO de la 16.04 LTS

wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
 mkdir /mnt/iso
 mount mini.iso /mnt/iso
 cp  -R /mnt/iso/* /var/lib/tftpboot/ubuntu_xenial/
 umount /mnt/iso/

Dans le dossier pxelinux.cfg, on crée un fichier texte nommé default :

default

 vim /var/lib/tftpboot/pxelinux.cfg/default
# Menu Boot PXE

DEFAULT menu.c32
MENU MARGIN 0
MENU ROWS -9
MENU TABMSG
MENU TABMSGROW -3
MENU CMDLINEROW -3
MENU HELPMSGROW -4
MENU HELPMSGENDROW -1
MENU COLOR SCREEN 30;47
MENU COLOR BORDER 30;47
MENU COLOR TITLE 30;47
MENU COLOR SCROLLBAR 30;47
MENU COLOR SEL 37;40
MENU COLOR UNSEL 30;47
MENU COLOR CMDMARK 30;47
MENU COLOR CMDLINE 30;47
MENU COLOR TABMSG 37;40
MENU COLOR DISABLED 37;40
MENU COLOR HELP 37;40
MENU TITLE Ubuntu PXE

# Menu - Titre
MENU TITLE Ubuntu PXE

# Ubuntu 14.04 LTS
LABEL 1 - Ubuntu 14.04 LTS - kickstart
        kernel ubuntu_trusty/linux
        append vga=788 initrd=tftp://pxe.dinfadom.com/ubuntu_trusty/initrd.gz ks=http://mirror.dinfadom.com/kickstart/trusty_ks.cfg --

# Ubuntu 16.04 LTS
LABEL 2 - Ubuntu 16.04 LTS - kickstart
        kernel ubuntu_xenial/linux
        append vga=788 initrd=tftp://pxe.dinfadom.com/ubuntu_xenial/initrd.gz ks=http://mirror.dinfadom.com/kickstart/xenial_ks.cfg --

# Continue Boot on first HDD
LABEL 3 - Continue Boot on first HDD
        kernel chain.c32
        append hd0 0


Il ne reste plus qu'à s'assurer que les droits sur les fichiers sont corrects en lancant les commandes suivantes dans un terminal :

chown -R root:root /var/lib/tftpboot
chmod -R 755 /var/lib/tftpboot

"Scrennshot" de notre menu

Icon-quote.png Notre Menu est simple et efficace à vous de l'adapter à vos envis et couleurs


VirtualBox Ubuntu PXE 16 04 2016 14 56 18.png


Sources : doc.ubuntu-fr.org