You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog/posts/2020/2020-04-05-chroot-void.md

130 lines
5.7 KiB
Markdown

5 years ago
<!-- title: Installation de Void sur un VPS -->
<!-- category: Hébergement -->
9 months ago
L'objectif est d'utiliser une distribution Void Linux non proposée en standard sur [un VPS Contabo](https://contabo.com) en réalisant une installation via CHROOT. <!-- more -->
5 years ago
9 months ago
Cet article a été écrit sur la base de [la procédure du wiki](https://docs.voidlinux.org/installation/guides/chroot.html) 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.
5 years ago
## 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
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sda: 400 GiB, 429496729600 bytes, 838860800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x54d070ad
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1953791 1951744 953M 83 Linux
/dev/sda2 1953792 838858751 836904960 399.1G 83 Linux
On reformate les deux partitions en EXT4 avec la commande *mkfs.ext4* :
- sda1 qui contient */boot*
- sda2 qui contient */*
Ensuite on monte la partition */* dans laquelle on télécharge et décompresse l'image ROOTFS de Void Linux.
mkdir /void
mount /dev/sda2 /void
cd /void
wget https://a-hel-fi.m.voidlinux.org/live/current/void-x86_64-ROOTFS-20191109.tar.xz
tar xJf void-x86_64-ROOTFS-20191109.tar.xz
rm -f void-x86_64-ROOTFS-20191109.tar.xz
### Chrootage et installation du système de base
On se chroote en quelques commandes :
mount -t proc none proc
mount -o bind /sys sys
mount -o bind /dev dev
chroot /void /bin/bash
export PS1="(CHROOT) # ""
Le système cible a sa configuration IP mais plus sa configuration DNS ; on rémédie à cela en configurant le DNS Google.
echo nameserver 8.8.8.8 > /etc/resolv.conf
On peut aussi éditer */etc/hostname* pour personnaliser le nom local de la machine avant d'installer le système de base de Void.
echo repository=https://a-hel-fi.m.voidlinux.org/current/ >/etc/xbps.d/00-repository-main.conf
xbps-install -Syu base-system curl wget grub gptfdisk lzop lzip xz libressl dracut sudo
On génère le fichier */etc/fstab*
cat /proc/mounts | grep -E '(xfs|ext4)' >> /etc/fstab
On vérifie quand même le contenu ;-)
(CHROOT) # cat /etc/fstab
#
# See fstab(5).
#
# <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
/dev/sda2 / ext4 rw,relatime,data=ordered 0 0
### Noyau et amorçage avec Grub
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 !