Installation d’Ubuntu avec PXE sous Mac

by Joris on avril 9, 2010

J’ai eu entre les mains un PC portable tellement vieux et dépravé que plus aucun périphérique possiblement bootable était disponible.
Donc plus de lecteur optique et le BIOS est trop vieux pour booter en USB. La seule solution possible restait l’amorçage par la carte réseau (PXE). Bonne opportunité pour tester Ubuntu Karmic Koala :D.

C’est avec grande surprise que cette page ne m’a presque pas servie puisque rien ne ressemblait à ce que j’avais de mon côté. Par exemple, je n’ai jamais eu besoin de bind9…

Amorcer avec PXE

Le but de l’amorçage avec PXE est d’automatiser les installations sur des parcs informatiques à plus ou moins grande échelle. En principe l’admin réseau s’occupe simplement de bien configurer le réseau et lance les installations à distance depuis son terminal.
Bien pratique pour installer une version personnalisée de son OS…

Quand le PC boot, le BIOS ne va pas chercher à amorcer un média comme le disque dur, le lecteur optique ou encore une clé USB ; cette fois-ci, il va lancer une requête DHCP de type « DHCPDISCOVER » (un broadcast dans le sous-réseau). Le serveur DHCP va assigner une adresse IP au demandeur et va immédiatement lui indiquer une adresse de prochain serveur à aller voir (notre serveur TFTP) qui va fournir l’image de notre distribution (le kernel d’installation Ubuntu) afin qu’il puisse amorcer l’installation.

Nous allons y aller progressivement, étape par étape afin de ne rien oublier :).

Installer et configurer un serveur DHCP sur le Mac

Et bien nous n’y allons pas par 4 chemins, on utilise un bon MacPort :

sudo port install dhcp

Une fois installé, il suffit d’éditer le fichier de configuration :

cd /opt/local/etc/dhcp
sudo cp dhcp.conf.sample dhcp.conf
sudo vim dhcp.conf

Vous pouvez tout effacer et simplement copier coller le contenu suivant en supposant que le sous-réseau de votre box est 192.168.1.0 (auquel cas, changez les adresses) :

ddns-update-style none;
ignore client-updates;
authoritative;
allow booting;
allow bootp;
subnet 192.168.1.0 netmask 255.255.255.0 {
        next-server 192.168.1.2; # adresse du serveur TFTP
        filename "pxelinux.0"; # fichier a chercher sur le serveur TFTP
        option routers 192.168.1.1; # passerelle par défaut (adresse de la Box)
        option subnet-mask 255.255.255.0; # masque de sous-réseau
        option domain-name-servers 192.168.1.1; # serveurs DNS (adresse de la Box)
        range 192.168.1.3 192.168.1.4; # plage d’adresse
        default-lease-time 200; # durée du bail en secondes
        max-lease-time 2000; # durée maxi du bail en sec.
}

Lancez votre serveur DHCP afin de voir si tout fonctionne :

sudo launchctl load -F /Library/LaunchDaemons/org.macports.dhcpd.plist

Si vous avez des erreurs, corrigez-les puis enfin arrêtez votre seruveur avec la commande :

sudo launchctl unload /Library/LaunchDaemons/org.macports.dhcpd.plist

Vous avez configuré votre serveur DHCP, maintenant nous allons passer au serveur TFTP (je reviendrais sur le choix des IP après).

Mise en place du serveur TFTP

Ce qui est intéressant, c’est que OSX héberge déjà un serveur TFTP par défaut donc inutile d’en installer un. Il suffit simplement de connaître la commande pour le lancer et peut-être créer le dossier adéquate où sont stockés les fichiers d’amorçage.

En l’occurrence, vous devez créer le dossier /private/tftpboot. Vous prenez ce dossier comme base de travail et vous y effectuez l’étape « préparer les fichiers ». Une fois terminé, vous devriez avoir cette arborescence dans votre dossier :

tree /private/tftpboot
|-- pxelinux.0 -> ubuntu-installer/i386/pxelinux.0
|-- pxelinux.cfg -> ubuntu-installer/i386/pxelinux.cfg
|-- ubuntu
|-- ubuntu-installer
|   `-- i386
|       |-- boot-screens
|       |   |-- adtext.cfg
|       |   |-- f1.txt
|       |   |-- f10.txt
|       |   |-- f2.txt
|       |   |-- f3.txt
|       |   |-- f4.txt
|       |   |-- f5.txt
|       |   |-- f6.txt
|       |   |-- f7.txt
|       |   |-- f8.txt
|       |   |-- f9.txt
|       |   |-- menu.cfg
|       |   |-- po4a.cfg
|       |   |-- prompt.cfg
|       |   |-- splash.png
|       |   |-- stdmenu.cfg
|       |   |-- text.cfg
|       |   `-- vesamenu.c32
|       |-- initrd.gz
|       |-- linux
|       |-- pxelinux.0
|       `-- pxelinux.cfg
|           `-- default
`-- version.info

Ce dossier est en fait la racine de notre serveur TFTP et comme nous avions mis dans la configuration du serveur DHCP plus haut, le fichier à charger sera pxelinux.0.

Maintenant, pour lancer le serveur, lancez la commande

sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist

Vous connaissez la commande pour l’arrêtez hein ;).

Procédure d’amorçage

Bon, nos 2 serveurs fonctionnent… Maintenant il faut connecter le PC au sous-réseau de la Box mais vous l’avez bien deviné : si la Box distribue ses IP via son propre serveur DHCP, il est fort probable que le PC se fasse attribuer une adresse IP par la Box avant notre propre serveur DHCP.
Nous allons donc désactiver le serveur DHCP de notre Box : pour cela, allez dans l’interface administration de votre Box et désactivez le serveur DHCP.

Il faudra donc configurer manuellement l’interface réseau du Mac afin que vos serveurs DHCP/TFTP puissent se connecter à la Box. Dans mon exemple, cette IP est 192.168.1.2.

Votre Mac est donc connecté à votre Box avec l’IP 192.168.1.2 sachant que votre Box a l’IP 192.168.1.1 (ou 192.168.1.254 selon les FAI).

Note : pour connaître l’adresse de votre Box, il faut regarder la route par défaut dans sa table de routage :

netstat -r
Routing tables
 
Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.1.1        UGSc        9        1    en1
...

Donc pour récapituler : le PC est branché directement sur un port Ethernet de la Box (qui n’a plus de DHCP) et le Mac connecté à la Box (et à Internet) via une IP manuelle. Le Mac va faire office de serveur DHCP et de serveur TFTP.
Lancez les 2 serveur sur le Mac et démarrez le PC…

Le PC va lancer un « DHCPDISCOVER » sur le sous-réseau et le Mac va lui attribuer l’adresse IP 192.168.1.3 et va ensuite rediriger le PC vers l’adresse 192.168.1.2 (sa propre adresse – afin qu’il se connecte sur le serveur TFTP) et va booter via notre Mac.
Si vous avez tout bien configurez, votre PC devrait bien booter :).

Installation d’Ubuntu

Pour avoir fait plusieurs tests, un fois l’installation bien entamée et après le partitionnement des disques, l’assistant vous demande quel types de paquets vous souhaitez installer (c’est ici que vous sélectionnerez Ubuntu serveur, Ubuntu desktop, etc.).
Je vous conseil de NE RIEN sélectionner car souvent cela merde l’installation de Grub juste après.

Installez juste le noyau Debian et rebootez en ré-activant le serveur DHCP de votre Box. Vous devriez vous retrouver devant un prompt :

machine login:
password:
user@machine~$ sudo apt-get update
user@machine~$ sudo apt-get upgrade
user@machine~$ sudo apt-get install ubuntu-desktop
user@machine~$ sudo reboot

Suite à cela, votre machine devrait booter et marcher à merveille…

Vous savez désormais installer Ubuntu avec la technique PXE ! Merci de m’avoir lu et surtout merci à Jean-Luc ;).

8 comments

Intéressant tout ca, je le garde sous la main pour tester en vrai un de ces jours !

by Cyril on 09/04/2010 at 12:38. #

C’est cool d’avoir suivi les soucis et de voir que finalement, on t’a aidé assez pour que t’y arrives, mais c’est encore plus cool de ta part de faire ce joli tuto.

Je te suggère même d’ajouter tes conseils sur la page du wiki ubuntu-fr qui va bien, me semble qu’il y a un chan sur Freenode ou tu peux contacter les responsables pour discuter de tout ça et des modifs à faire.

En tout cas amuses-toi bien avec Karmic, Lucid Lynx arrive :)

by segle on 09/04/2010 at 12:49. #

merci pour mon ordi ! il retrouve une seconde vie!
j’ai rien compris a l’article mais c’est le résultat qui compte LOL
Et maintenant tu vas pouvoir dormir et manger ^^

by Delhia on 09/04/2010 at 13:28. #

Content que tu y sois arrivé, et merci pour le backlink. :)

by Ishiro on 09/04/2010 at 13:29. #

[...] Installation d’Ubuntu avec PXE sous Mac [...]

by Two years of rand(0)-mies « rand(0) on 19/02/2011 at 20:29. #

Bravo pour ton tuto, mais je dois dire que je n’ai pas pu arriver au bout.
Je cherche à démarrer en réseau depuis un macBook pro pour installer ubuntu sur un powerBook G4. Là où ça ne passe pas, c’est qu’apparemment toutes les versions dispo pour processeur ppc sont démarable avec yaboot, donc pas de pxelinux.0 !
Autre chose : quand tu parles d’éditer le serveur DHCP, par la commande « sudo cp dhcp.conf.sample dhcp.conf », ce ne serait pas plutôt « sudo cp dhcpd.conf.sample dhcp.conf » ? parce que sinon pas de fichier dhcp.conf.sample à l’horizon…
En tous cas bravo et merci encore, au moins j’ai appris plein de nouvelles lignes de commandes !
Et si tu as le temps pour un petit message… welcome !

by Vertignasse on 29/06/2011 at 23:50. #

Qui s’occupe de remettre a jour cet Ubuntu maintenant alors que je sais pas m’en servir??

by Délhia on 30/06/2011 at 13:56. #

Congratulations this is a excellent Guide!!!
Every works fine to me until right after I got the IP address for the client.
it show me:
http://twitpic.com/5xnbfp
PXE-T02: Access Violation
PXE-E3C: TFTP Error – Access Violation
I’m checking my installations files in /private/tftpboot permission folder but it doesn’t work.
Any Ideas?

Thanks,

by Jonathan on 29/07/2011 at 14:45. #

Leave your comment

Not published