Title: Démarrer SysRescueCD en PXE avec iPXE
Category: sysadmin
Tags: ipxe, sysrescuecd, Archlinux, pl-fr
Date: 2019-11-07 18:35

Pour démarrer des machines via le réseau en PXE, j'utilise [iPXE][l_ipxe]. J'en
avais déjà parlé lors du [paramétrage dnsmasq en tant que serveur DHCP avec
iPXE]({filename}../../archives/demarrage-pxe-avec-openwrt-dnsmasq-et-freenas/index.md).

J'utilise de temps à autres [SysRescueCD][l_SysRescueCD] que je démarre donc via
le réseau. J'avais une configuration qui fonctionnait bien, mais en voulant
passer à la version 6 de ce couteau suisse de diagnostic et de la réparation,
impossible de démarrer car la distribution de base a changé.

## La nouvelle arborescence

Précédement, les fichiers étaient organisés comme ceci dans mon répersoire
`srcd` sur le partage NFS ou sont stockés les fichiers :

```console
.
├── initram.igz
├── rescue32
├── rescue64
├── sysrcd.dat
└── sysrcd.md5
```

Le live CD, basé sur Gentoo était compatible avec les arcihectures 32 et 64
bits. Avec la version 6 fini le support 32 bits, et l'arborescence est celle
utilisée par `archiso` :

```console
.
├── boot
│   ├── amd_ucode.img
│   ├── amd_ucode.LICENSE
│   ├── intel_ucode.img
│   ├── intel_ucode.LICENSE
│   └── x86_64
│       ├── sysresccd.img
│       └── vmlinuz
├── pkglist.x86_64.txt
└── x86_64
    ├── airootfs.sfs
    └── airootfs.sha512
```

## La nouvelle configuration

Voici les options nécessaires au démarrage de SysRescueCD via `iPXE`, je ne mets
ici que l'extrait de la configuration qui nous intéresse :

```
:srcd
kernel  nfs://${server_ip}/${nfs_path}/srcd/boot/x86_64/vmlinuz
initrd  nfs://${server_ip}/${nfs_path}/srcd/boot/intel_ucode.img
initrd  nfs://${server_ip}/${nfs_path}/srcd/boot/amd_ucode.img
initrd  nfs://${server_ip}/${nfs_path}/srcd/boot/x86_64/sysresccd.img
imgargs vmlinuz initrd=sysresccd.img ip=dhcp archisobasedir=srcd archiso_nfs_srv=${server_ip}:/${nfs_path} checksum
```

Les variables `$server_ip` et `$nfs_path` contiennent respectivement l'IP (ou le
nom d'hôte) de mon serveur NFS et le chemin pointant vers les "images" de
démarrage. 

### configurer le réseau au démarrage

Les informations données [sur le wiki d'archlinux][l_wikiarch] parlent de la
commande `SYSAPPEND 3` mais celle-ci ne semble pas disponible sur
`iPXE`[^n_sysappend], le réseau ne sera donc pas initialisé lors du démarrage,
empêchant le montage du dossier NFS. Le paramètre noyau `ip=dhcp` permet de
forcer le système à obtenir une adresse IP lors du démarrage.

### Les autres options

le reste des options parlent d'elle-même :

 - `archiso_nfs_srv` : donne l'adresse de la ressource NFS utilisée.
 - `archisobasedir` : le  répertoire de base contenant l'arborescence d'archiso.

Il est possible de trouver les options disponibles sur le
[README][l_bootparam-arch] dans le dépôt git `archiso`.

[^n_sysappend]:Voir la documentation de `SYSAPPEND` sur le [wiki de
  PXELINUX][l_sysappend]

[l_ipxe]:https://ipxe.org/
[l_SysRescueCD]:http://www.system-rescue-cd.org/
[l_bootparam-arch]:https://git.archlinux.org/archiso.git/tree/docs/README.bootparams
[l_wikiarch]:https://wiki.archlinux.org/index.php/PXE#Existing_PXE_Server
[l_sysappend]:https://wiki.syslinux.org/wiki/index.php?title=SYSLINUX#SYSAPPEND_bitmask
