LE BLOG DE RICK Chasseurs de succès Linux Random WU

Par Rick dans Linux le 27/09/2023.


LXC pour développer des paquets Gentoo sur Arch

Je développe de manière régulière des nouveaux paquets pour Gentoo dans mon overlay personnel. Il m'est aussi arrivé, une fois, de fixe un paquet qui marchait mal. Étant donné que c'est souvent très léger, je ne me suis jamais vraiment investi là-dedans. Cependant, récemment, j'ai voulu reprendre un paquet qui était à l'abandon et qui a été développé comme un cochon (il a bc en dépendance, c'est pour dire). Je me voyais mal utiliser mon environnement actuel pour tester, je rappelle que je développe sur un vieux PC de 2013, et je voulais aussi repartir de 0 pour voir les dépendances qu'on pouvait enlever sans soucis. C'est pour ça que j'ai décidé de travailler dans un environnement conteneurisé avec Linux Containers ou LXC. Je l'ai préféré plutôt que Docker parce que je n'ai pas trouvé d'image intéressante de Gentoo chez la baleine et aussi parce que je voulais découvrir un nouveau logiciel !

Dans cet article, je vais expliquer comment j'ai mis en place mon environnement sur ma tour, qui tourne sous Arch(btw).

Installation et configuration

Il est très simple d'installer LXC sur Arch, via son paquet lxc. La configuration est un poil plus pénible cependant. Il faut préparer la connexion internet avec lxc-net. Je me suis appuyé sur l'article de Stanislas à ce sujet.

On va dans un premier temps démarrer le démon lxc-net, avant d'activer son pont et le redémarrer pour qu'il puisse se configurer. Il n'y a pas besoin de faire plus, le paquet LXC sur Arch contenant déjà la configuration de base pour utiliser un pont.

sudo systemctl start lxc-net
echo USE_LXC_BRIDGE="true" | sudo tee /etc/default/lxc-net
sudo systemctl restart lxc-net
sudo systemctl start lxc

Je vais revenir sur la mise en place d'Internet dans le conteneur, qui nécessite quelques commandes en plus.

Lancer le conteneur

Pour pouvoir lancer un conteneur, je vais m'appuyer sur un template fourni par LXC et lui passer une arborescence de fichiers pour créer mon conteneur. Je m'appuie sur le wiki de Gentoo pour cette partie.

Il faut en premier mettre un fichier de configuration par défaut, il peut être vide.

touch config 
tar -cJf metadata.tar.xz config

Il faut ensuite télécharger le stage 3 de l'installation de Gentoo, contenant une arborescence basique pour pouvoir finir l'installation de Gentoo. Elle servira de base pour notre conteneur.

sudo lxc-create -t local -n gentoo-guest -- --fstree stage3.tar.xz --metadata \
    metadata.tar.xz

Et maintenant, on peut démarrer, s'attacher et éteindre notre conteneur !

sudo lxc-start gentoo-guest
sudo lxc-attach gentoo-guest
sudo lxc-stop gentoo-guest

Et pour avoir Internet ?

Notre conteneur ne configure pas de lui-même son adresse IP. Il faut le faire pour pouvoir faire les mises à jours. On ajoute simplement une IP à l'interface eth0 ainsi qu'une route. Rien de bien compliqué ! On peut ensuite rajouter un DNS (ici, celui de la FDN). Il faut aussi mettre à jour le PATH qui ne contient pas le dossier bin, ce qui peut être embêtant pour taper de futurs commandes.

. /etc/profile
ip a add dev eth0 10.0.3.11/24
ip route append default via 10.0.3.1
echo nameserver 80.67.169.12 > /etc/resolv.conf

Conclusion

En conclusion, LXC est très simple à installer et à prendre en main, mais je me trouve un petit peu restreint avec mon conteneur issu d'une installation à peine finie de Gentoo. J'ai prévu de faire une image un peu plus sécurisée, bien configurée et avec les outils de base tel que Git installés. Sûrement un futur article !