c'est trés approximatif , mais ça marche. |
Mise en place du boot réseau sous Debian Squeeze
(et aussi Debian Wheezy
).
Par exemple, pour démarrer “gparted” ou un “live-cd” en cas de besoin.
~~READMORE~~
Interessant: Install Debian 100% réseau
dhcp
lui retourne une “IP” avec l'adresse du serveur TFTP
ainsi que le fichier de base a exécuter ( Par exemple: pxelinux.0
)
Soit on arrive sur un menu, définit par exemple dans …/pxeconfig.cfg/default
, soit la suite démarre immédiatement.
tftp
retourne les fichiers demandés.# aptitude update # aptitude install tftpd-ha
Éditer le fichier /etc/default/tftpd-ha
afin d'avoir (pour exemple):
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/srv/tftp" TFTP_ADDRESS="192.168.1.1:69" TFTP_OPTIONS="--secure -4"
192.168.1.1
: Parce que je ne veux pas que les autres interfaces repondent.--secure
: Parce qu'on chroot
dans /srv/tftp
-4
: Parce que je ne veux que de l'IPv4 (c'est mon choix!)
Si nécessaire, créer le répertoire /srv/tftp
.
# /etc/init.d/tftpd-hpa restart
# aptitude update # aptitude install pxe syslinux
Extrait de ma conf (je n'ai pas touché le reste) :
interface=eth0 default_address=192.168.1.1 tftpdbase=/tftpboot domain=local.thierry-jaouen.fr
Je ne sais pas a quoi servent les paramètres “mftp_*” et autres “service=…” C'est le signe que je n'ai pas tout compris |
# /etc/init.d/pxe restart
Voila ma conf dans /etc/dhcp/dhcpd.conf
:
ddns-update-style interim; update-static-leases off; update-conflict-detection false; ignore client-updates; allow booting; # support PXE booting allow bootp; # respond to bootp queries option domain-name "local.thierry-jaouen.fr"; option domain-name-servers 192.168.1.1, 192.168.1.2; default-lease-time 10800; max-lease-time 43200; min-lease-time 1800; authoritative; log-facility local7; class "PXE" { match if substring(option vendor-class-identifier,0,9) = "PXEClient"; } class "Etherboot" { match if substring(option vendor-class-identifier,0,9) = "Etherboot"; } subnet 192.168.1.1 netmask 255.255.255.0 { option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.1; server-identifier 192.168.1.1; # <- dans le cas où on a plusieurs IP sur la même interface. server-name "gateway"; # Le pool dédié a l'ensemble du parc, **sauf** PXE # Cela evite de servire des infos PXE a des machines qui n'en demande pas ! pool { range 192.168.1.1 192.168.1.127; deny members of "PXE"; deny members of "Etherboot"; } # Le pool dédié PXE, mais uniquement les clients **connus** pool { range dynamic-bootp 192.168.1.224 192.168.1.254; deny unknown-clients; allow members of "PXE"; allow members of "Etherboot"; next-server 192.168.1.1; # Par defaut (le "petit menu"): filename "/tftpboot/pxe/pxelinux.0"; host test-pxe-pxe { hardware ethernet 01:23:45:67:89:AB; # <-- MAC FIXME filename "/tftpboot/images/squeeze-amd64/debian-installer/amd64/pxelinux.0"; } host test-autre-pxe { hardware ethernet 23:45:67:89:AB:CD; # <-- MAC FIXME } } } host test-zorro { hardware ethernet 45:67:89:AB:CD:EF; # <-- MAC FIXME }
On peut noter que les “range” “IP” sont différent selon qu'on est en mode “PXE” ou pas.
192.168.1.1 .. 127 | pour les clients “normaux” |
192.168.1.224 .. 254 | pour les clients en phase “PXE” |
Par exemple, si la machine “test-pxe-pxe” ne fait pas de requête “PXE”, elle sera dans le premier pool.
Sinon, elle aura une “IP” dans le pool dédié au “PXE” , ainsi que les infos spécifique a cette environnement.
Il y a 2 manières de configurer le “boot” en réseaux:
dhcp
boot
Pour ce que est du “petit menu”, il faut ajouter un fichier default
(en fait il peut avoir bien d'autres noms, voir la doc) dans le sous-répertoire pxelinux.cfg
.
Ainsi, dans /srv/tftp/tftpboot/pxe
j'ai un sous-répertoire pxelinux.cfg
, avec un fichier default
contenant (extrait) :
default menu.c32 prompt 0 noescape 1 timeout 600 kbdmap french.kbd label bootlocal menu default menu label Local boot localboot 0 label squeeze64 MENU LABEL Squeeze amd64 kernel images/squeeze-amd64/debian-installer/amd64/linux append vga=normal initrd=images/squeeze-amd64/debian-installer/amd64/initrd.gz rw -- label rescuesqueeze64 MENU LABEL Rescue Squeeze amd64 kernel images/squeeze-amd64/debian-installer/amd64/linux append vga=normal initrd=images/squeeze-amd64/debian-installer/amd64/initrd.gz rescue/enable=true -- # .... etc ....
Chaque section “label” correspond a un choix possible proposé par le “petit menu”.
La mise en pratique vient avec les exemples ci-dessous…
Sur le serveur tftp
, toujours en partant des configurations vu précédemment.
Copier le CD dans :
/srv/tftp/tftpboot/images/systemrescuecd-x86/
Puis dans: …/isolinux
:
# mkdir pxelinux.cfg/ # ln -s ../isolinux.cfg
host test-pxe-pxe { hardware ethernet 01:23:45:67:89:AB; # <-- MAC FIXME filename "/tftpboot/images/systemrescuecd-x86/isolinux/pxelinux.0"; }
Sur le serveur tftp
, toujours en partant de la config vu précédemente.
Copier le CD dans :
/srv/tftp/tftpboot/images/systemrescuecd-x86/
Dans le fichier ../pxelinux.cfg/default
(toujours pour exemple) :
label systemrescuecd menu label SystemRescue-Cd x86 kernel images/systemrescuecd-x86/isolinux/rescue32 append setkmap=fr netboot=tftp://192.168.1.1/tftpboot/images/systemrescuecd-x86/sysrcd.dat initrd=images/systemrescuecd-x86/isolinux/initram.igz
Où 192.168.1.1
est l'adresse du serveur tftp
.
Un minimum de 1Go peut être necessaire pour démarrer .
Recupérer le fichier “netboot.tar.gz” par là
Par exemple:
# cd /srv/tftp/tftpboot/images # mkdir wheezy-amd64 # cd wheezy-amd64 # wget http://ftp.nl.debian.org/debian/dists/testing/main/installer-amd64/current/images/netboot/netboot.tar.gz # tar xvzf netboot.tar.gz
Un coup d'oeil:
# ls -l total 12076 drwxrwxr-x 3 root root 4096 14 nov. 15:14 debian-installer -rw-r--r-- 1 root root 12338011 14 nov. 15:14 netboot.tar.gz lrwxrwxrwx 1 root root 33 25 nov. 11:59 pxelinux.0 -> debian-installer/amd64/pxelinux.0 lrwxrwxrwx 1 root root 35 25 nov. 11:59 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg -rw-rw-r-- 1 root root 56 14 nov. 15:14 version.info
Maintenant, 2 methodes:
On peut personnaliser l'host dans /etc/dhcp/dhcpd.conf
, avec en bref :
host test-pxe-pxe { hardware ethernet 01:23:45:67:89:AB; # <-- MAC FIXME filename "/tftpboot/images/wheezy-amd64/pxelinux.0"; }
# /etc/init.d/isc-dhcp-server restart
Toujours en partant de la conf mis en place plus haut, modifier le “menu” générique là: /srv/tftp/tftpboot/pxe/pxelinux.cfg/default
, afin d'y insérer:
label wheezy64 MENU LABEL Wheezy Testing amd64 kernel images/wheezy-amd64/debian-installer/amd64/linux append vga=normal initrd=images/wheezy-amd64/debian-installer/amd64/initrd.gz rw --
Et puis dans le fichier /etc/dhcp/dhcpd.conf
, si besoin:
host test-pxe-pxe { hardware ethernet 01:23:45:67:89:AB; # <-- MAC FIXME filename "/tftpboot/pxe/pxelinux.0"; }
# /etc/init.d/isc-dhcp-server restart
Il s'agit de montrer la mise en place du “boot” réseau pour un “DomU” para-virtuel.
Il y a 2 moyens:
tftp
Ce scripte xenpvnetboot
n'existe pas sous Debian Squeeze
. On va l'installer.
# cd /usr/local/src
Récupérer le “xen-utils” experimental.
# wget http://ftp.fr.debian.org/debian/pool/main/x/xen/xen-utils-4.2_4.2.0-1_amd64.deb
Décompresser:
# dpkg -x xen-utils-4.2_4.2.0-1_amd64.deb xen-experimental/
Créer un lien:
# ln -s /usr/local/src/xen-experimental/usr/lib/xen-4.2/bin/xenpvnetboot /usr/local/bin/
Une dépendance a installer:
# aptitude update # aptitude install python-urlgrabber
xenpvnetboot
doit maintenant être fonctionnel sous Debian Squeeze
.
Dans la conf du PV, on notamment:
kernel = 'tftp://192.168.1.1/tftpboot/images/squeeze-amd64/debian-installer/amd64/linux' ramdisk = 'tftp://192.168.1.1/tftpboot/images/squeeze-amd64/debian-installer/amd64/initrd.gz' ... bootloader = '/usr/local/bin/xenpvnetboot' #bootargs =
... vfb = [ 'type=vnc,vncunused=0,vncdisplay=2,vnclisten=0.0.0.0,vncpasswd=mot_de_passe,keymap=fr' ]
Aprés avoir demarré le “PV”, on peut se connecter via VNC pour effectuer l'installation.
“Continue without boot loader” ??
Ok.
Aprés l'installation, il faut modifier la configuration en mettant les traditionnels:
kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64'
Ou utiliser le “pygrub” comme “bootloader”.
Bref:
Au reboot:
# dpkg --configure -a # aptitude install vbetool # aptitude install linux-modules-2.6.32-5-xen-amd64 # reboot
# dpkg-reconfigure tzdata # dpkg-reconfigure locales
Dans /root/.profile
, commenter les lignes comme cela:
# Installed by Debian Installer: # no localization for root because C # cannot be properly displayed at the Linux console # TJ -------------- #LANG=C #LANGUAGE=C
Finir l'installation de “X” :
# aptitude install
: Sous VNC, le clavier rechigne a comprendre le pavé numérique…
Voir ci-dessus et adapter.
Moins de defaut avec “Wheezy”. Mais le noyau etant “3.2”, il faut utiliser “pygrub” pour demarrer.
Ajouter des pilotes non-free (et ça marche aussi pour Wheezy) :