new post
This commit is contained in:
parent
aedd1f9cd3
commit
08984b7845
2 changed files with 131 additions and 0 deletions
131
posts/2020/2020-04-05-chroot-void.md
Normal file
131
posts/2020/2020-04-05-chroot-void.md
Normal file
|
@ -0,0 +1,131 @@
|
|||
|
||||
<!-- title: Installation de Void sur un VPS -->
|
||||
<!-- category: Hébergement -->
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||

|
||||
|
||||
Bonne Void, une distribution qui mérite d'être connue !
|
||||
|
||||
|
BIN
static/images/2020/broken-grub.png
Normal file
BIN
static/images/2020/broken-grub.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 153 KiB |
Loading…
Add table
Reference in a new issue