Systemd : Démarrer une distribution comme un conteneur




Introduction



Systemd est un véritable couteau suisse. En plus de démarrer des services et de gérer l'initialisation du système, il permet de démarrer une autre distribution Linux installée sur le système.

Cela est possible avec systemd-nspawnd.

Cette commande permet d'exécuter une commande ou un système d'exploitation dans un conteneur. L'utilisation expliquée ici est similaire à un chroot, mais en plus puissant car il "virtualise" entièrement le système de fichiers, l'arborescence des services, etc.


Contexte



Ici, CentOS 7 est installé sur le premier disque dur (/dev/sda), en LVM de manière classique.
Je souhaite démarrer une Debian installée sur /dev/sdb dont la racine est /dev/sdb1.

On va dans un premier temps créer un dossier sur mon arborescence CentOS dans laquelle on va monter la racine de la Debian :

Code BASH :
mkdir /conteneur


Ensuite, on monte la partition racine de la Debian dedans :

Code BASH :
mount /deb/sdb1 /conteneur



Démarrer un autre système



Maintenant que l'arborescence de l'autre système est montée, on va invoquer la commande systemd-nspawn avec quelques arguments utiles pour spécifier qu'on souhaite démarrer ce système et indiquer à systemd la racine de celui-ci :

Code BASH :
systemd-nspawn --boot --directory=/conteneur


Le conteneur Debian démarre et on peut s'y connecter comme si nous étions devant la console de cette Debian !



Pour quitter ce conteneur, il suffit d'éteindre la machine comme si nous étions devant une vraie machine virtuelle ou conteneur LXC :

Code BASH :
shutdown -h now


ou, si on veut rester très systemd ... :

Code BASH :
systemctl poweroff



Et voilà ! Vous savez démarrer un autre système installé en dual boot sur votre machine !
Cette page a été vue 5343 fois