[distcc] Monter un cluster de VM pour réaliser de la cross compilation
|
25-01-2015, 17h00
(Modification du message : 27-01-2017, 18h24 par Junky.)
Message : #1
|
|
Junky
Snorky Master Messages : 228 Sujets : 35 Points: 203 Inscription : Mar 2013 |
[distcc] Monter un cluster de VM pour réaliser de la cross compilation
Bonjour,
Ceci est le premier topic d'une série de deux. Je vous explique vite fait. J'ai dans l'idée de monter un cluster de VM afin de réaliser de la cross compilation pour mon RPI. Avant de me lancer dans cette aventure, j'ai voulu réaliser des tests sur ma machine. Voir si c'est facile de le monter/configurer/tester. Dans un deuxième temps j'expliquerai comment le configurer pour votre RPI. Mais nous réaliserons celui-ci une fois que nous serons certains que l’hôte ne compile rien ou très peu. Je vais essayé de vous détailler au mieux les étapes afin qu'il vous soit facile de le reproduire chez vous. Je me suis inspiré de pas mal de doc sur la toile, essentiellement le wiki Gentoo, car sans vouloir troller il faut avouer qd même qu'il fait partie des meilleurs wikis disponibles sur la toile toutes distribs confondues. Je mettrai ici les démarches spécifiques a Gentoo (excusez moi, mais comme vous le savez je n'utilise que Gentoo niveau personnel). Les seules choses qui vont réellement changer, sont les procédures d'installations. Les configurations ne changeront pas des masses. Allez Allez!!! On attache la ceinture, c'est tipar... 0x01 On dispose de quoi? Existant pour réaliser les tests: - Support: laptop. (UX31E zenbook ASUS) - OS: Gentoo - Virtu: vagant - provider: Virtualbox Bon Support et OS vous comprenez. Pour Virtu, je vais utiliser Vagrant. Alors Vagrant pour ceux qui ne connaissent pas, c'est juste de la balle. Ca vous permet de créer des VM suivant des OS Templates. En gros vous voulez un VM jetable pour la pentester, configurer ou vous amuser avec suicide linux, alors vagrant est l'outil de la situation. Provider est le tools de virtualisation. En faite vagrant ne gère pas les VM a proprement parlé. Il va les créer mais pour les faire tourner, il vous faut un "hyperviseur". Dans mon cas, j'utilise Virtualbox, mais vagrant vous autorise VmWare, aws et bien d'autre. Je vous laisse vous reporter à la doc pour plus de détails sur les provider disponible. 0x02 Installation L'installation de VirtualBox est assez easy sur Gentoo. un simple emerge vous permettra de l'installer. Pour vagrant c'est un peu différent. Vagrant est disponible par défaut dans l'arbre de portage mais il est masqué. Code BASH :
Pour être honnête, j'avais pas envie de le compiler. J'ai recherché sur le net et j'ai trouvé un 'vagrant-bin' disponible dans un overlay gentoo. Il est disponible ici. Il vous suffit donc de rajouter l'overlay dans votre make.conf de recharger portage et de rechercher Code BASH :
Il était en masked aussi, mais un rajout de l'ebuild dans le fichier 'portage/package.unmask' et de votre archi dans le 'portage/package.accept.keywords' résoudra le problème. 0x03 Création des machines virtuelles. Maintenant que nous avons nos outils nous allons commencer par créer nos VM. Dans un premier temps il faut récupérer notre template de VM. Alors la c'est un conseil, vous faites comme vous voulez, mais je vous conseil dans un premier temps de prendre les mêmes distrib que votre distribution d'origine. Pourquoi ? simplement pour éviter d'avoir des grosses différences dans les versions. (J'en parlerai un peu plus tard.) Récupérez un template ici: Code : 0 ✓ silentd@G3nt00 ~ $ cd .vagrant.d/ Ensuite il vous faut créer le 'Vagranfile' Code : 0 ✓ silentd@G3nt00 ~/.vagrant.d $ vagrant init votre/template Editez le 'Vagrantfile' et modifiez le. Je vous poste le miens. Inspirez vous en. Code BASH :
Et démarrez le tout. Code : 0 ✓ silentd@G3nt00 ~/.vagrant.d $ vagrant up La première fois que vagrant va démarrer, le temps est un peu long. En faite il va créer les VM, donc ne vous inquiétez pas. Vous verrez un indicateur de progression en % Voila pour nos VM. Un 'vagrant status' vous donnera des infos sur vos VM. Il vous sera aussi possible de vous connecter sur les VM 'vagrant ssh $VM_HOSTNAME'. Reportez vous a la doc vagrant pour plus d'infos. le mot de passe root est 'vagrant' 0x04 Installation/Configuration distcc Bon comme vous pouvez le devinez, nous allons utiliser 'distcc' pour réaliser nos cross compile. Code : 0 ✓ silentd@G3nt00 ~/.vagrant.d $ emerge -s distcc Installez le et rajoutez le dans openrc au démarrage sur toutes les machines qui devront compiler mais aussi sur la machine pour laquelle nous compilons. Dans mon cas, 'node1', 'node2' et mon 'laptop'. /!\ faites attention au niveau des versions de GCC. Essayez d'avoir les même. D'après la doc distcc, il est possible d'avoir des versions différentes, mais il est aussi possible que ceci provoque des problèmes. Voici ce qu'il recommande: - Même version Ok! (4.4.4 avec 4.4.4) - Même release mais version mineur différente + ou - Ok! (4.4.X avec 4.4.Y) - Le reste oubliez Fail! voici mes versions: Code : vagrant@node1 ~ $ gcc-config -l Configuration des VMs: Par défaut la conf est bien, mais vous devez rajouter l'option '--allow'. C'est pour lister les IP autorisés a ce connecter dans le fichier '/etc/conf.d/distccd' Code : DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.1.0/24" On est bon niveau VM, rien de très compliqué pour le coup. Configuration de l'hôte Il faut rajouter la même option que pour les nodes dans le '/etc/conf.d/distccd' Code : DISTCCD_OPTS="${DISTCCD_OPTS} --allow 192.168.1.0/24" Il faut aussi spécifier les IP des nodes avec lesquels nous désirons travailler. '/etc/distcc/hosts' Code : 0 ✓ silentd@G3nt00 ~/.vagrant.d $ cat /etc/distcc/hosts Editez votre make.conf. Rajoutez ceci: Code : FEATURES="${FEATURES} distcc" Pour le $MAKEOPTS, le M correspond au nombre TOTAL de CPU+1 '(cpu_node1 + cpu_node2 + cpu_laptop)+1'. Pour le N c'est le nombre CPU local c'est a dire dans mon cas le nombre de CPU de mon laptop. Démarrez les distcc sur toutes les machines. Voila nous en avons fini avec la configuration. Elle est assez simple dans l'absolue. Rien de bien compliqué. Nous pouvons lancer un test. Dans mon test j'ai compilé 'wireshark'. Il vous est possible de voir la distribution des taches vi la commande 'distccmon-gui'. Et voici le résultat que j'ai pu observé: Il y a plusieurs couleurs: - vert => compile - violet => connect - bleu => preprocess - rose/rouge => send J'ai pu remarquer que l'hôte travail un peu, ce qui est qd même assez normal, c'est lui qui va créer le config.status, appliquer les patchs, dl les sources ect... Mais ensuite tout ce qui est travail de compilation, il n'en réalise pratiquement pas. Je pense (j'ai pas encore testé) que si on enlève le 127.0.0.1 dans le fichier 'hosts' de distcc l'hôte n'en réalisera pas. Le souci si j'applique cette configuration est que certaines applications ne supporte pas la cross compilation. Donc c'est l'hôte que va devoir tout faire, et si il est pas dans le 'hosts' comment distcc réagi? De plus si les nodes ne sont pas up, comment réagit il aussi. Bref je ferai des tests, et je le posterai afin de voir comment il réagit. 0x05 Conclusion Je me suis pas mal éclaté il faut l'avouer a monter ce petit cluster et voir comment on peut déléguer des taches a d'autre machines de notre parc. Finalement je pense que c'est un très bon exercice, car nous avons tous 2 3 machines et il y en a vraiment qu'une seule de rentable. En faisant ceci, l'idée d'avoir un petit parc perso prend tout son sens. Dans le prochain topic, je montrerai comment configurer votre rpi et tant qu'hôte et j'aurai réalisé les tests que j'explique au dessus. Peut-être que j'arriverai réellement a rien lui faire compiler ce qui sauvegardera un peu plus la SD. N'hésitez a poser des questions sur des conf pour d'autres distrib, je serai ravi de vous aider. Junky, Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
« Sujet précédent | Sujet suivant »
|
Messages dans ce sujet |
[distcc] Monter un cluster de VM pour réaliser de la cross compilation - par Junky - 25-01-2015, 17h00
RE: [distcc] Monter un cluster de VM pour réaliser de la cross compilation - par Junky - 26-01-2015, 00h03
RE: [distcc] Monter un cluster de VM pour réaliser de la cross compilation - par Dobry - 29-01-2015, 19h12
RE: [distcc] Monter un cluster de VM pour réaliser de la cross compilation - par Junky - 29-01-2015, 23h49
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Un petit script pour voir si machine vérolé | FraKtaL | 2 | 267 |
23-11-2013, 00h36 Dernier message: FraKtaL |
|
[Debian] Solution pour sauvegarder entierement sa distribution | thxer | 19 | 1,048 |
28-08-2013, 07h43 Dernier message: 0pc0deFR |
|
[Astuce] Monter une image disque sous GNU/Linux | supersnail | 1 | 213 |
12-06-2013, 17h25 Dernier message: thxer |
|
Selection d'outils pour tous os de base ubuntu | thxer | 1 | 175 |
03-04-2013, 22h25 Dernier message: Zhyar |
|
[TROLL-OUPA] Linux pour (très) vieux PC ! | Doliprane | 8 | 595 |
24-03-2013, 00h24 Dernier message: balis |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)