====== NDLR ======
- c'est une doc TRES oriente Debian et dans ce cadre Ubuntu, pour de la net install, elle est en train d'evoluer au file de l'eau (plouf)
- C'est une doc sur un procede de boot qui marchait en statique et qu'en meme temps que je la redige, le procede de boot bascule en dynamique (desolé)
Donc oui, cette doc DEVRA etre remaniée.
====== Objectif ======
* Toutes machines dans mon lan bootant en pxe sont prises en charges
* Si le systeme est en mode prise en charge pxe (pour faire une net-install...)
* Si le systeme connait la mac addresse a installer il la met en mode **patience**
* Si le systeme connait la mac addresse a booter en nfsroot (ou consort ;) ) il passe en mode **nfsroot**
* Sinon il la met dans un menu de choix entre **boot-local** ou **patience** ou **menus**
* Sinon le systeme force le **boot-local**
====== A savoir sur les sequences de boot ======
===== La 1er partie du boot s'effectue en DHCP =====
Extrait de ma conf dhcp
# option definitions common to all supported networks...
option domain-name "in.adlp.org";
###option domain-name-servers dns1.in.adlp.org, dns2.in.adlp.org;
option domain-name-servers 10.0.12.23, 10.1.12.253;
#################################################################
subnet 10.0.11.0 netmask 255.255.255.0 {
range dynamic-bootp 10.0.11.101 10.0.11.154;
option routers 10.0.11.254;
next-server 10.0.11.4;
if exists user-class {
if option user-class = "iPXE" {
filename = concat("http://${next-server}/boot-lan/bootstrap.ipxe?FILENAME=",binary-to-ascii(16, 8, ":", substring (hardware, 1, 6)));
execute("script");
}
if option user-class = "StdiPXE" {
filename = concat("http://${next-server}/boot-lan/bootstrap.ipxe?FILENAME=",binary-to-ascii(16, 8, ":", substring (hardware, 1, 6)));
execute("script");
}
}
else {
filename "undionly.kpxe";
}
### if exists user-class and option user-class = "iPXE" {
### #filename "http://boot.ipxe.org/demo/boot.php";
### filename "http://10.0.11.4/boot-lan/bootstrap.ipxe";
### }
### else {
### next-server 10.0.11.4;
### filename "undionly.kpxe";
### }
}
- oui il y a une conditionnelle useless ;) c'est ma conf qui m'a servit a faire des test, et qui curieusement... fonctionne encore ;)
- Je surcharge volontairement la couche PXE de l'equipement pour gagner en options (en tentant de ne pas re-surcharger mon iPXE)
- oui FILENAME est super mal choisi.. plus tard je retoquerais cela...
===== Surcharge vers iPXE =====
Cette couche PXEne connait pas encore le http => a la racine du serveur tftp de la machine precise dans l'option //net-server// on pose le fichier **undionly.kpxe**
===== Et c'est parti !!! =====
==== un apt-proxy ====
C'est moins lourd part la suite, je considere cela comme etant fait : //apt-get install apt-cacher-ng//
==== Apache, On defini 2 arboresences ====
=== Le services des kernels ===
* En fait ici betement on extrera des net-install
* Pour la petite histoire, si ce n'est pas a jour cela peu causer des petites surprises
* voici le lien sur le [[http://fr.archive.ubuntu.com/ubuntu/dists/precise/main/installer-amd64/current/images/netboot/netboot.tar.gz|netboot.tar.gz]] ou l'on trouvera l'initrd et le kernel en x86_64....
* A terme ca sera sympa de faire l'install via le cd en monte en loop back desservie par l'apache
=== Le service du php ===
* Lui il desservira les bonnes options de boot... (ce qu'il faut au iPXE pour booter, et ce qu'il faut en preseed pour s'installer)
* Dans mon cadre le systeme devra en gros traiter cela
10.0.11.119 - - [04/Nov/2013:17:01:52 +0100] "GET /boot-lan/bootstrap.ipxe?FILENAME=0%3Af%3A6f%3Ae5%3A5%3A1F HTTP/1.1" 200 1115 "-" "iPXE/1.0.0+ (71727)"
10.0.11.119 - - [04/Nov/2013:17:01:52 +0100] "GET /boot-lan/menu.ipxe HTTP/1.1" 200 15000 "-" "iPXE/1.0.0+ (71727)"
10.0.11.119 - - [04/Nov/2013:17:02:16 +0100] "GET /boot-lan/ubuntu-installer/i386/initrd.gz HTTP/1.1" 200 16322567 "-" "iPXE/1.0.0+ (71727)"
10.0.11.119 - - [04/Nov/2013:17:02:18 +0100] "GET /boot-lan/ubuntu-installer/i386/linux HTTP/1.1" 200 5028246 "-" "iPXE/1.0.0+ (71727)"
10.0.11.119 - - [04/Nov/2013:17:02:46 +0100] "GET /boot-lan/preseed/std-lnx-precise.cfg HTTP/1.1" 200 15277 "-" "Wget"
* où 00:0f:6f:e5:05:1f est la mac addr de la machine qui net boot
* ou menu.ipxe a ete renvoyé comme recommandation par bootstrap.ipxe
* NB j'utilise la mac addr ca me permet d'avoir mon serveur de net install dans un reseau qui peut etre NATé, le serveur dhcp pouvant lui etre relayé ou installé sur un noeud different
* Par precaution (suite a des vecu sur des procede de boot), je prefere ne pas modifier les extentions appelé en pxe => tout ce qui est desservi dans ///boot-lan// doit l'etre par un script php.
* On rajoute le "AllowOverride All" dans la conf d'apache où il faut
* On active le module //rewrite// d'apache
* On rajoute cet //.htaccess// dans le repertoire qui nous concerne (merci Ramsy et StackOverFlow...)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule .* index.php?url=$0 [QSA,L]
root@igor:~# git clone git://git.ipxe.org/ipxe.git
Cloning into 'ipxe'...
remote: Counting objects: 39914, done.
remote: Compressing objects: 100% (11118/11118), done.
remote: Total 39914 (delta 29782), reused 36824 (delta 27223)
Receiving objects: 100% (39914/39914), 9.66 MiB | 151 KiB/s, done.
Resolving deltas: 100% (29782/29782), done.
root@igor:~# cd ipxe/src
root@igor:~/ipxe/src# make bin/undionly.kpxe
root@igor:~/ipxe/src/bin# cp undionly.kpxe /opt/boot-lan/tftp/undionly.kpxe