NDLR

  1. 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)
  2. 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";
###    }
  }
  1. oui il y a une conditionnelle useless ;) c'est ma conf qui m'a servit a faire des test, et qui curieusement… fonctionne encore ;)
  2. Je surcharge volontairement la couche PXE de l'equipement pour gagner en options (en tentant de ne pas re-surcharger mon iPXE)
  3. 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 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

docs/linuxeries/pxe.txt · Dernière modification: 2017/01/10 22:34 (édition externe)
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki