Yo all !
Qu'est-ce que l'etherboot ?
Et bien c'est un peu comme le PXE mais en plus vieux : http://etherboot.org
En gros ça consiste à faire démarrer une machine depuis des données qui sont situées sur une autre machine sur le réseau, on peut ainsi faire démarrer une machine sans disques ! Ou faire démarrer une machine sur un système qui n'est pas sur son disque dur ou DVD ! Ou mettre à jour tout un cluster en ne faisant que redémarrer les noeuds !
Pour ce faire vous aurez besoin de :
- une XboX munie d'un Cromwell récent (un Xromwell devrait faire l'affaire aussi)
- une autre machine munie d'une carte réseau
L'autre machine reste à votre choix, elle devra être munie de ces trois services : tftp, dhcp, nfs.
Pour ma part j'utilise une Debian Sarge sur un PowerBook, une Xebian sur une autre Xbox fera très bien l'affaire, on doit même pouvoir faire ça avec un Windoz.
Comment ça va se passer ?
-On démarre la Xbox, et dans le menu de Cromwell on sélectionne "Etherboot",
-La boite envoie une requête DHCP sur le réseau,
-Le serveur reconnait la boite, lui attribue une IP et lui indique le fichier (qui contient un kernel) à télécharger pour booter,
-La boite télécharge ce fichier sur le serveur TFTP (trivial FTP) et boote dessus,
-Le kernel ainsi chargé monte un partage NFS (Network File System) afin de l'utiliser comme partition racine,
-Vous pouvez utiliser la Xbox qui a correctement démarré.
Bon cette fois on y va, on va commencer par
Compiler un kernel capable de booter par le réseau
Il s'agit là de compiler un kernel pour Xbox standard, il faudra simplement veiller à ce que certaines options soient compilées en dur, et surtout pas comme modules !
>DevicesDrivers>NetworkingSupport>NetworkingOptions>
Il faut cocher IP : kernel level autoconfiguration, ainsi que
IP : DHCP/BOOTP/RARP support (même si les 2 derniers ne doivent pas être nécessaires)
>DevicesDrivers>NetworkingSupport>Ethernet(10or100Mbit)>
le Reverse Engineered nForce Ethernet support doit être en dur (y) et pas en M comme par défaut
(j'y ai perdu deux jours alors croyez moi c'est important
>FileSystems>NetworkFileSystems>
prenez tout ce qui concerne le NFS, toujours en dur, surtout le "Root file system on NFS"
s'il n'apparait pas retournez cocher le "kernel level autoconfig" dans "Devices Drivers".
Créer une Network Boot Image avec ce kernel
Cette image est le fichier que la boite ira chercher en premier lieu.
Il vous faut mknbi. apt-get install mknbi devrait fonctionner sur une Debian i386, sinon vous pouvez aller le chercher ici : http://sourceforge.net/project/showfiles.php?group_id=4233 il se compilera avec un simple make / make install sur toute machine à base de x86 avec du Perl dedans, comme j'ai que du PPC et des Xbox j'exécute ceci sur la machine cible (la Xbox).
On va maintenant l'appeler avec un tas de paramètres et lui passer notre bzImage toute fraiche :
mkelf-linux --output=xbox.nb --append="root=/dev/nfs nfsroot=192.168.0.66:/tftpboot/root ip=dhcp" --rootdir=192.168.0.66:/tftpboot/root --ip=dhcp /usr/src/linux/arch/i386/boot/bzImage
192.168.0.66 est l'ip de mon serveur, /tftpboot/root/ est le dossier que je destine à recevoir le système de fichier de mon client, l'option --append sert à donner les paramètres de boot du kernel. Certaines infos sont ici redondantes et ce n'est peut-être pas nécessaire, mais ça marche ainsi et j'ai pas envie de revenir en arrière pour vous le confirmer Dans le linuxboot.cfg on apprend qu'il peut être utile de rajouter à la ligne append "devfs=mount kbd-reset", je sais pas trop à quoi ça sert, on verra par la suite si ça marche pas. Comment ça je suis pas sérieux ???
On se retrouve alors dans le dossier courant avec un xbox.nb qui n'est autre que notre Network Boot Image avec les paramètres qu'il faut pour qu'il aille monter le partage NFS de notre choix en partition racine.
On va maintenant s'occuper un peu de notre serveur
Le serveur TFTP
Pour une Debian ce sera comme d'hab apt-get install tftpd
On veillera à avoir cette ligne dans /etc/inetd.conf :
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
on créera le dossier /tftpboot en y donnant le droit de lecture pour tout le monde.
On peut désormais copier notre xbox.nb dans ce dossier.
Le serveur DHCP
Il est sans doute déjà installé, sinon apt-get install dhcp3-server
et on va ajouter quelques lignes à la fin de /etc/dhcp3/dhcpd.conf :
subnet 192.168.0.0 netmask 255.255.255.0 { host xbox { hardware ethernet 00:50:F2:69:58:74; fixed-address 192.168.0.67; option host-name "xbox"; filename "/tftpboot/xbox.nb"; option root-path "192.168.0.66:/tftpboot/root"; }}
on donne ici l'adresse MAC de la carte réseau de la xbox (si vous ne le changez pas ça marchera jamais), on lui indique l'IP qu'elle va utiliser, le fichier qu'elle va aller chercher sur le serveur TFTP, et la partition root qu'elle va utiliser en NFS. Adaptez les chiffres et les chemins en fonction de vos besoins bien évidemment.
Le serveur NFS
Il existe sous 2 formes différentes : nfs-kernel-server et nfs-user-server. J'ai utilisé la version kernel, mais l'autre devrait aussi bien faire l'affaire, je n'ai pas poussé la recherche pour savoir lequel est le mieux adapté à notre situation.
Une fois installé, il faudra lui dire que 192.168.0.67 doit avoir accès à /tftpboot/root, pour celà on rajoute cette ligne dans /etc/exports :
/tftpboot/root 192.168.0.67(rw,no_root_squash,async)
Et vala ! Fin du tuto pour aujourd'hui !
Il vous faudra redémarrer tous ces services pour qu'ils prennent en compte les modif des fichiers de config, si vous ne voulez pas vous embêter redémarrez le serveur. Ensuite démarrez la Xbox, sélectionnez Etherboot, et enjoy !!
Comment ça ça marche pas ? Ha bon ? on n'a rien mis dans /tftpboot/root ?
Ha ben alors c'est normal que ça marche pas...
Bon vous l'aurez compris il ne reste plus qu'à créer un système de fichier racine complet et à votre goût à cet endroit et vous aurez un système utilisable. Si j'en dit pas plus c'est parce que je n'ai pas encore accompli cette tache, si vous savez comment on peut faire ça très simplement je suis tout ouïe
Sinon en attendant de mes nouvelles http://www.google.fr/linux est votre ami, on trouve aussi un tas de liens interessants sur http://www.etherboot.org .
Bon etherbootage !!!