<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le Blog du grand loup Zeur &#187; kernel</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/kernel/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Sun, 25 Jul 2010 20:48:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Compiler android sur ubuntu 9.10</title>
		<link>http://blog.gaetan-grigis.eu/android/compiler-android-sur-ubuntu-9-10/</link>
		<comments>http://blog.gaetan-grigis.eu/android/compiler-android-sur-ubuntu-9-10/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 20:51:54 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[eclair]]></category>
		<category><![CDATA[kernel]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=711</guid>
		<description><![CDATA[Bijour à tous &#8230; Après quelques semaines sans article, il me fallait du lourd pour affirmer ma virilité mon côté geek &#8230; j&#8217;ai donc décidé d&#8217;écrire un petit truc sur android parce que j&#8217;ai rien d&#8217;autre à foutre et que je voulais voir tourner mes proc à plein régime &#8230; Pour ce faire il vous [...]]]></description>
			<content:encoded><![CDATA[<p>Bijour à tous &#8230;<br />
Après quelques semaines sans article, il me fallait du lourd pour affirmer <del datetime="2010-03-04T20:53:16+00:00">ma virilité</del> mon côté geek &#8230; j&#8217;ai donc décidé d&#8217;écrire un petit truc sur android<del datetime="2010-03-04T20:53:16+00:00"> parce que j&#8217;ai rien d&#8217;autre à foutre</del> et que je voulais voir tourner mes proc à plein régime &#8230;<br />
<a href="http://cdn-blog-loupzeur.appspot.com/wp-content/uploads/2010/03/compilation-android.png"><img src="http://cdn-blog-loupzeur.appspot.com/wp-content/uploads/2010/03/compilation-android.png" alt="" title="compilation-android" width="104" height="218" class="aligncenter size-full wp-image-729" /></a><br />
<span id="more-711"></span><br />
Pour ce faire il vous faudra :</p>
<ol>
<li>de la patience</li>
<li>de la patience</li>
<li>de la patience</li>
<li>de la patience</li>
<li>un ordi (facultatif si vous pouvez compiler de tête &#8230; pour ma part j&#8217;y arrive pas encore :s)</li>
<li>4Go de ram + un bon CPU</li>
<li>linux</li>
</ol>
<p>Il vous faudra aussi installer une machine java très ancienne (1.5) à <a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-1.5.0_21-oth-JPR@CDS-CDS_Developer">télécharger ici</a>. Installez-là en mode utilisateur simple dans un dossier dédié à la compilation d&#8217;android, chez moi : ~/Android/.</p>
<p>Ensuite, le super script, les quelques variables au début du fichier sont à modifier, le reste est automatisé.<br />
Ce que fait le script :</p>
<ol>
<ul>Téléchargement du fichier repo</ul>
<ul>Récupération/Mise à jour du dépot d&#8217;android (très lourd, il faut 1 heures pour dl 2Giga de données)</ul>
<ul>Compilation des sources d&#8217;android (tout les binaires, &#8230; c&#8217;est très long)</ul>
<ul>et c&#8217;est tout!!</ul>
</ol>
<p>Faudra quand même attendre 3 ou 4 heures lors de la première compilation/récupération des fichiers&#8230; </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">JDK15=</span><span class="sy0">/</span>home<span class="sy0">/</span><span class="re1">$USER</span><span class="sy0">/</span>Documents<span class="sy0">/</span>Android<span class="sy0">/</span>jdk1<span class="nu0">.5</span>.0_21<span class="sy0">/</span>bin</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">BINDIR=</span><span class="sy0">/</span>home<span class="sy0">/</span><span class="re1">$USER</span><span class="sy0">/</span>Documents<span class="sy0">/</span>Android</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">MYDROID=</span><span class="sy0">/</span>home<span class="sy0">/</span><span class="re1">$USER</span><span class="sy0">/</span>Documents<span class="sy0">/</span>Android<span class="sy0">/</span>mydroid</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">TYPE_MACHINE=</span>`<span class="kw2">uname</span> -m`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">PATH=</span><span class="re1">$JDK15</span>:<span class="re1">$PATH</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#Need 1.5 https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-1.5.0_21-oth-JPR@CDS-CDS_Developer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">##############DON&#39;T TOUCH BELOW&#8230; OR SUFFER HUNDREDS PAINS &#8230; MUUAAHAHAHAHAHAHAHAHAAHAHHAAAA</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Lancement de SIACAKDLM&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Système d&#39;install automatisé de compilation d&#39;android pour kikoolol dépressif en 1337n355 mode&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Temps requis pour arriver à la fin de ce script après execution : 2h00&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Installation des fichiers requis &#8230;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> apt-get -yqq <span class="kw2">install</span> git-core gnupg sun-java6-jdk <span class="kw2">flex</span> <span class="kw2">bison</span> gperf libsdl-dev ncurses-dev libesd0-dev libwxgtk2<span class="nu0">.6</span>-dev build-essential <span class="kw2">zip</span> curl libncurses5-dev zlib1g-dev valgrind</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$TYPE_MACHINE</span> == <span class="st0">&quot;x86_64&quot;</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Zetes en 64bits &#8230; on en rajoute une couche <img src='http://cdn-blog-loupzeur.appspot.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> &quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> apt-get -yqq <span class="kw2">install</span> ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib lib32readline5-dev</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -f <span class="re1">$BINDIR</span><span class="sy0">/</span>repo <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Récupération du fichier repo&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> -qO <span class="re1">$BINDIR</span><span class="sy0">/</span>repo http:<span class="sy0">//</span>android.git.kernel.org<span class="sy0">/</span>repo <span class="sy0">&amp;&amp;</span> <span class="kw2">chmod</span> +x <span class="re1">$BINDIR</span><span class="sy0">/</span>repo</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -d <span class="re1">$MYDROID</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Création du dossier $MYDROID&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> <span class="re1">$MYDROID</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> <span class="re1">$MYDROID</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -d <span class="re1">$MYDROID</span><span class="sy0">/</span>prebuilt<span class="sy0">/</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$BINDIR</span><span class="sy0">/</span>repo init -u git:<span class="sy0">//</span>android.git.kernel.org<span class="sy0">/</span>platform<span class="sy0">/</span>manifest.git</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Mise à jour du dépôt &#8230; ça prend du temps &#8230; beaucoup de temps :s&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re1">$BINDIR</span><span class="sy0">/</span>repo <span class="kw2">sync</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">CCOMPILER=</span><span class="re1">$MYDROID</span><span class="sy0">/</span>prebuilt<span class="sy0">/</span>linux-x86<span class="sy0">/</span>toolchain<span class="sy0">/</span>arm-eabi<span class="nu0">-4.4</span><span class="nu0">.0</span><span class="sy0">/</span>bin<span class="sy0">/</span>arm-eabi-</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> <span class="re1">$MYDROID</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">source</span> build<span class="sy0">/</span>envsetup.<span class="kw2">sh</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">sed</span> -n -e <span class="st0">&quot;s/^add_lunch_combo//gp&quot;</span> vendor<span class="sy0">/*/</span>vendorsetup.<span class="kw2">sh</span> <span class="sy0">&amp;&amp;</span> lunch generic-eng <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> -j4</div>
</li>
</ol>
</div>
<p>Les fichiers de sorties de trouvent dans : $MYDROID/out/target/product/generic (les .img contiennent l&#8217;os , les logiciels et tout le bazard qu&#8217;embarque android).<br />
Voilà, laisser mouliner, puis tester-le en machine virtuelle avant l&#8217;install sur votre phone (en n&#8217;oubliant pas bien sûr de faire une sauvegarde <img src='http://cdn-blog-loupzeur.appspot.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Pour tester votre système android fraichement compilé, il vous suffit d&#8217;utiliser AVD (fournit avec le SDK de dev de google), d&#8217;aller dans le dossier .android/avd/le nom d&#8217;une machine générée/, et d&#8217;y mettre votre image système (et vos autres img si ça vous chante).</p>
<p>Ce qui m&#8217;a donné la version éclair pour mon émulateur :<br />
<a href="http://cdn-blog-loupzeur.appspot.com/wp-content/uploads/2010/03/Capture.png"><img src="http://cdn-blog-loupzeur.appspot.com/wp-content/uploads/2010/03/Capture.png" alt="" title="Capture" width="331" height="493" class="aligncenter size-full wp-image-728" /></a></p>
<p>Quelques liens sympa (<del datetime="2010-03-04T21:22:03+00:00">dont je me suis grandement inspirés</del>, que j&#8217;ai plagiés) :</p>
<ol>
<li>[EN]Explicatif sur le <a href="http://benno.id.au/blog/2007/11/13/android-under-the-hood">fonctionnement d&#8217;android</a></li>
<li>Article plus poussé en français <a href="http://www.unixgarden.com/index.php/embarque/les-dessous-dandroid">d&#8217;unixgarden</a></li>
<li><a href="http://www.android-inside.com/2009/12/comment-acceder-a-android-market-sur-emulateur/">L&#8217;astuce pour tester</a> son system.img</li>
<li>le <a href="http://wiki.cyanogenmod.com/index.php/How_to_build_a_kernel_port">tuto de compilation</a> de cyanogen + packaging pour aller plus <del datetime="2010-03-05T20:44:41+00:00">haut</del> loin</li>
</ol>
<p>La compilation et l&#8217;installation d&#8217;un cyanogenmod sera pour plus tard <img src='http://cdn-blog-loupzeur.appspot.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=711">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/android/compiler-cyanogen-android-froyo-sur-ubuntu/" rel="bookmark" title="Permanent Link: Compiler Cyanogen (android froyo) sur Ubuntu">Compiler Cyanogen (android froyo) sur Ubuntu</a></li><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/mon-application-android-pour-les-horaires-de-la-cts/" rel="bookmark" title="Permanent Link: Mon Application Android pour les horaires de la CTS">Mon Application Android pour les horaires de la CTS</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/installer-un-donuts-sur-son-g1-cyanogenmod/" rel="bookmark" title="Permanent Link: Installer un donuts sur son G1 (CyanogenMod)">Installer un donuts sur son G1 (CyanogenMod)</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/creer-un-paquet-pour-les-ppa/" rel="bookmark" title="Permanent Link: Créer un paquet pour les ppa">Créer un paquet pour les ppa</a></li></ul><hr /><small>Copyright &copy; 2008-2010 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/android/compiler-android-sur-ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monter un cluster avec kerrighed sur son réseau</title>
		<link>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 18:50:54 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[booter en réseau]]></category>
		<category><![CDATA[calcul parallel]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[grappe]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kerrighed]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[tftpboot]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=637</guid>
		<description><![CDATA[Plopinou &#8230; encore un article de type &#171;&#160;retour d&#8217;expérience geek&#160;&#187; Temps : 2h (en compilant le tout avec un AMD 3000+) Niveau : Noob (faut quand même savoir jouer à WoW le temps de la compil&#8217; qui peut prendre 1 heures) Le but de cette technique était de recycler quelques PC sur mon réseau et gagner en [...]]]></description>
			<content:encoded><![CDATA[<p>Plopinou &#8230; encore un article de type &laquo;&nbsp;retour d&#8217;expérience geek&nbsp;&raquo;<br />
Temps : 2h (en compilant le tout avec un AMD 3000+)<br />
Niveau : Noob (faut quand même savoir jouer à WoW le temps de la compil&#8217; qui peut prendre 1 heures)</p>
<p>Le but de cette technique était de recycler quelques PC sur mon réseau et gagner en puissance de calcul avec de vieux AMD 3000+ avec 1Go de ram.<br />
<span id="more-637"></span><br />
<a href="http://fr.wikipedia.org/wiki/Kerrighed" target="_blank">Kerrighed</a> est un cluster de type &laquo;&nbsp;<a href="http://fr.wikipedia.org/wiki/Grappe_de_serveurs" target="_blank">Grappe de serveur</a>&nbsp;&raquo; qui permet un truc assez sympa, il suffit que l&#8217;ensemble des machines du réseau utilisent le kernel modifié (un 2.6.20 obligatoire &#8230;) pour que l&#8217;ensemble de ces machines puissent être emulées comme une seul machine <a href="http://fr.wikipedia.org/wiki/Symmetric_multiprocessing" target="_blank">SMP</a> partageant donc le CPU et la RAM des machines, assez sympa pour des logiciels qui bouffent de la ram et du cpu (genre firefox ?? xD).</p>
<p>Le gros intéret de ce type de réseaux face à des solutions comme les systèmes <a href="http://fr.wikipedia.org/wiki/Message_Passing_Interface" target="_blank">MPI</a> est qu&#8217;il n&#8217;y a pas besoin d&#8217;avoir des logiciels spécifique qui utilisent l&#8217;interface en question, ici la plupart des softs qui peuvent tourner sur du kernel SMP (qui devient assez commun sur les dernières machine multi-core pour partager les calculs entre les cores d&#8217;une même machine) peuvent être susceptible d&#8217;utiliser le CPU/RAM des autres ordi.</p>
<p>Alors bon &#8230; d&#8217;un côté ça parait super intéressant de pouvoir ajouter la puissance de nos anciens PC, d&#8217;un autre ont se dit &#8230; c&#8217;est naze, faut installer le kernel à la main sur chacune de ces machines, de quoi repousser n&#8217;importe qu&#8217;elle geek en puissance devant le travail à fournir &#8230;</p>
<p>C&#8217;est là qu&#8217;intervient un truc super sympa que l&#8217;iut de stras utilisait pour faire booter les terminaux X (et que d&#8217;autre utilisent surement). Utiliser une machine comme serveur dhcp,nfs,tftpd-hpa pour faire booter d&#8217;autres machines sur un réseau (en clair, on installe le système sur une machine, et toute les autres boot dessus, permettant même de d&#8217;utiliser des machines sans disque dur, comme ça on peut ce faire une machine qui prend tt les dd et les partager sur le réseau et pouvoir rajouter une nouvelle machine en la connectant simplement au réseau et en la bootant dessus).</p>
<p>Pour ça, j&#8217;ai suivi un superbe <a href="http://www.debianadmin.com/how-to-set-up-a-high-performance-cluster-hpc-using-debian-lenny-and-kerrighed.html" target="_blank">tuto</a> (en anglais, et pas trop vieux en plus) que je vais traduire et commenter avec mes superbes retour d&#8217;expériences ^^.</p>
<p><strong>L&#8217;architecture : </strong></p>
<p>J&#8217;ai ma machine HOST (serveur nfs,dhcp,tftpd, &#8230;) sur laquelle je fait toute mes manipulations, avec deux interfaces, la première connectée au net (histoire de pouvoir mettre à jour la machine), et la seconde connectée à mon réseau de cluster, qui a besoin d&#8217;un réseau à part, puisque j&#8217;utilise un serveur DHCP dédié à l&#8217;adressage de ces machines.</p>
<p>Donc voilà, pour les IPs : 192.168.0.1 est mon serveur principal, 192.168.0.10 et 192.168.0.11 sont mes deux nodes qui vont booter sur le réseaux.</p>
<p>L&#8217;ensemble des manipulations à suivre ce faisant depuis 192.168.0.1 (nommé HOST).</p>
<p>La première commande :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> dhcp3-server tftpd-hpa portmap syslinux nfs-kernel-server nfs-common debootstrap</div>
</li>
</ol>
</div>
<p>qui permettra d&#8217;installer l&#8217;ensemble des softs nécessaire à notre cluster.</p>
<p>Puis on modifie le fichier <strong>/etc/default/dhcp3-server</strong> et on spécifie l&#8217;interface sur laquelle est connecté notre cluster (eth0 étant ma connexion au net) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">INTERFACES=</span><span class="st0">&quot;eth1&quot;</span></div>
</li>
</ol>
</div>
<p>Puis le fichier /etc/dhcp3/dhcpd.conf</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0"># General options</span></div>
</li>
<li class="li1">
<div class="de1">option dhcp-max-message-<span class="kw2">size</span> <span class="nu0">2048</span>;</div>
</li>
<li class="li1">
<div class="de1">use-host-decl-names on;</div>
</li>
<li class="li1">
<div class="de1">deny unknown-clients;</div>
</li>
<li class="li1">
<div class="de1">deny bootp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">option domain-name <span class="st0">&quot;cluster.lan&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option domain-name-servers <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">subnet <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.0</span> netmask <span class="nu0">255.255</span><span class="nu0">.255</span><span class="nu0">.0</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">option routers <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1">option broadcast-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.255</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">group <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">filename <span class="st0">&quot;pxelinux.0&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option root-path <span class="st0">&quot;192.168.0.11:/nfsroot/kerrighed&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">host node1 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">fixed-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.10</span>;</div>
</li>
<li class="li1">
<div class="de1">hardware ethernet <span class="nu0">11</span>:<span class="nu0">33</span>:<span class="nu0">22</span>:<span class="nu0">55</span>:<span class="nu0">44</span>:<span class="nu0">66</span>;<span class="co0">#à remplacer par l&#39;adresse mac de votre machine 1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">host node2 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">fixed-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.11</span>;</div>
</li>
<li class="li1">
<div class="de1">hardware ethernet <span class="nu0">11</span>:<span class="nu0">22</span>:<span class="nu0">33</span>:<span class="nu0">44</span>:<span class="nu0">55</span>:<span class="nu0">66</span>;<span class="co0">#à remplacer par l&#39;adresse mac de votre machine 2</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">server-name <span class="st0">&quot;host&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">next-server <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>; <span class="co0"># Server IP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>On permet le lancement en daemon de tftp au démarrage de la machine en modifiant /etc/default/tftp-hpa</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">RUN_DAEMON=</span><span class="st0">&quot;yes&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">OPTIONS=</span><span class="st0">&quot;-l -s /var/lib/tftpboot&quot;</span></div>
</li>
</ol>
</div>
<p>On copie notre loader pxe</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>syslinux<span class="sy0">/</span>pxelinux<span class="nu0">.0</span> <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot</div>
</li>
</ol>
</div>
<p>On créer notre dossier de conf :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> -p <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot<span class="sy0">/</span>pxelinux.cfg</div>
</li>
</ol>
</div>
<p>Et on edit notre fichier de boot réseau dans /var/lib/tftpboot/pxelinux.cfg/default : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">LABEL linux</div>
</li>
<li class="li1">
<div class="de1">KERNEL vmlinuz<span class="nu0">-2.6</span><span class="nu0">.20</span>-krg</div>
</li>
<li class="li1">
<div class="de1">APPEND <span class="re2">console=</span>tty1 <span class="re2">root=</span><span class="sy0">/</span>dev<span class="sy0">/</span>nfs <span class="re2">nfsroot=</span><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>:<span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed <span class="re2">ip=</span>dhcp rw <span class="re2">session_id=</span><span class="nu0">1</span></div>
</li>
</ol>
</div>
<p>Maintenant que notre boot est prêt, il faut créer le système sur lequel les autres machines vont booter :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> -p <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed</div>
</li>
</ol>
</div>
<p>On prépare l&#8217;import en éditant le fichier /etc/exports :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span><span class="sy0">/</span><span class="nu0">255.255</span><span class="nu0">.255</span><span class="nu0">.0</span><span class="br0">&#40;</span>rw,no_subtree_check,async,no_root_squash<span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Puis un coup de </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">exportfs -avr <span class="sy0">&amp;&amp;</span> debootstrap &#8211; -<span class="kw2">arch</span> i386 lenny <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed http:<span class="sy0">//</span><span class="kw2">ftp</span>.fr.debian.org<span class="sy0">/</span>debian</div>
</li>
</ol>
</div>
<p>Qui peut prendre un bon bout de temps (z&#8217;avez le temps de faire un warsong voir même une instance de 30 minutes sur WoW ^^) &#8230; puis on fait un coup de </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">chroot</span> <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed</div>
</li>
</ol>
</div>
<p>Pour changer les fichiers de config de notre &laquo;&nbsp;nouvelle machine&nbsp;&raquo; :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mount</span> -t proc none <span class="sy0">/</span>proc <span class="sy0">&amp;&amp;</span> <span class="kw2">mkdir</span> <span class="sy0">/</span>config <span class="sy0">&amp;&amp;</span> <span class="kw2">mount</span> -t configfs none <span class="sy0">/</span>config <span class="sy0">&amp;&amp;</span> apt-get update <span class="sy0">&amp;&amp;</span> <span class="kw3">export</span> <span class="re2">LC_ALL=</span>C <span class="sy0">&amp;&amp;</span> apt-get <span class="kw2">install</span> dhcp3-common nfs-common nfsbooted openssh-server <span class="sy0">&amp;&amp;</span> <span class="kw2">ln</span> -sf <span class="sy0">/</span>etc<span class="sy0">/</span>network<span class="sy0">/</span>if-up.d<span class="sy0">/</span>mountnfs <span class="sy0">/</span>etc<span class="sy0">/</span>rcS.d<span class="sy0">/</span>S34mountnfs <span class="sy0">&amp;&amp;</span> &nbsp;apt-get <span class="kw2">install</span> <span class="kw2">automake</span> <span class="kw2">autoconf</span> libtool pkg-config <span class="kw2">gawk</span> rsync <span class="kw2">bzip2</span> libncurses5 libncurses5-dev <span class="kw2">wget</span> lsb-release xmlto patchutils xutils-dev build-essential subversion <span class="sy0">&amp;&amp;</span> svn checkout svn:<span class="sy0">//</span>scm.gforge.inria.fr<span class="sy0">/</span>svn<span class="sy0">/</span>kerrighed<span class="sy0">/</span>trunk <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>kerrighed -r <span class="nu0">5426</span></div>
</li>
</ol>
</div>
<p>Puis modification du /etc/fstab</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">proc <span class="sy0">/</span>proc proc defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">/</span>dev<span class="sy0">/</span>nfs <span class="sy0">/</span> nfs defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">configfs <span class="sy0">/</span>config configfs defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
</ol>
</div>
<p>On passe par /etc/network/interfaces pour configurer notre réseau &#8230; pour moi :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">auto lo</div>
</li>
<li class="li1">
<div class="de1">iface lo inet loopback</div>
</li>
<li class="li1">
<div class="de1">iface eth0 inet dhcp</div>
</li>
</ol>
</div>
<p>Une fois que la plupart des configs sont faites, on peut passer par la compilation du kernel kerrighed.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> -O <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>linux<span class="nu0">-2.6</span><span class="nu0">.20</span>.<span class="kw2">tar</span>.bz2 http:<span class="sy0">//</span>www.kernel.org<span class="sy0">/</span>pub<span class="sy0">/</span>linux<span class="sy0">/</span>kernel<span class="sy0">/</span>v2<span class="nu0">.6</span><span class="sy0">/</span>linux<span class="nu0">-2.6</span><span class="nu0">.20</span>.<span class="kw2">tar</span>.bz2 <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>kerrighed <span class="sy0">&amp;&amp;</span> .<span class="sy0">/</span>autogen.<span class="kw2">sh</span> <span class="sy0">&amp;&amp;</span> .<span class="sy0">/</span>configure <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> kernel <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> defconfig <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> menuconfig</div>
</li>
</ol>
</div>
<p>Dans le menu &#8216;super ecran bleu&#8217; :<br />
Allez dans &laquo;&nbsp;Device Drivers&nbsp;&raquo; puis &laquo;&nbsp;Network device support&nbsp;&raquo; et choisir sa carte réseau (sinon vous n&#8217;arriverez pas à monter le root une fois le kernel booté).<br />
Revenir au premier menu et choisir &laquo;&nbsp;File systems&nbsp;&raquo; puis &laquo;&nbsp;Network File Systems&nbsp;&raquo; et permettre le nfsV3.<br />
On quitte et on sauvegarde la configuration (en cliquant sur &laquo;&nbsp;exit&nbsp;&raquo;).</p>
<p>On reprend nos commandes (on peut faire un match sur HoN là, y&#8217;en a pour une heure) : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> .. <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> kernel <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> kernel-<span class="kw2">install</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> <span class="kw2">install</span> <span class="sy0">&amp;&amp;</span> ldconfig</div>
</li>
</ol>
</div>
<p>On continue la configuration de notre systèmes en modifiant le fichier /etc/kerrighed_nodes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">session=</span><span class="nu0">1</span> <span class="co0">#entre 1 et 254</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">nbmin=</span><span class="nu0">1</span> <span class="co0">#nombre de node minimal pour kerrighed.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.10</span>;<span class="nu0">1</span>:eth0</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.11</span>:<span class="nu0">2</span>:eth0</div>
</li>
</ol>
</div>
<p>et on termine ici en modifiant /etc/default/kerrighed</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">ENABLE=</span>true</div>
</li>
</ol>
</div>
<p>on quitte notre chroot par un superbe :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">exit</span></div>
</li>
</ol>
</div>
<p>On copie notre &laquo;&nbsp;booter&nbsp;&raquo; dans le boot et on redémarre tout nos soft :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed<span class="sy0">/</span>boot<span class="sy0">/</span>vmlinuz<span class="nu0">-2.6</span><span class="nu0">.20</span>-krg <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot<span class="sy0">/</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>tftpd-hpa start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>dhcp3-server start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>portmap start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>nfs-kernel-server restart</div>
</li>
</ol>
</div>
<p>A partir de maintenant, toute machine bootant en réseau sera capable d&#8217;utiliser le kernel compilé. (assez sympa en cyber café, ou &#8230; <img src='http://cdn-blog-loupzeur.appspot.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Par contre une fois lancer, il ne faut pas oublier d&#8217;autoriser la migration des processus en se connectant sur l&#8217;une des nodes : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">krgadm nodes <span class="sy0">&amp;&amp;</span> krgadm cluster start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>bin<span class="sy0">/</span>krg_legacy_scheduler <span class="sy0">&amp;&amp;</span> krgcapset -d +CAN_MIGRATE <span class="sy0">&amp;&amp;</span> krgcapset -k <span class="re4">$$</span> -d +CAN_MIGRATE <span class="sy0">&amp;&amp;</span> krgcapset -d +USE_REMOTE_MEMORY <span class="sy0">&amp;&amp;</span> krgcapset -k <span class="re4">$$</span> –inheritable-effective +CAN_MIGRATE</div>
</li>
</ol>
</div>
<p>Et voilà &#8230; les geeks en puissance vont pouvoir faire revivre leurs premières machines ^^ (et les terminer dignement xD)</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=637">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/annuaire-ldap-et-authentification-unixlinux/" rel="bookmark" title="Permanent Link: Annuaire LDAP et authentification UNiX/Linux">Annuaire LDAP et authentification UNiX/Linux</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/primary-domain-controller-sous-linux/" rel="bookmark" title="Permanent Link: Primary Domain Controller sous Linux &#8230;">Primary Domain Controller sous Linux &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/wifi-ou-3g-tethering-sur-cyanogenmod-via-bluetooth-ou-usb/" rel="bookmark" title="Permanent Link: Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB">Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-chez-les-grandes-entreprises-grace-a-microsoft/" rel="bookmark" title="Permanent Link: PHP chez les grandes entreprises grâce à Microsoft ?">PHP chez les grandes entreprises grâce à Microsoft ?</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/se-monter-un-environnement-de-developpement-lamp-rapidement/" rel="bookmark" title="Permanent Link: Se monter un environnement de developpement LAMP rapidement">Se monter un environnement de developpement LAMP rapidement</a></li></ul><hr /><small>Copyright &copy; 2008-2010 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
