From 6a281f60fbee1216906d2712d2cec46a1ff87fc9 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Thu, 7 Nov 2019 23:18:11 +0100 Subject: [PATCH] Add 'ipxe and sysrescuecd' article --- .../2019/ipxe-sysrescuecd-archlinux/index.md | 88 +++++++++++++++++++ pelicanconf.py | 2 +- 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 content/articles/2019/ipxe-sysrescuecd-archlinux/index.md diff --git a/content/articles/2019/ipxe-sysrescuecd-archlinux/index.md b/content/articles/2019/ipxe-sysrescuecd-archlinux/index.md new file mode 100644 index 0000000..e0e108f --- /dev/null +++ b/content/articles/2019/ipxe-sysrescuecd-archlinux/index.md @@ -0,0 +1,88 @@ +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 ip=dhcp archisobasedir=srcd archiso_nfs_srv=${server_ip}:/${nfs_path} checksum +``` + +### 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 diff --git a/pelicanconf.py b/pelicanconf.py index f33e2ab..59c7482 100644 --- a/pelicanconf.py +++ b/pelicanconf.py @@ -51,7 +51,7 @@ TRANSLATION_FEED_ATOM = None AUTHOR_FEED_ATOM = None AUTHOR_FEED_RSS = None -THEME = '/home/ephase/Documents/sites/xieme-art/theme' +THEME = 'theme/' PLUGIN_PATHS = ['plugins'] PLUGINS = ['neighbors']