Amorçage iscsi Debian
Dans ce document, nous allons voir comment construire un système Debian simple sur un volume iSCSI et le démarrer depuis le réseau via PXE.
Pré-requis:
- Avoir une cible iSCSI fonctionnelle (avec un volume créé)
- Avoir un serveur PXE fonctionnel
- Avoir une machine cliente disponible
Dans un soucis de simplicité, j'utiliserai les machines des pré-requis pour effectuer toute les opérations mais rien ne vous empêche d'avoir une machine propre pour créer le système.
Sur le serveur iSCSI
Préparation du volume
Attachement du volume distant
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.debian.x8664:sn.e7c26a679475 -p 192.168.183.2 --login
L'adresse 192.168.183.2 est celle de mon serveur iSCSI. Il se contact lui-même donc.
Partitionnement
Le volume attaché est présent en /dev/sdb.
Partitionnement
cfdisk /dev/sdb
Créer une table de partition comme bon vous semble ainsi qu'une partition occupant tout l'espace disponible (on ne va pas détailler des trucks de fous niveau partitionnement, vous l'aurez compris).
Formatage
mkfs.ext4 /dev/sdb1
Création du point montage
mkdir /mnt/debian
Montage du volume
mount /dev/sdb1 /mnt/debian
Construction du système invité
Installation de debootstrap
apt install debootstrap
Installation du système de base
debootstrap --arch amd64 stretch /mnt/debian/ http://ftp.fr.debian.org/debian
Chroot du système
chroot /mnt/debian
Montage des systèmes de fichiers vitaux
mount -t proc none /proc mount -t sysfs none /sys
Installation des dépendances
apt update apt install initramfs-tools open-iscsi sysv-rc-conf
Ajout du module iSCSI à la création de l'initrd
echo "iscsi" >> /etc/initramfs-tools/modules
Renseignement du volume à monter au démarrage
echo "InitiatorName=iqn.2003-01.org.linux-iscsi.debian.x8664:sn.e7c26a679475" > /etc/iscsi/initiatorname.iscsi
Rappel: la commande iscsiadm -m discovery -t sendtargets -p 192.168.183.2
permet de connaître le nom de la cible.
Mise à jour de l'initrd
update-initramfs -u
Ajout d'une entrée de démarrage dans le fstab
echo '/dev/sda1 / ext4 errors=remount-ro 0 1' > /etc/fstab
Configurer les interfaces réseau
cat > /etc/network/interfaces << EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
EOF
Instalation du noyau
apt install linux-image-4.9.0-4-amd64
Définition du mot de passe root
passwd
ASTUCE
Pour franciser le système, vous pouvez copier les étapes de la procédure sur la construction d'une image SquashFS.Démontage des systèmes de fichier
umount /proc umount /sys
Sortie du chroot
exit
Copie du noyau et de l'inird sur le serveur PXE
scp /mnt/debian/bootinitrd.img-4.9.0-4-amd64 /mnt/debian/bootvmlinuz-4.9.0-4-amd64 root@192.168.183.254:/srv/tftp/noyaux/stretch/iscsi/
L'adresse 192.168.183.254 est celle de mon serveur PXE.
Démontage du volume
umount /mnt/debian
Détachement du volume distant
iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.debian.x8664:sn.e7c26a679475 -p 192.168.183.2 --logout
Sur le serveur PXE
Ajout d'une entrée PXELinux
cat >> /srv/tftp/pxelinux.cfg/default << EOF
LABEL Debian ISCSI
KERNEL /noyaux/stretch/iscsi/vmlinuz-4.9.0-4-amd64
APPEND initrd=/noyaux/stretch/iscsi/initrd.img-4.9.0-4-amd64 ip=dhcp ISCSI_TARGET_NAME=iqn.2003-01.org.linux-iscsi.debian.x8664:sn.e7c26a679475 ISCSI_TARGET_IP=192.168.183.2 ISCSI_TARGET_PORT=3260 root=/dev/sda1 rw net.ifnames=0
EOF