Systemd : Démarrer une distribution comme un conteneur
Table des matières
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.
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 :
Ensuite, on monte la partition racine de la Debian dedans :
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 :
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 :
ou, si on veut rester très systemd ... :
Et voilà ! Vous savez démarrer un autre système installé en dual boot sur votre machine !
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 !