Comment créer un rootfs CentOS depuis Fedora
01 aoĂ»t 2018Ma distribution du moment est Fedora pour mon ordinateur, et CentOS pour les serveurs. Et j’ai besoin de faire joujou avec des environnements virtuels pour tester des installations, notamment via Ansible. Jusque-lĂ pour ce besoin j’ai utilisĂ© VirtualBox ou LXC, mais je me suis mis en tĂȘte de tester systemd-nspawn. Pourquoi ? DĂ©jĂ parce que ça existe, donc ça a le mĂ©rite d’ĂȘtre testĂ©. Ensuite parce que VirtualBox mĂȘme en utilisant Vagrant c’est vachement lourd. Et LXC, bah j’ai rien Ă lui reprocher, mais Ă©tant donnĂ© que systemd est dĂ©jĂ prĂ©sent par dĂ©faut sur tous mes systĂšmes pourquoi y ajouter LXC qui fait plus ou moins la mĂȘme chose ?
Et donc avec systemd-nspawn pour lancer des conteneurs il faut soit une image soit un rootfs.
VoilĂ pour le contexte. Et voilĂ donc comment j’ai procĂ©dĂ©.
En premier lieu on créer un fichier de configuration de dépÎt pour CentOS, par exemple dans ~/centos7.repo :
[centos7-base]
name=CentOS-7-Base
baseurl=http://mirror.centos.org/centos/7/os/x86_64
gpgcheck=0
Ensuite on créer un dossier dans lequel dnf va installer tout ce qui est nécessaire, disons dans ~/centos :
mkdir ~/centos
sudo dnf -c centos.repo --disablerepo=* --enablerepo=centos7-base --installroot=/home/nicolas/centos/ groups install 'Minimal Install'
Pour terminer on se « chroot » dans le dossier et on lance la commande passwd pour définir un mot de passe au compte root :
sudo systemd-nspawn -D ~/centos/
AprĂšs ça on peut dĂ©marrer le conteneur normalement et s’authentifier avec le mot de passe prĂ©cĂ©demment dĂ©fini :
sudo systemd-nspawn -bD ~/centos/ --network-bridge virbr0
Et une fois que vous avez fait tout ça et que vous vous dites que c’est quand-mĂȘme un peu galĂšre juste pour lancer un conteneur, vous pouvez utiliser mkosi qui le fait pour vous, plus simplement, probablement beaucoup plus proprement et pour d’autres systĂšmes d’exploitation.
sudo mkosi -d centos --password topsecret
sudo systemd-nspawn -bi image.raw --network-bridge virbr0