L'objectif est d'utiliser une distribution Void Linux non proposée en standard sur [un VPS Contabo](https://contabo.com/?show=vps) en réalisant une installation via CHROOT. <!-- more -->
Cet article a été écrit sur la base de [la procédure du wiki](https://wiki.voidlinux.org/Installation_via_chroot) et de [cet article du blog mitchriedstra.com](https://mitchriedstra.com/2018/12/void-on-digital-ocean) en adaptant à mes besoins et en mettant à jour certaines opérations obsolètes.
## Procédure d'installation
Chaque hébergeur propose un mode de secours (souvent nommé *rescue* dans l'interface d'administration du serveur) pour reprendre la main sur un serveur en cas de souci. Cela consiste à démarrer un système minimal à partir duquel on pourra monter les partitions du disque principal pour essayer de réparer les choses. C'est cette porte de secours qui va nous servir à réaliser une installation manuelle de Void.
Au préalable j'ai réalisé une première installation standard avec une distribution supportée : Debian 10. Ainsi j'ai pu noter le paramètrage réseau configuré par Contabo sur le VPS : adresse IP, masque réseau, adresse de la passerelle, serveurs DNS. Ensuite j'ai redémarré en mode secours.
### Partitionnement et installation de l'image
Le partitionnement simple défini par Debian me suffit, je n'ai pas besoin de LVM ni de chiffrement.
root@sysresccd /void % fdisk -l
Disk /dev/loop0: 469.9 MiB, 492683264 bytes, 962272 sectors
C'est le bon moment pour monter la partition */boot*
mount /dev/sda1 /boot
On installe le kernel LTS puis on configure le boot
xbps-install -S linux-lts
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
> Ne pas oublier de fixer un mot de passe pour le compte *root* avec la commande *passwd*
### Finalisation de l'installation
A cette étape, on a un serveur fonctionnel mais on ne pourra pas prendre la main si on redémarre. Il faut terminer la configuration réseau et configurer l'accès par SSH.
Sur Void, une configuration réseau statique se configure en éditant */etc/rc.local*
# Static IP configuration via iproute
ip link set dev eth0 up
ip -4 addr add 62.xxx.xxx.xxx/xxx dev eth0
ip -4 route add default via 62.xxx.xxx.xxx dev eth0
On installe la configuration DNS préconisée par le fournisseur dans */etc/resolv.conf*
search invalid
nameserver 213.xxx.xxx.xxx
Enfin on configure l'accès distant par SSH. Normalement, sshd a été installé avec le système de base, on n'a qu'à mettre le service en démarrage automatique :
ln -sv /etc/sv/sshd/ /etc/runit/runsvdir/default/
Et on autorise la connexion du compte *root* par mot de passe en éditant */etc/ssh/sshd_config*
permitRootLogin
PasswordAuthentication yes
On renforcera la configuration SSH plus tard et on installera les outils de sécurité habituels (shorewall, fail2ban). Là, on peut tenter un redémarrage et vérifier qu'on peut accéder au serveur.
Si ce n'est pas le cas, c'est qu'une étape a grandement foiré. On relance le serveur en mode *rescue*, on chroote et on analyse les logs pour essayer de comprendre ce qui a échoué. Mais il aussi possible que l'échec soit survenu avant le démarrage du serveur et un accès type KVM proposé par certains hébergeurs peut aider à comprendre. Chez Contabo, c'est un accès VNC qui m'a mis le nez sur mon Grub incorrectement installé le premier coup.
![Grub cassé](/images/2020/broken-grub.png)
Bonne Void, une distribution qui mérite d'être connue !