La documentation ci-dessous est issue de la réinstallation de escalope
, mais doit probablement pouvoir s'appliquer à d'autres systèmes.
Le système iLO permet de charger un « média virtuel » (ie. une image ISO) et de démarrer avec. Malheureusement, cette fonctionnalité requiert une licence iLO, que tous les serveurs Aurore n'ont pas.
Si on souhaite réinstaller Debian sur un de ces serveurs, on peut entre autres :
dnsmasq
par exemple) pour utiliser PXE ;debootstrap
depuis l'ancien système Debian.Dans la suite, nous allons détailler la méthode utilisant debootstrap
.
Dans un premier temps, il va falloir remonter une hiérarchie de fichiers en mémoire vive afin de pouvoir supprimer le contenu du disque dur.
Nous allons pour cela redémarrer le système avec un bash
en processus init
. Pour cela, on peut utiliser la console iLO limitée (elle se termine automatiquement toutes les 30 secondes, mais il est possible de la ré-ouvrir autant de fois que l'on souhaite) disponible sans licence.
Dans l'écran de démarrage GRUB, on modifie (en appuyant sur la touche e
) les options passées au noyau pour ajouter init=/bin/bash
, puis on valide (avec F10
ou Ctrl+X
).
On crée une système de fichier en mémoire tmpfs
et on y installe une distribution Debian minimale, puis on se chroot
e dedans :
mkdir /ram
mount -t tmpfs none /ram
ifup vmbr128
debootstrap stable /ram http://deb.debian.org/debian
chroot /ram /bin/bash
On installe ensuite un serveur OpenSSH, pour ne plus avoir à utiliser la console iLO :
apt install openssh-server debootstrap
cat <<EOF >/etc/ssh/sshd_config
PermitRootLogin yes
EOF
systemctl enable ssh
passwd
exit
On ajoute les montages dont le nouveau système aura besoin :
mount -t proc none /ram/proc
mount --rbind /sys /ram/sys
mount --rbind /dev /ram/dev
On va enfin utiliser pivot_root
pour utiliser notre nouveau système :
mkdir /ram/oldroot
cd /ram
pivot_root . oldroot
exec chroot . bin/bash <dev/console >dev/console 2>&1
La redirection de console permet de ne plus utiliser /oldroot/dev/console
, ce qui empêcherait de démonter /oldroot/dev
et /oldroot
.
Nous sommes désormais dans notre nouveau système. Cependant, le véritable init
(ie. systemd
) n'a pas été exécuté.
Cela ne serait pas problématique si la plupart des commandes de lvm2
ne souhaitaient pas communiquer avec le démon systemd-udevd
.
Il est sans doute possible de l'exécuter « à la main », mais pour des raisons de simplicité, on décide d'exécuter systemd
:
exec /sbin/init
On peut alors démonter l'ancien système utilisant le disque dur :
umount /oldroot/proc
umount /oldroot/sys
umount /oldroot/run
umount /oldroot/dev/pts
umount /oldroot/dev
umount /oldroot
systemd
ayant démarré le démon opensshd
, on peut continuer l'installation via SSH.
On va commencer par supprimer la structure LVM puis effacer le contenu du disque avec shred
:
apt install lvm2
vgremove escalopevg
pvremove /dev/sda2
shred -v /dev/sda
À partir de maintenant, il n'est plus « possible » de redémarrer (le disque ne contient plus de système).
On partionne le disque (avec cfdisk
par exemple) :
linux
de 512 Mio amorçable ;linux
occupant l'espace restant.On crée les partitions et initialisons les systèmes de fichiers :
mkfs.ext4 /dev/sda1
pvcreate /dev/sda2
vgcreate escalope /dev/sda2
lvcreate -L 16G -n swap escalope
lvcreate -L 20G -n slash escalope
lvcreate -L 20G -n var escalope
mkfs.ext4 /dev/escalope/slash
mkfs.ext4 /dev/escalope/var
mkswap /dev/escalope/swap
On monte alors les nouvelles partitions pour effectuer le debootstrap
final :
mkdir /newroot
mount /dev/escalope/slash /newroot
mkdir /newroot/var
mount /dev/escalope/var /newroot/var
mkdir /newroot/boot
mount /dev/sda1 /newroot/boot
debootstrap stable /newroot http://deb.debian.org/debian
On peut alors entrer dans le nouveu système pour finir son installation :
mount -t proc none /newroot/proc
mount --rbind /dev /newroot/dev
mount --rbind /sys /newroot/sys
mount --rbind /run /newroot/run
chroot /newroot /bin/bash
Depuis le chroot
, on installe le serveur OpenSSH et autorisons notre clef :
apt install openssh-server
mkdir /root/.ssh
chmod 600 /root/.ssh
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP8Hlov2NPt12FQhj9dmMmU/MvWJrAWUlnJcGdkBUkg1 jeltz' > /root/.ssh/authorized_keys
systemctl enable ssh
On configure le futur réseau :
cat <<'EOF' >/etc/network/interfaces
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
auto eno1.128
iface eno1.128 inet static
address 10.128.4.2/16
gateway 10.128.0.254
EOF
systemctl enable networking
Puis le montage des systèmes de fichiers (l'UUID est accessible via la commande blkid
) :
apt install lvm2
cat <<'EOF' >/etc/fstab
/dev/mapper/escalope-slash / ext4 errors=remount-ro 0 1
UUID=17948d94-0b88-46f6-91ae-b3e02d2fb966 /boot ext4 nodev,nosuid,noexec 0 2
/dev/mapper/escalope-var /var ext4 nodev,nosuid 0 2
/dev/mapper/escalope-swap none swap sw 0 0
EOF
Enfin, on installe un noyau et GRUB :
apt install linux-image-amd64 grub
grub-install /dev/sda
update-grub
On peut alors redémarrer le système.