Installation de Debian par le réseau avec PXE

Tuto complet et mis à jour (août 2010) sur le WIki : isalo.org/wiki.debian-fr/index.php/PXE

Discussion ICI viewtopic.php?f=1&t=29529&start=0

Pour m’amuser… et pour pouvoir installer une Debian sur une machine sans CD à partir de mon réseau… mode d’emploi !

Sur la machine qui va faire office de serveur :
… Nous allons avoir besoin des paquets suivants

█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ aptitude install openbsd-inetd tftpd-hpa dhcp3-server lftp pxe syslinux[/code]

Vous aurez certainement une erreur au démarrage de dhcp3-server. C'est normal, il n'est pas encore configuré !

Pensez à activer le daemon de tftpd-hpa. Le fichier /etc/default/tftpd-hpa doit ressembler à ceci :
[code]#Defaults for tftpd-hpa
RUN_DAEMON="yes"
OPTIONS="-l -s /var/lib/tftpboot"[/code]

Après l'installation, une petite vérification... tftp tourne-t-il bien ?

[code]█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17 
~/ netstat -uap | grep tftp 
udp        0      0 *:tftp                  *:*                                 8308/inetd

Si vous avez une erreur (ou pas de réponse) à la commande ci-dessus (à lancer en root !) inutile d’aller plus loin, le “tftp” ne tourne pas…

Un seul fichier de configuration pour pxe :
/etc/pxe.conf
Modifiez l’interface et l’adresse IP pour que ça colle à votre configuration. Je n’ai pas touché au reste

# which interface to use interface=eth0 default_address=192.168.0.1
Je ne vous expliquerais pas ici comment configurer un serveur dhcp ce n’est pas le but…
Quelques paramètres importants : L’adresse réseau avec le netmask approprié; Un intervalle d’adresses disponibles; La durée des “baux”.
Sauvegarde :

█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17 ~/ cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig

Pour un serveur déja configuré, ajout de 2 lignes (en gras)
filename “pxelinux.0”;
next-server 192.168.0.1;

Le premier fichier “pxelinux.0” est l’amorce réseau.
“next-server” est l’adresse ou la machine qui demande à booter va chercher le pxelinux.O; Rine ne vous empêche de mettre le serveur PXE sur une machine différente de votre DHCP, il suffit de le préciser.

[code]█▓▒░root@spider░▒▓██▓▒░ dim oct 25 09:37:17
~/ nano /etc/dhcp3/dhcpd.conf

Private Network

subnet 192.168.0.0 netmask 255.255.255.0 {
filename “pxelinux.0”;
next-server 192.168.0.1;
deny unknown-clients;
option ntp-servers 192.168.0.1;
option time-servers 192.168.0.1;
option domain-name-servers 195.99.65.220 , 195.99.66.220;
option domain-name “beronono.com”;
option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1;
pool {
deny unknown-clients;
range 192.168.0.2 192.168.0.104;
}
[…]
bla-bla[/code]
Vous remarquerez l’option “deny unknown-clients;”. Supprimez pour commencer si vous n’avez pas déclaré vos clients “connus” comme ceci :

# debianne host debianne.beronono.com { hardware ethernet 00:0d:61:94:43:f0; fixed-address 192.168.0.5; }

Récupérez les “netboot” des distributions qui vous intéressent :

wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-i386/current/images/netboot/netboot.tar.gz wget http://ftp.fr.debian.org/debian/dists/oldstable/main/installer-amd64/current/images/netboot/netboot.tar.gz
etc…

Le répertoire par défaut de tftp (créé à l’installation) est /var/lib/tftpboot c’est là que doivent aller tous les fichiers concernant vos images réseau et le menu de démarrage.

Créer les répertoires et sous-répertoires qui vont accueillir vos images netboot

mkdir /var/lib/tftpboot/debian mkdir /var/lib/tftpboot/debian/oldstable mkdir /var/lib/tftpboot/debian/oldstable/i386 mkdir /var/lib/tftpboot/debian/oldstable/amd64
etc…

Décompressez les netboot.tar.gz dans les répertoires adhoc

Récupérez l’indispensable fichier pxelinux.0

Créez et configurez le fichier “/pxelinux.cfg/default”

[code]mkdir /var/lib/tftpboot/pxelinux.cfg/
nano /var/lib/tftpboot/pxelinux.cfg/default

include menu.lst
prompt 0
timeout 0
[/code]
Création du fichier menu.lst (c’est lui qui contient les information sur vos différentes netboot)

[code]nano /var/lib/tftpboot/pxelinux.cfg/menu.lst

timeout 300
prompt 1
display f1.msg
F1 f1.msg
F2 f2.msg

label 1
kernel debian/oldstable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/oldstable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 2
kernel debian/oldstable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/oldstable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 3
kernel debian/stable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/stable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 4
kernel debian/stable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/stable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 5
kernel debian/testing/i386/debian-installer/i386/linux
append vga=normal initrd=debian/testing/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 6
kernel debian/testing/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/testing/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 7
kernel debian/unstable/i386/debian-installer/i386/linux
append vga=normal initrd=debian/unstable/i386/debian-installer/i386/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
label 8
kernel debian/unstable/amd64/debian-installer/amd64/linux
append vga=normal initrd=debian/unstable/amd64/debian-installer/amd64/initrd.gz ramdisk_size=9424 root=/dev/rd/0 devfs=mount,dall rw –
[/code]
Création d’un menu pour choisir l’image à démarrer :
Et comme je suis un peu mégalo…
Attention ! Mégalo mais raisonnable… Pensez que vous n’installerez pas toujours sur un wild-screen…

[code]nano /var/lib/tftpboot/f1.msg

^^ lol’s installer ^^

----| Boot Options |-----
| | /++++ .++++.
| 1. Etch-i386 | .NMMMh sMMMm-
| 2. Etch-amd64 | oMMMM/ .dMMMy| | .dMMMd.-:::-. /MMMN/
| 3. Lenny-i386 | :NMMMs .+ymNNMMMMNmy/hMMMm
| 4. Lenny-amd64 | sMMMN: -yNMMMNmddmMMMMMd- .NMMMs
| | NMMMdoNMMMd/.-yMMMMd. oMMMM-
| 5. Squeeze-i386 | /MMMM+ yMMMN/yMMMM+ dMMMh
| 6. Squeeze-amd64 | hMMMN. /MMMMo sMMMN/ :NMMMo
| | -mMMMyyMMMM: -mMMMd.sMMMm-
| 7. Sid-i386 | oMMMN/ sMMMMd+NMMMm. .mMMMh
| 8. Sid-amd64 | .dMMMMmmddmmmydMMMMms/::+yNMMMNo/MMMM/ | | :MMMMMMMMMMMMsomMMMMMMMMMMNdo. hMMMN------------------------- :ooooooooooo+-:oydddhys/.+o+o/

Main | Help
Default image will boot in 30 seconds…[/code]

Test…
Activez le démarrage à partir du réseau dans le bios, et “roule ma poule” ! (heu… pensez à désactiver une fois l’installation terminée…)

Voilà, et comme ça marche, photo à l’appui :[attachment=0]lol.jpeg[/attachment]

Tout ceci (les menus, les images amorçables…) sont paramétrables à l’infini, à vous de jouer !

Vous avez aimé ?
Merci de vos commentaires.
Je “travaille” déjà sur une version plus sophistiquée avec splash, images Debian personnalisées, rescues-disk accessibles par pxe… :smiley:

Edit : Premier complément Ajouter SystemRescueCD à son PXE
Edit2 : Ajout de Knoppix 511 et 601 !
Edit3 : Une belle amélioration visuelle à votre menu + clavier en français : viewtopic.php?p=232939#p232939
Edit 4 : Merci à Epy qui m’a permis de corriger quelques erreurs et imprécisions : viewtopic.php?f=3&t=24069&start=0

Discussion ICI viewtopic.php?f=1&t=29529&start=0

1 J'aime

Bonjour,

Nouveau sur ce forum, cependant j’ai vu qu’il est proposer un boot PXE de rescueCD à la fin de ce billet mais qu’aucun tuto n’y est relier. j’ai récèment pour le travail monter un rescueCD en boot PXE et j’ai réaliser une doc dessus ci cela vous interesse dite le moi je me ferais un plaisir de le partager

Le wiki debian-fr ouvre grand les bras à ta proposition :wink:


Hop, j’ai modifié le lien dans le premier message de ce fil pour pointer sur le message qui était visé (en tous cas j’espère que c’était bien celui-ci).

Salut,

J’avais prit des notes, pas sur que ce soit à jour, mais c’est un début… :wink:

RescueSystemCd

  1. Obtenir la dernière image iso ici : https://sourceforge.net/projects/systemrescuecd/files/sysresccd-x86/
  2. Monter l’image iso
  3. Créer le répertoire qui va recevoir les fichiers nécessaires: mkdir /var/lib/tftpboot/images/systemrescue
  4. Copier les fichiers nécessaires (initram.igz, rescuecd, sysrcd.dat, sysrcd.md5)
  5. Ajouter au menu de démarrage les lignes suivantes

$editeur /var/lib/tftpboot/pxelinux.cfg (En changeant l’IP en fonction de votre configuration évidemment…)

label systemrescue
menu label System Rescue
kernel images/systemrescue/isolinux/rescuecd
append setkmap=us netboot=tftp://192.168.0.17/images/systemrescue/sysrcd.dat
initrd images/systemrescue/isolinux/initram.igz

Salut,

Ta doc est bien réussite, si ça t’interesse voici la doc que j’ai réaliser

Installation et configuration de RescueCD

  1. Qu’est-ce qu’un BootPXE ?

Description:

L’amorçage PXE (sigle
de Pre-boot eXecution Environment) permet à une station de travail
de démarrer depuis le réseau en récupérant une image de système
d’exploitation qui se trouve sur un serveur.
L’image ainsi récupérée
peut être le système d’exploitation brut ou bien le système
d’exploitation personnalisé avec des composantes logicielles (suite
bureautique, utilitaires, packs de sécurité, scripts, etc.).
Une fois
cette image « pré-chargée », elle peut éventuellement, en fonction des
paramétrages passés à cette image sur le serveur, être installée sur la
machine qui a été amorcée en PXE.
Il permet également d’installer de manière automatique et à distance des serveurs sous divers OS.
Les
nouvelles technologies VDI permettent également de « streamer » un OS
complet ainsi que ses applications associées, directement sur la station
de travail sans disque dur, en bootant préalablement avec le PXE.
Pour
activer le PXE, il faut auparavant le configurer dans le BIOS. L’option
se trouve fréquemment dans un menu concernant la carte réseau.
L’amorce par PXE s’effectue en plusieurs étapes :
recherche d’une adresse IP sur un serveur DHCP /BOOTP ainsi que du fichier à amorcer ;
téléchargement du fichier à amorcer depuis un serveur Trivial FTP ;
exécution du fichier à amorcer.
La
taille du fichier à amorcer ne permet pas de « booter » directement
un noyau Linux, par exemple, mais il faut que le logiciel à amorcer le
télécharge et l’exécute lui-même.
.

  1. RescueCD ?
  1. Description:

SystemRescueCd est un système Linux complet, utilisable sous forme d’un CDRom bootable, un
"LiveCd".
Il ne s’agit pas simplement d’une alternative aux systèmes existants,
car le but du projet est de répondre a une attente qui n’était pas
satisfaite. Ce CDRom de taille réduite (autour de 230 Mo) offre la
possibilité d’effectuer facilement des taches d’administration sur une
machine. Lesoutils systèmes les plus importants sont disponibles. Il est
possible de partitionner le disque avec l’outil graphique GParted
(clone libre de Partition-Magic), de sauvegarder ses données ou son
système, de remettre en place la machine après un plantage, de réactiver
le gestionnaire d’amorçage. La distribution offre un support du
réseau complet avec notamment Samba/NFS.

  1. Les logiciels Système inclus:

GParted est un clone de Partition Magic ou de Acronis Disk Director pour Linux.
GNU Parted est le principal outil de gestion des partitions sous Linux en mode texte.
Partimage est une alternative à Ghost, Drive-image ou True Image
FSArchiver est un autre logiciel de sauvegarde / restauration de systèmes de fichiers
Outils
des systèmes de fichiers (e2fsprogs, reiserfsprogs, reiser4progs,
xfsprogs, jfsutils, ntfsprogs, dosfstools): ils permettent de formater,
redimensionner, déplacer, réparer les partitions du disque selon leur
système, sans perte de donnée.
Ntfs3g: permet d’accéder en
lecture/écriture aux partitions NTFS de Windows sans aucune limite
(contrairement aux anciennes versions)
Sfdisk permet de sauvegarder et de restaurer la table des partitions.
Test-disk outil
pour trouver les partitions effacées et les restaurer. Il supporte
reiserfs, ntfs, fat32, ext2/3 et d’autre systèmes
Outils réseau Les outils réseau de base (Samba, NFS, ping, nslookup, …) sont proposés

  1. installer RescueCD en BootPXE
  1. Comment le démarrage par PXE fonctionne

Le serveur de boot est composé de trois parties:

Le serveur DHCP qui envoie une adresse IP dynamique au client
Le serveur TFTP qui envoie les premiers fichiers de démarrage (gestionnaire d’amorçage et noyau) au client
Le serveur HTTP qui envoie les systeme de fichiers racine ( ce n’est plus obligatoirement http)

Ces
trois serveurs peuvent fonctionner soit sur une seule machine ou alors
être repartis sur plusieurs machines. La méthode fournie par
SystemRescueCd vous permet de mettre en place très facilement une
machine qui aura ces trois rôles a la fois. Le service pxebootsrv gère
en effet les trois serveurs pour vous.
Le processus de boot PXE

Quand
l’ordinateur client essaie de demarrer avec PXE il commence par envoyer
une demande d’adresse IP sur le reseau (DHCP request)
Le serveur
DHCP lui repond en lui envoyant une adresse IP dynamique disponible
ainsi que d’autres informations (serveur DNS, route par défaut) ainsi
que l’adresse du serveur TFTP nécessaire pour la suite.

Le client
recoit l’offre de l’adresse DHCP et l’accepte. Il se connecte alors au
serveur TFTP dont il a reçu l’adresse précédemment, et charge les
premiers fichiers de demarrage par TFTP.
Le serveur TFTP envoie les
fichiers du gestionnaire de démarrage (pxelinux) ainsi que les fichiers a
afficher a l’écran par pxelinux
Le client affiche les fichiers reçus
et l’utilisateur peut choisir ses options de démarrage. Le gestionnaire
de démarrage charge alors le noyau et le fichier initramfs par TFTP.
Le serveur TFTP envoie le noyau et le fichier initramfs demandés précédemment (rescuecd + rescuecd.igz)
Le client demarre le noyau qu’il vient de recevoir et execute le script de demarrage linuxrc qui est dans l’initramfs.
Pendant
le démarrage du noyau une requête DHCP est envoyée par le client
(option ip=dhcp) pour recevoir une adresse IP. Cette demande peut
sembler redondante, mais elle est nécessaire car le noyau n’a pas
connaissance de l’adresse IP précédemment reçue par pxelinux.
Le
client se connecte ensuite au serveur HTTP dont il connaît l’adresse IP
car elle était indiquée dans les options de démarrage du noyau fournies
par pxelinux. Il télécharge le fichier sysrcd.dat par HTTP sur ce
serveur et le place en mémoire vive (RAM). Ce fichier est assez
volumineux (environ 120Mo) car il contient tout le système a l’exception
du noyau.
Le client monte le fichier sysrcd.dat pour pouvoir utiliser le contenu et poursuit le démarrage du système.
A
cette étape le serveur de démarrage n’est plus nécessaire pour le
client et celui-ci peut fonctionner même si on arrête le serveur.

Le service pxebootsrv

Avec
SystemRescueCd la configuration du serveur PXE se fait par
l’intermédiaire d’un seul service appelé pxebootsrv. Ce serveur est
chargé de préparer la configuration du serveur et de lancer les trois
services de travail impliqués dans le processus PXE. Quand vous lancez
le service pxebootsrv avec /etc/init.d/pxebootsrv start le service
analyse ses paramètres qui sont inscrits dans /etc/conf.d/pxebootsrv
puis il lance les trois services.

Le service pxebootsrv a été
écrit pour rendre PXE très facile a utiliser avec SystemRescueCd.
L’utilisateur doit juste écrire un seul fichier de configuration puis
lancer un service pour que tout fonctionne. Si cela ne vous convient
pas, vous avez toujours la possibilité de configurer vous même les trois
services dhcpd/tftpd/thttp.

  1. Installation

Obtenir les fichiers SystemRescueCd

Télécharger
le fichier ISO qui contient les fichiers dont nous aurons besoin pour
le démarrage PXE SystemRescueCD qui peut être téléchargé à partir de
cette adresse:
http://sourceforge.net/projects/systemrescuecd/?source=typ_redirect.
Une le fichier ISO téléchargé, nous avons besoin de 4 fichiers hors le fichier ISO, qui sont:

initram.igz c’est le disque virtuel initial que SystemRescueCD utilise pour démarrer.

rescue32 ou rescue64 (cela dépend du processeur ce trouvant sur l’hôte) - C’est le noyau que SystemRescueCD utilise (kerenel).

sysrcd.dat - Il contient le système de fichiers de squash qui devient le système de fichiers racine pour SystemRescueCD.

sysrcd.md5 fichier de signature MD5 pour SystemRescueCD.

Utilisation avec server apache2.

Ces 4 fichier doivent être mis dans un repertoire dans /var/www/repertoire.

Pour
notre cas le repertoire racine sera /var/www/rescuecd pour que le
system puisse téléchargere le fichier sysrcd.dat au démarage en http.

Modifier le fichier conf du serveur PXE qui se trouve dans ntinstall:/tftpboot/pxe-linux.cfg/default.

vi ntinstall:/tftpboot/pxe-linux.cfg/default

créer un nouveau label pour ce cas label 20 (déjà existant).

ajouter les lignes suivante :

label 20
kernel rescuecd/rescue32
append initrd=rescuecd/initram.igz boothttp=http://xx.xx.xx.xx/rescuecd/sysrcd.dat setkmap=fr

Explication sur les lignes de commande :

  1. Label 20 : label qui sera appeler lors de l’affichage du menu pour le choix de l’image à lancer.

  2. Kernel rescuecd/rescue32 : chemin du kernel SystemRescueCD.

  3. La dernière est un peu plus compliqué décortiquons la commande par commande:

append initrd=rescuecd/initram.igz : chemin vers le disque virtuel initial que SystemRescueCD utilise pour démarrer

boothttp=http://xx.xx.xx.xx/rescuecd/sysrcd
: chemin ver le serveur web de xx.xx.xx.xx pour que le système puisse
télécharger sysrcd.dat, le système de fichiers de squash qui devient le
système de fichiers racine pour SystemRescueCD au démarage du système.

setkmap=fr : pour avoir un clavier français azert

Modifier
le fichier welcome.msg qui le fichier qui contient le message de
bienvenue pour qu’au lancement du serveur PXE les différents label soit
présenter à l’utilisateur.
vi xx.xx.xx.xx:/tftpboot/pxe-linux.cfg/welcome.msg
Ajoutez la ligne suivante :

20 RescueCD

Puis
ensuite une fois que j’ai démarrer sur le serveur PXE j’ai pu voir le
nouveau label ajouter au menu de presentation me demandant de choisir
sur quell système je souhaite démarrer. Sur la figure qui suit on voit
bien que le label 20 RescueCD est propose.

Peace, shado

Salut,

La page sur la Wiki date un peu… Si tu vois des trucs à rafraîchir n’hésite pas, le wiki est fait pour ça!

Merci pour ton retour. :slight_smile:

re,

Pas de soucie j’ai pas eu trop de temps pour ajouter les screenshots mais je le ferais dés que possible et si jamais je peux aidé sur quoi que ce soit pas de problème.

Le vrai savoir est un savoir partagé !

Salut,

C’est sympa. Je suis un peu “charrette” en ce moment… :worried:

salut vv222,

J’ai un petit soucie sur le forum, j’était sur le point de publié une petite astuce pour permettre de récupéré des données sur des disques dur raid péter mais voilà le problème est que cela est beaucoup mieux ilustré avec des images mais le soucie est que étant nouveau sur le forum j’ai le droit qu’a une seul image par message et du il m’est juste impossible de le publié.

Insère des liens vers les images là où tu voudrais les placer dans ton message, et envoie-moi un MP une fois que ce sera fait. Je remplacerai alors les liens par des vignettes cliquables pour afficher les images en pleine taille.