Amorçage iscsi Debian

De Wiki doc


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

Source