Contenu | Rechercher | Menus

Live NetBoot : installation par le réseau

Ce document consiste à démarrer ubuntu de la même façon qu'avec le LiveCD à partir du réseau (sans CD, disquette ou clé USB).

Il est également possible d'utiliser cette méthode conjointement avec le tutoriel pour personnaliser son livecd, ce qui peut servir à faire des installations automatiques, à pré-installer des paramètres personnalisés ainsi qu'à pré-installer des paquets qui ne sont pas inclus sur un disque d'ubuntu normal.

Explication du concept

La majorité des ordinateurs ont une fonction de démarrage réseau qui peut être activée grâce la l'appui d'une touche spéciale au démarrage alors que le logo du constructeur de l'ordinateur s'affiche sur l'écran. Il est généralement possible de connaitre cette touche spéciale en regardant dans les coins de l'écran à la recherche du mot “PXE, network, boot devices, ou autres…” Les touches les plus courantes sont Echap, F1, F2, F12 ou Suppr

Certains ordinateurs permettent le démarrage réseau avec une seule touche, d'autres vous amènent sur une liste où vous avez plusieurs choix tel que le démarrage réseau, d'autres n'ont pas cette fonction activée et nécessitent que vous modifiez des paramètres dans le BIOS (un écran de configuration blanc sur bleu ou blanc sur noir dans lequel vous pouvez facilement faire de mauvaises gaffes) et pour terminer, certains ordinateurs (généralement ceux qui n'avaient pas de carte réseau lors de leur achat) ne peuvent tout simplement pas démarer en réseau. Comme il y a trop de variété, ce tutoriel ne s'y penchera pas davantage.

Dès que vous avez passé cette étape, votre ordinateur se connecte au réseau et initie une demande d'adresse IP au serveur DHCP. Cependant, votre ordinateur s'attend à recevoir quelques informations supplémentaires qu'un serveur DHCP normal tel que votre modem/routeur ne donne pas : L'adresse IP du serveur PXE et le fichier de démarrage PXE. C'est la partie la plus facheuse, car aucun routeur normal (à ma connaissance) n'a cette option.

Ensuite, une fois que le serveur DHCP a donné toutes les informations nécessaires à votre ordinateur, votre ordinateur se connecte au serveur TFTP de l'ordinateur serveur et télécharge le fichier de démarrage (pxelinux.0) qui sera configuré pour vous offrir le choix de démarrer le noyau de Linux Ubuntu avec des paramètres spéciaux, toujours sur le serveur TFTP.

La seule autre chose à mentionner, c'est qu'il faudra aussi installer un serveur NFS partageant tout le contenu du CD d'ubuntu. Pourquoi donc? Parce qu'un serveur TFTP est trop limité pour faire plus que simplement démarrer Linux sur l'ordinateur client. Une fois démarré, Linux a besoin d'un partage NFS pour accéder au reste de ses fichiers.

Êtes-vous perdus? C'était à vous de ne pas vous engager dans un tuto aussi passionnant ;-)

Mise en oeuvre

Les étapes suivantes vous permettront de mettre en place un serveur TFTP et NFS qui sont deux types de serveurs très peu sécurisés. Si votre ordinateur est connecté à Internet, vous vous exposez à des risques si vous ne protégez pas ce serveur à l'aide d'un pare-feu ou d'un routeur.

Passons aux choses sérieuses!!

Avant tout, installons tous les paquets qui seront nécessaires d'un seul coup!

  • syslinux (contient les fichiers nécessaires pour le démarrage réseau)
  • xinetd (processus chargé de démarrer dynamiquement le service tftp)
  • tftpd-hpa (serveur TFTP)
  • nfs-kernel-server (serveur NFS)
sudo apt-get install tftpd-hpa xinetd syslinux nfs-kernel-server

Ensuite, passons à la configuration de chaque serveur.

Serveur DHCP

Méthode #1, Routeur avec firmware DD-WRT

Cette méthode est ma préférée car un routeur permet à la fois de profiter d'un accès à Internet sur tous les postes y compris le serveur sans nécessiter de protection pare-feu. Il enlève aussi la nécessité d'avoir plusieurs ports réseaux sur l'ordinateur serveur pour servir plusieurs ordinateurs clients à la fois ou pour pouvoir accéder à Internet. Avec cette technique, toutes les machines sont connectées au routeur.

En revers de ces points positifs, il faut trouver un routeur qui permet de remplacer son “firmware” par un firmware plus évolué basé sur Linux tel que DD-WRT (que je recommande vivement). Cette technique est bien décrite sur les Wikis de DD-WRT mais ne fonctionne pas sur tous les routeurs et peut rendre votre routeur infonctionnel si vous faites une mauvaise manipulation durant le remplacement du firmware. Dans mon cas, j'utilise le routeur Linksys WRT310N qui est absolument merveilleux avec DD-WRT.

Lorsque vous avez un routeur avec un firmware DD-WRT sous la main, il faut le configurer pour répondre correctement aux requêtes DHCP de votre ordinateur :

  1. Taper l'adresse IP de votre routeur dans Firefox (généralement 192.168.1.1 ou 192.168.0.1)
  2. Cliquer sur l'onglet Services
  3. Taper le nom d'utilisateur et le mot de passe du routeur (par défaut username = root et password = admin)
  4. Ajouter ceci dans la case Additional DNSMasq Options : dhcp-boot=pxelinux.0,,192.168.1.100 (changez 192.168.1.100 par l'adresse IP de votre serveur).
  5. Cliquer sur Save et Apply Settings (en bas)
  6. Cliquer sur l'onglet Setup
  7. Vérifier que les cases Use DNSMasq for DHCP et Use DNSMasq for DNS sont bien cochées. Sinon, les cocher et cliquer Save et Apply Settings.
  8. Redémarrer le routeur en cliquant sur l'onglet Administration, puis sur sur Reboot Router (en bas).

Méthode #2, Ordinateur serveur

Un peu plus de précisions sur la marche à suivre seraient le bienvenue, surtout sur les particularité du boot PXE !

Avec cette technique, l'ordinateur client est connecté directement sur l'ordinateur serveur. Si vous voulez faire démarrer plusieurs ordinateurs sur le réseau simultanément ou accéder à Internet, l'ordinateur serveur doit pouvoir connecter plusieurs cables réseaux. De plus, il est indispensable d'installer des règles de pare-feu si le serveur est relié à Internet afin d'assurer sa sécurité.

Voir la documentation sur dhcp3-server. Soyez sur de bien configurer le serveur DHCP pour autoriser le démarrage PXE et pour référer le fichier pxelinux.0 .

Serveur TFTP

Le serveur TFTP est une forme de serveur FTP très basique. Dans ce tutoriel, il sert à rendre disponible le menu de démarrage et le noyau Linux qui lui-même n'aura plus besoin de TFTP une fois démarré sur l'ordinateur client. TFTP joue un rôle critique mais très temporaire.

Pour le configurer :

Créer le fichier /etc/xinetd.d/tftp

gksu gedit /etc/xinetd.d/tftp

Et enregistrer le texte suivant dans ce fichier :

service tftp 
{ 
     disable     = no 
     socket_type = dgram 
     wait        = yes 
     user        = root 
     server      = /usr/sbin/in.tftpd 
     server_args = -v -s /var/lib/tftpboot
     #Changez cette ligne par la plage d'adresses IP que vous souhaitez autoriser. L'entrée suivante signifie “autoriser toutes les adresses IP débutant par 192.168.1.”
     only_from   = 192.168.1.0/24 
     #Changez cette ligne par l'adresse IP du serveur
     interface   = 192.168.1.100 
}

Redémarrer le service xinetd qui rechargera automatiquement le serveur tftp :

sudo /etc/init.d/xinetd restart

Serveur NFS

Le serveur NFS est un serveur de partage de fichier sans protection qui permettra à ubuntu d'accéder à ses propres fichiers systèmes sur le serveur une fois démarré sur la machine client grâce au serveur TFTP. Les instructions suivantes permettent de partager le dossier /var/lib/tftpboot/ubuntu en lecture seule (pas de droit d'écriture). Ce dossier contiendra le reste des fichiers nécessaires à ubuntu.

Éditer la configuration des partages NFS qui se trouvent dans le fichier /etc/exports :

gksu gedit /etc/exports

Ajouter la ligne suivante (remplacer 192.168.1.0 par la plage d'adresse IP de votre réseau (généralement 192.168.0.0, 192.168.1.0 ou 192.168.2.0)) :

/var/lib/tftpboot/ubuntu 192.168.1.0/255.255.255.0(async,no_root_squash,no_subtree_check,ro)

Copier cette commande dans le terminal pour redémarrer le serveur nfs :

sudo /etc/init.d/nfs-kernel-server 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 charger le fichier “pxelinux.0” sur le serveur TFTP de l'ordinateur serveur. Ce fichier a été installé précédemment par le paquet syslinux sur votre ordinateur, 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 :

sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux.0
sudo cp /usr/lib/syslinux/menu.c32 /var/lib/tftpboot/menu.c32

Nous allons ensuite créer les dossiers :

  • pxelinux.cfg (contiendra le menu de démarrage)
  • ubuntu (contient les fichiers d'ubuntu)
sudo mkdir /var/lib/tftpboot/pxelinux.cfg
sudo mkdir /var/lib/tftpboot/ubuntu

Dans le dossier ubuntu, on copie la totalité du contenu d'un CD d'ubuntu (dans la commande suivante, changer "/media/cdrom/" par l'endroit où votre CD est monté dans /media en ajoutant "\" avant les espaces, par exemple : "/media/Ubuntu\ 8.10\ i386/") :

sudo rsync -av /media/cdrom/ /var/lib/tftpboot/ubuntu/

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

gksu gedit /var/lib/tftpboot/pxelinux.cfg/default

Et on y enregistre le texte suivant (en remplacant 192.168.1.100 par l'adresse IP de votre serveur). Notez que ce fichier représente un menu de démarrage, vous pouvez à tout moment y rajouter d'autres choix supplémentaires afin de démarrer d'autres version d'ubuntu et/ou d'autres systèmes capables de démarrer en réseau.

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

LABEL Ubuntu
KERNEL ubuntu/casper/vmlinuz
APPEND boot=casper netboot=nfs nfsroot=192.168.1.100:/var/lib/tftpboot/ubuntu debian-installer/language=fr console-setup/layoutcode=fr console-setup/variantcode=oss quiet splash initrd=ubuntu/casper/initrd.gz --

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

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

Eh voilà c'est tout, il ne reste qu'à démarrer votre ordinateur client et utiliser les combinaisons de touches magiques au démarrage afin de le faire démarrer en réseau PXE et voir le résultat.

Si tout ne marche pas immédiatement (ça arrive dans les meilleures familles), révisez la marche à suivre et réfléchissez, aucun besoin de diplôme ni brevet pour exploiter la logique. Expérimentation, détermination et patience sont la clé du succès.

Bon démarrage en réseau!!

Depuis la version 9.10 d'ubuntu il faut changer la dernière ligne de pxelinux.cfg APPEND boot=casper netboot=nfs nfsroot=192.168.1.100:/var/lib/tftpboot/ubuntu quiet splash initrd=ubuntu/casper/initrd.gz –

par

APPEND boot=casper netboot=nfs nfsroot=192.168.1.100:/var/lib/tftpboot/ubuntu quiet splash initrd=ubuntu/casper/initrd.lz –

j'ai testé ça marche

Problèmes identifiés

Réseau après installation : Si ubuntu est installé sur l'ordinateur client à l'aide de cette méthode, network-manager ne fonctionnera pas après le démarrage. Pour permettre network-manager à gérer le réseau, il faudra enlever ce texte du fichier /etc/network/interfaces :

auto eth0
iface eth0 inet manual

eth0 seulement : Selon le wiki officiel d'ubuntu, cette méthode ne fonctionne pour l'instant que si le périphérique réseau sur lequel l'ordinateur démarre se nomme "eth0" (la majorité des cas).

Disquette d'amorçage EtherBoot

Pour les ordinateurs qui ne sont pas compatible avec le démarrage réseau PXE, un projet nommé EtherBoot existe

Documentation « Etherboot »

Voir aussi


netboot_live.txt · Dernière modification: Le 15/12/2011, 15:17 (modification externe)
Le contenu de ce wiki est sous licence : CC BY-SA v3.0