<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
	
		<title>philpep&#39;s blog</title>
		<atom:link href="http://blog.philpep.org/feed/rss2" rel="self" type="application/rss+xml" />
		<description>philpep&#39;s blog rss</description>
	<link>http://blog.philpep.org</link>
	<language>fr</language>
		<lastBuildDate>Thu, 08 Dec 2011 22:20:44 GMT</lastBuildDate>
	<generator>Pblog</generator>
		<item>
			<title>arp proxy et dhcp relay</title>
			<link>http://blog.philpep.org/post/arp-proxy-et-dhcp-relay</link>
			<guid>http://blog.philpep.org/post/arp-proxy-et-dhcp-relay</guid>
			<pubDate>Thu, 08 Dec 2011 22:20:44 GMT</pubDate>
			<description>&lt;p&gt;Sous ce titre pompeux se cache en fait un problème tout simple qui vous
est certainement déjà arrivé: la *box est branchée sur la prise
téléphonique qui se trouve être loin de l&#39;endroit ou se concentrent les
machines à brancher sur le net. Pour régler ce problème il y a plusieurs
solutions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tirer un câble de 20m de la *box vers un switch où se branchent
      les autres machines, en espérant que le câble passe sous les
      portes. Pas top.&lt;/li&gt;
&lt;li&gt;Avoir du wifi sur toutes les machines, c&#39;est loin d&#39;être le cas
      chez moi.&lt;/li&gt;
&lt;li&gt;Avoir du CPL entre la box et le switch. Je n&#39;en ai pas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une autre solution c&#39;est d&#39;avoir une machine allumée 24h/24 avec wifi et
lien filaire vers le switch, c&#39;est la solution que j&#39;ai retenue. Sauf que
faire un bridge wlan0 &amp;lt;=&amp;gt; eth0 c&#39;est pas si simple que ça en a l&#39;air, il y a bien
&lt;a href=&#34;http://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC&#34;&gt;une solution&lt;/a&gt;
avec ebtables, mais avec ma carte wifi et son driver proprio ça ne fonctionne pas,
le lien wifi boucle entre connexion et déconnexion.&lt;/p&gt;
&lt;p&gt;J&#39;ai donc cherché à faire autrement, le NAT j&#39;aime pas trop parce que ça m&#39;obligerais
à avoir deux réseau puis a pusher la nouvelle route sur tous mes réseaux (vpn etc).
J&#39;ai donc trouvé une solution &lt;a href=&#34;http://formation-debian.via.ecp.fr/proxy-arp.html&#34;&gt;avec un proxy arp&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;C&#39;est assez simple:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;iface&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;eth0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inet&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;static&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.253&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;broadcast&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.255&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;netmask&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;255.255.255.0&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# Empèche ifup d&amp;#39;ajouter la route 192.168.31.0/24 sur eth0&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;route&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;del&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;eth0&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# On doit avoir une route pour chaque machine derrière le switch&lt;/span&gt;
&lt;span class=&#34;c1&#34;&gt;# Ici 192.168.31.3&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;up&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ip&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;route&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;add&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;32&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;dev&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;eth0&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;iface&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;wlan0&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;inet&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;static&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;wpa&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ssid&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;rhizome&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# J&amp;#39;aime mon ssid :)&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;wpa&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;psk&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SECRET&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.253&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;broadcast&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.255&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;netmask&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;255.255.255.0&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;gateway&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et activer le proxy arp dans &lt;code&gt;/etc/sysctl.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ipv4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conf&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;all&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy_arp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ensuite, comme je suis feignant, j&#39;aimerais bien que ma machine 192.168.31.3 obtienne son IP par dhcp,
il suffit d&#39;utiliser dhcprelay:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;isc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dhcp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;relay&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Le script post-inst nous demande l&#39;IP du serveur dhcp et voilà.&lt;/p&gt;
&lt;p&gt;Pour aller encore plus loin dans l&#39;automatisation, j&#39;aurais aimé rajouter les routes sur eth0 automatiquement,
j&#39;ai trouvé une solution très moche en coupant mon /24 en deux /25 et d&#39;utiliser l&#39;option dhcp &lt;code&gt;agent.circuit-id&lt;/code&gt;
pour allouer l&#39;adresse IP dans un des deux blocs suivant si le dhcp-relay a été utilisé, au final c&#39;était vraiment
trop moche alors je l&#39;ai pas fait.&lt;/p&gt;
&lt;p&gt;Pour expérimenter différents setup, j&#39;ai utilisé &lt;a href=&#34;http://vincent.bernat.im/en/blog/2011-uml-network-lab.html&#34;&gt;un script&lt;/a&gt;
permettant de simuler un environnement réseau avec &lt;a href=&#34;http://user-mode-linux.sourceforge.net/&#34;&gt;User Mode Linux&lt;/a&gt; et des switchs
virtuels avec &lt;a href=&#34;http://vde.sourceforge.net/&#34;&gt;vde&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J&#39;ai commité &lt;a href=&#34;https://github.com/philpep/network-lab/commit/65fa8358f895e74ea638e421be706446bccd38de&#34;&gt;mes tests&lt;/a&gt; sur github.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;git&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;clone&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;git:&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;//gi&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;thub&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/philpep/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;network&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lab&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;git&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;network&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lab&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;git&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;checkout&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;b&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lab&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dhcp&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;origin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;lab&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dhcp&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;lab&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;arp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;proxy&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dhcp&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;./&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;setup&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description>
		</item>
		<item>
			<title>Install NetBSD 5.1 sgimips sur Indy R4000</title>
			<link>http://blog.philpep.org/post/install-netbsd-51-sgimips-sur-indy-r4000</link>
			<guid>http://blog.philpep.org/post/install-netbsd-51-sgimips-sur-indy-r4000</guid>
			<pubDate>Tue, 11 Oct 2011 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;Il y a quelques mois déjà, &lt;a href=&#34;http://ed.zehome.com&#34;&gt;un généreux collègue&lt;/a&gt; m&#39;a refilé un tas de machines bizarres à des fins ludiques comme celle de réussir à installer un OS récent dessus. Dans mon inventaire des machines exotiques j&#39;ai donc:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2x &lt;a href=&#34;http://en.wikipedia.org/wiki/SGI_Indy&#34;&gt;SGI Indy&lt;/a&gt; R4000&lt;/li&gt;
&lt;li&gt;2x &lt;a href=&#34;http://en.wikipedia.org/wiki/PA-RISC&#34;&gt;hppa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;2x &lt;a href=&#34;http://en.wikipedia.org/wiki/SPARCstation_20&#34;&gt;Sparc Station 20&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;1x &lt;a href=&#34;http://en.wikipedia.org/wiki/SPARCstation_5&#34;&gt;Sparc Station 5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce billet concerne l&#39;installation de NetBSD 5.1 (la dernière), sur une SGI Indy. Coté exotisme on est comblé :)&lt;/p&gt;
&lt;p class=&#34;align-center&#34;&gt;&lt;img alt=&#34;Indy&#34; src=&#34;http://blog.philpep.org/static/media/public/indy.jpg&#34; /&gt;&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;hinv&lt;/span&gt;
                   &lt;span class=&#34;n&#34;&gt;System:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IP22&lt;/span&gt;
                &lt;span class=&#34;n&#34;&gt;Processor:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Mhz&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;R4000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;with&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;FPU&lt;/span&gt;
     &lt;span class=&#34;n&#34;&gt;Primary&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;I&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Kbytes&lt;/span&gt;
     &lt;span class=&#34;n&#34;&gt;Primary&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;D&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Kbytes&lt;/span&gt;
     &lt;span class=&#34;n&#34;&gt;Secondary&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cache&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1024&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Kbytes&lt;/span&gt;
              &lt;span class=&#34;n&#34;&gt;Memory&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;size:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;64&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Mbytes&lt;/span&gt;
                 &lt;span class=&#34;n&#34;&gt;Graphics:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Indy&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;bit&lt;/span&gt;
                &lt;span class=&#34;n&#34;&gt;SCSI&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Disk:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scsi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                &lt;span class=&#34;n&#34;&gt;SCSI&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Disk:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scsi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
                    &lt;span class=&#34;n&#34;&gt;Audio:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Iris&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Audio&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Processor:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A2&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;revision&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;4.1.0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2&gt;Préparation&lt;/h2&gt;
&lt;p&gt;Pour commencer, impossible d&#39;y brancher un écran à moins d&#39;avoir un connecteur vidéo &lt;a href=&#34;http://en.wikipedia.org/wiki/13W3&#34;&gt;DB13W3&lt;/a&gt;, la machine est pourvue de deux ports série &lt;a href=&#34;http://en.wikipedia.org/wiki/Mini-DIN_connector#8-pin&#34;&gt;mini din 8&lt;/a&gt; et elle démarre dessus quand il n&#39;y a pas de clavier branché. Très bien, mais si comme moi on a pas de cable Mini DIN 8 vers série (9 ou 25 broches) alors il faut sortir les bobines de fil et s&#39;en faire un, le grand Internet fourmille de doc à ce sujet, moi j&#39;ai &lt;a href=&#34;http://www.palmbox.com/Pilot8.htm&#34;&gt;trouvé&lt;/a&gt; ce schéma très parlant (s/mac/indy):&lt;/p&gt;
&lt;p class=&#34;align-center&#34;&gt;&lt;img alt=&#34;Mini din 8 - DB9&#34; src=&#34;http://blog.philpep.org/static/media/public/indy_cable.gif&#34; /&gt;&lt;/p&gt;
&lt;p&gt;On se connecte donc et on tombe sur le bios (qui n&#39;a rien à envier à nos bios x86 de 2011), on en profite pour récupérer l&#39;adresse ethernet de la machine:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Maintenance&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Menu&lt;/span&gt;

&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Start&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;
&lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Software&lt;/span&gt;
&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Run&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Diagnostics&lt;/span&gt;
&lt;span class=&#34;mi&#34;&gt;4&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Recover&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;
&lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Enter&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Command&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Monitor&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;Option&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;5&lt;/span&gt;

&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;printenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;eaddr&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;eaddr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;08&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mo&#34;&gt;00&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;69&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mo&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f4:9b&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2&gt;Let&#39;s go&lt;/h2&gt;
&lt;p&gt;Je suppose que vous savez configurer un serveur tftp/dhcp/nfs. Moi j&#39;ai fait ça sur une machine Debian sauf le serveur dhcp qui est mon routeur FreeBSD:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;apt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;get&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;install&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tftpd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;hpa&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bsdtar&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;nfs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;kernel&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;
&lt;span class=&#34;nb&#34;&gt;mkdir&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;~/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;indy&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ftp:&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ftp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;netbsd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/pub/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NetBSD&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/NetBSD-5.1/sgimi&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/installation/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;netboot&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;diskimage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tgz&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;wget&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ftp:&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ftp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;fr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;netbsd&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;org&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/pub/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NetBSD&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/NetBSD-5.1/sgimi&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ps&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/binary/s&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ets&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;kern&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GENERIC32_IP2x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tgz&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;bsdtar&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xvzf&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;kern&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GENERIC32_IP2x&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tgz&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;mkdir&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bsdtar&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;xvzpf&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;../&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;diskimage&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tgz&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;#/etc/default/tftpd-hpa&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;TFTP_DIRECTORY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;/home/phil/indy&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;#/etc/exports (gruiiik gruiiik)&lt;/span&gt;
&lt;span class=&#34;sr&#34;&gt;/home/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;phil&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/indy/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/ 192.168.31.0/&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;24&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;no_subtree_check&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;all_squash&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;anonuid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;anongid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;exportfs&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;r&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;#dhcpd.conf&lt;/span&gt;
&lt;span class=&#34;n&#34;&gt;host&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;indy&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;hardware&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ethernet&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;08&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mo&#34;&gt;00&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;69&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mo&#34;&gt;06&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;f4:9b&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;fixed&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;address&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tftp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;192.168.31.3&amp;quot;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# le serveur tftp (debian)&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;next&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;# le serveur nfs (debian)&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;filename&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;netbsd&amp;quot;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;                      &lt;span class=&#34;c1&#34;&gt;# le nom du kernel à loader en tftp&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;option&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;root&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;/home/phil/indy/root&amp;quot;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# path racine nfs&lt;/span&gt;
&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;On retourne configurer notre bios de l&#39;indy:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;SystemPartition&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bootp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;():&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;netaddr&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;192.168.31.8&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;boot&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Mince ça ne marche pas, on fouille partout sur internet pour trouver des infos, puis on finit par lancer un tcpdump pour voir que c&#39;est au niveau tftp que ça coince. Ensuite on lit la &lt;a href=&#34;ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/sgimips/INSTALL.txt&#34;&gt;doc d&#39;install NetBSD&lt;/a&gt; et on y trouve ceci:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt; &lt;span class=&#34;n&#34;&gt;Note&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;some&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;older&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bootproms&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;have&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;an&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;interesting&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;bug&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;in&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;reading&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt;
 &lt;span class=&#34;n&#34;&gt;kernel&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;via&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TFTP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;They&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;handle&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;port&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;number&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;as&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;signed&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;entity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt;
 &lt;span class=&#34;n&#34;&gt;thus&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;connect&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ports&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;32767&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;You&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;can&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;work&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;around&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;this&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;problem&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;on&lt;/span&gt;
 &lt;span class=&#34;n&#34;&gt;the&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TFTP&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;given&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;that&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;it&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;a&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;NetBSD&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;host&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;by&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;using&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;``&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sysctl&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt;
 &lt;span class=&#34;n&#34;&gt;set&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;``&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inet&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;anonportmin&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;and&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;``&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;net&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;inet&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ip&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;anonportmax&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;to&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;more&lt;/span&gt;
 &lt;span class=&#34;n&#34;&gt;suitable&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;values&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;  &lt;span class=&#34;n&#34;&gt;For&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;example:&lt;/span&gt;

       &lt;span class=&#34;c1&#34;&gt;# sysctl -w net.inet.ip.anonportmin=16384&lt;/span&gt;
       &lt;span class=&#34;c1&#34;&gt;# sysctl -w net.inet.ip.anonportmax=32767&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Pour faire la même chose avec linux:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;quot;16384 32767&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sudo&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;tee&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;/proc/s&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ys&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/net/i&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;pv4&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ip_local_port_range&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;L&#39;installation de NetBSD se passe sans problème. Sauf à la fin où il faut se mettre dans un shell pour taper &lt;a href=&#34;http://www.netbsd.org/ports/sgimips/faq.html#sgivol&#34;&gt;ces quelques commandes&lt;/a&gt;, sans quoi on ne pourra pas démarrer sur le disque&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;n&#34;&gt;cd&lt;/span&gt; &lt;span class=&#34;sr&#34;&gt;/usr/m&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dec&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/sgivol -w boot /&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;usr&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/mdec/i&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;p2xboot&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;sd0&lt;/span&gt;

&lt;span class=&#34;c1&#34;&gt;# =&amp;gt; yes&lt;/span&gt;

&lt;span class=&#34;n&#34;&gt;reboot&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h2&gt;On reboot sur le disque&lt;/h2&gt;
&lt;p&gt;Tout est dans la doc d&#39;install, et ça marche(tm). Moi par exemple j&#39;ai installé NetBSD sur le premier disque (sd0):&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;systempartition&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scsi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rdisk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;partition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;osloadpartition&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;scsi&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rdisk&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;partition&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;osloadfilename&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;netbsd&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;osloadoptions&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;auto&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setenv&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;osloader&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;boot&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Pour les curieux, voyez &lt;a href=&#34;http://blog.philpep.org/static/media/public/dmesg_indy.txt&#34;&gt;le dmesg&lt;/a&gt; de la machine.&lt;/p&gt;
&lt;p&gt;À vous de compiler tout et n&#39;importe quoi, juste pour le plaisir de dire &#34;Hey mec, c&#39;est pas portable ton code là !&#34; :-)&lt;/p&gt;</description>
		</item>
		<item>
			<title>Arduino cli</title>
			<link>http://blog.philpep.org/post/arduino-cli</link>
			<guid>http://blog.philpep.org/post/arduino-cli</guid>
			<pubDate>Thu, 29 Sep 2011 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;Je me suis offert une petite carte &lt;a href=&#34;http://www.arduino.cc&#34;&gt;Arduino&lt;/a&gt; avec un &lt;a href=&#34;http://shop.snootlab.com/lang-en/powerduino/90-snootlab-starter-kit.html&#34;&gt;Starter Kit&lt;/a&gt; de chez &lt;em&gt;SnootLab&lt;/em&gt;. J&#39;en suis très content, je suis une bille complète en éléctronique et en seulement 3 jours de documentations et autres tutoriels j&#39;ai déjà quelques bases et j&#39;entrevoie des possibilités infinies liant harware et software.&lt;/p&gt;
&lt;p&gt;Seulement, l&#39;IDE officiel d&#39;arduino m&#39;a vite gonflé, je suis très réticent à prendre en main de nouveaux logiciels, surtout quand ils sont graphiques, c&#39;est plus fort que moi, trop de boutons et autres ClickClickClick ça me file des ... boutons. J&#39;ai donc essayé de coder pour arduino en utilisant mon IDE habituel, c&#39;est à dire vim et make, voilà la manip (pour une machine debian)&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;# La lib arduino http://arduino.cc/en/Main/Software (ici linux x86_64)&lt;/span&gt;
wget http://arduino.googlecode.com/files/arduino-0022-64-2.tgz -O - | tar xvzf -
&lt;span class=&#34;c&#34;&gt;# Le travail est déjà tout fait ici: http://mjo.tc/atelier/2009/02/arduino-cli.html&lt;/span&gt;
wget http://mjo.tc/atelier/2009/02/acli/arduino-mk_0.6.tar.gz -O - | tar xvzf -
sudo mkdir -p /usr/local/bin
sudo install -m 755 -o root -g root arduino-mk-0.6/ard-parse-boards /usr/local/bin/
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ensuite copiez le fichier arduino-mk-0.6/Arduino.mk dans votre projet et incluez le dans un Makefile:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;nv&#34;&gt;TARGET&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; hello &lt;span class=&#34;c&#34;&gt;# Le nom du programme final (doit correspondre à un fichier hello.pde)&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;ARDUINO_DIR&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /path/to/arduino-0022
&lt;span class=&#34;nv&#34;&gt;BOARD_TAG&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; uno &lt;span class=&#34;c&#34;&gt;# Voir Arduino.mk pour toutes les cartes supportées&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;ARDUINO_PORT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /dev/ttyACM0          
&lt;span class=&#34;nv&#34;&gt;AVR_TOOLS_PATH&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /usr/bin
&lt;span class=&#34;nv&#34;&gt;AVRDUDE_CONF&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ARDUINO_DIR&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;/hardware/tools/avrdude.conf
&lt;span class=&#34;nv&#34;&gt;AVRDUDE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ARDUINO_DIR&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;/hardware/tools/avrdude

&lt;span class=&#34;cp&#34;&gt;include Arduino.mk&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Petit alias perso, make com lance cu sur le bon port avec un baud de 9600&lt;/span&gt;
com:
    cu -l &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;ARDUINO_PORT&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; -s 9600
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ne pas oublier les outils indispensables:&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;sudo apt-get install gcc-avr binutils-avr avr-libc libyaml-perl cu
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Pour compiler c&#39;est &lt;code&gt;make&lt;/code&gt; et pour envoyer le code sur la carte &lt;code&gt;make upload&lt;/code&gt;.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Minuit est faux</title>
			<link>http://blog.philpep.org/post/minuit-est-faux</link>
			<guid>http://blog.philpep.org/post/minuit-est-faux</guid>
			<pubDate>Sun, 10 Jul 2011 18:48:19 GMT</pubDate>
			<description>&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;datetime&lt;/span&gt;
&lt;span class=&#34;o&#34;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;bool&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;datetime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;))&lt;/span&gt;
&lt;span class=&#34;bp&#34;&gt;False&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Pour lever toute ambigüité quand on veut tester si&lt;/span&gt;
&lt;span class=&#34;c&#34;&gt;# une variable est à None:&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;machin&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;is&lt;/span&gt; &lt;span class=&#34;ow&#34;&gt;not&lt;/span&gt; &lt;span class=&#34;bp&#34;&gt;None&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;blah&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# au lieu de&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;machin&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;
    &lt;span class=&#34;n&#34;&gt;blah&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Le coup de minuit n&#39;est qu&#39;un exemple parmis d&#39;autres, c&#39;est la classe qui décide de ce qui est vrai et de ce qui est faux en implémentant &lt;a href=&#34;http://docs.python.org/reference/datamodel.html#object.__nonzero__&#34;&gt;__nonzero__()&lt;/a&gt;.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Backup zfs</title>
			<link>http://blog.philpep.org/post/backup-zfs</link>
			<guid>http://blog.philpep.org/post/backup-zfs</guid>
			<pubDate>Thu, 23 Jun 2011 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;J&#39;ai mis en place un système de backup de mon serveur FreeBSD (dédié) vers un autre serveur FreeBSD (@home). Les deux machines sont en &lt;code&gt;zfs&lt;/code&gt;, c&#39;était pour moi l&#39;occasion de tester &lt;code&gt;zfs (send|recv)&lt;/code&gt; over &lt;code&gt;ssh&lt;/code&gt;. L&#39;idée c&#39;est qu&#39;on envoie les donnés de manière incrémentale entre un snapshot du jour et un snapshot de la veille. Ce que l&#39;on gagne par rapport à des solutions comme &lt;code&gt;rsync&lt;/code&gt; c&#39;est de la rapidité et moins d&#39;accès disques (&lt;code&gt;zfs&lt;/code&gt; sait exactement ce qui a bougé entre deux snapshot), l&#39;autre avantage c&#39;est sur la machine de backup on a un snapshot par jour, on peut donc facilement retrouver des fichiers supprimés.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;&lt;span class=&#34;c&#34;&gt;#!/bin/sh&lt;/span&gt;

&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -e

&lt;span class=&#34;c&#34;&gt;# Used in ssh command, example user@host -p 2222&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;REMOTE_HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;diophante&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Source zfs pool&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;POOL_SRC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;tank&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# zfs sets to backup (relative to POOL_SRC)&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;SETS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;usr/local/vmail usr/local/data usr/local/pgsql/backups usr/home usr/local/git var/backups&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Destination pool&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;POOL_DST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;tank/backup/${REMOTE_HOST}&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# We use ssh connection sharing&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;SSH_ARGS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;-o ControlPath=~/.ssh/%r@%h:%p&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# zfs snapshot prefix =&amp;gt; tank/foo@bck-2011-05-25&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;PREFIX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;bck-&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Remote zfs command&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;ssh ${SSH_ARGS} ${REMOTE_HOST} sudo zfs&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Local zfs command&lt;/span&gt;
&lt;span class=&#34;nv&#34;&gt;LOCAL_ZFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;sudo zfs&amp;quot;&lt;/span&gt;

&lt;span class=&#34;c&#34;&gt;# Launch master ssh for sharing connections&lt;/span&gt;
ssh -MNn &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SSH_ARGS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_HOST&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; &amp;amp;
&lt;span class=&#34;nv&#34;&gt;ssh_master_pid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$!&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;for &lt;/span&gt;zfs_set in &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;SETS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
    &lt;span class=&#34;c&#34;&gt;# Test if destination exist&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOCAL_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; list -H &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;POOL_DST&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt;/&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;zfs_set&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; &amp;gt;/dev/null

    &lt;span class=&#34;nv&#34;&gt;date_suffix&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;${PREFIX}`date +%F`&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;nv&#34;&gt;snap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;${POOL_SRC}/${zfs_set}@${date_suffix}&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;nv&#34;&gt;old_snap&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; list -Ht snapshot 2&amp;gt;/dev/null | grep &lt;span class=&#34;s2&#34;&gt;&amp;quot;^${POOL_SRC}/${zfs_set}@${PREFIX}&amp;quot;&lt;/span&gt; 2&amp;gt;/dev/null| awk -F&lt;span class=&#34;s1&#34;&gt;&amp;#39; &amp;#39;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;{ print $1 }&amp;#39;&lt;/span&gt; 2&amp;gt;/dev/null&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;        if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;`echo ${old_snap} | head -n 1`&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
        &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;[!] Multiple zfs snapshot found: ${old_snap}&amp;quot;&lt;/span&gt;
            &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;[!] Consider changing PREFIX or fix the issue yourself&amp;quot;&lt;/span&gt;
            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;        fi&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;        if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
        &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;[!] ${snap} exists&amp;quot;&lt;/span&gt;
            &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;        fi&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;    fi&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; snapshot &lt;span class=&#34;s2&#34;&gt;&amp;quot;${snap}&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; snapshot &lt;span class=&#34;s2&#34;&gt;&amp;quot;${snap}&amp;quot;&lt;/span&gt;

    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;extra_args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;-i ${old_snap}&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;extra_args&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;

&lt;span class=&#34;k&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; send &lt;span class=&#34;nv&#34;&gt;$extra_args&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;|&amp;#39;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOCAL_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; recv -F &lt;span class=&#34;s2&#34;&gt;&amp;quot;${POOL_DST}/${zfs_set}&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; send &lt;span class=&#34;nv&#34;&gt;$extra_args&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${snap}&amp;quot;&lt;/span&gt; | &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;LOCAL_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; recv -F &lt;span class=&#34;s2&#34;&gt;&amp;quot;${POOL_DST}/${zfs_set}&amp;quot;&lt;/span&gt;

    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; destroy &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt;
        &lt;span class=&#34;k&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;REMOTE_ZFS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;}&lt;/span&gt; destroy &lt;span class=&#34;s2&#34;&gt;&amp;quot;${old_snap}&amp;quot;&lt;/span&gt;
    &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;

&lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$ssh_master_pid&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Le script est aussi disponible &lt;a href=&#34;https://gist.github.com/1043499&#34;&gt;sous forme de gist github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sur mes deux machines j&#39;ai un user &lt;code&gt;backup&lt;/code&gt; qui peut exécuter &lt;code&gt;zfs&lt;/code&gt; avec &lt;code&gt;sudo&lt;/code&gt;, l&#39;user &lt;code&gt;backup&lt;/code&gt; sur la machine de backup peut accéder en &lt;code&gt;ssh&lt;/code&gt; à l&#39;user &lt;code&gt;backup&lt;/code&gt; (vous suivez ?) sur la machine à sauvegarder au moyen d&#39;une clé ssh dédiée sans mot de passe.&lt;/p&gt;
&lt;p&gt;Le script se lance donc sur la machine de backup (en ayant pris soin de créer tous les sets zfs qu&#39;on va sauvegarder). La première fois il va transférer le set en entier, et les jours suivants il va envoyer de l&#39;incrémental, il faut au minimum un jour entre chaque backup mais rien ne vous empêche de mettre l&#39;heure dans le nom du snapshot.&lt;/p&gt;
&lt;p&gt;Commentaires, patchs bienvenus.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS&lt;/em&gt;: Ça fait 6 mois que j&#39;ai pas posté sur ce blog, c&#39;est parce que je travaille et même si je trouve encore un peu de temps pour faire mon propre code c&#39;est moins le cas quand il faut le décrire ici. Par contre je maintient une liste de posts à faire sur ce blog, je rattraperais mon retard bientôt.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Mon réseau</title>
			<link>http://blog.philpep.org/post/mon-reseau</link>
			<guid>http://blog.philpep.org/post/mon-reseau</guid>
			<pubDate>Sat, 18 Dec 2010 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;Ça faisait un petit moment que je devais refaire &lt;a href=&#34;http://philpep.org&#34;&gt;ma homepage&lt;/a&gt;. C&#39;est chose faite (rechargez la page si vous avez encore l&#39;ancienne en cache, c&#39;est full statique avec un trèèèès long ttl).&lt;/p&gt;
&lt;p&gt;J&#39;y décris un peu ce qui se passe dans les trois serveurs que j&#39;administre, pour moi, pour les amis, pour des logiciels libres comme &lt;a href=&#34;http://wmfs.info&#34;&gt;wmfs&lt;/a&gt; et pour les causes que je défends avec une association, &lt;a href=&#34;http://cerf-gresigne.org&#34;&gt;le cerf de grésigne&lt;/a&gt; et &lt;a href=&#34;http://wikileaks.philpep.org&#34;&gt;un miroir wikileaks&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En modifiant ma map nagios j&#39;ai réussi à faire quelque chose de pas mal pour mieux visualiser la chose :&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;network&#34; src=&#34;http://philpep.org/philpep.png&#34; /&gt;&lt;/p&gt;
&lt;p&gt;Ça fait maintenant deux ans que l&#39;aventure a commencée, objectif auto-hébergement et auto-formation à l&#39;administration systèmes. Je dois dire que ça a plutôt bien marché puisque l&#39;infrastructure et mes connaissances n&#39;ont cessés de progresser.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fin 2008 Pendant les 3 premiers mois philpep.org n&#39;existait que sur mon portable (sous gentoo, allumé 24h/24), c&#39;était un serveur git pour partager mon code.&lt;/li&gt;
&lt;li&gt;Début 2009 j&#39;ai récupéré un vieux pentium III gracieusement donné par une association Toulousaine sur lequel j&#39;ai installé FreeBSD (7.0 puis 7.1) qui a commencé à faire du mail.&lt;/li&gt;
&lt;li&gt;Mai 2009 je récupère un pentium 4 avec plus de RAM.&lt;/li&gt;
&lt;li&gt;Fin 2009 je m&#39;achète une &lt;a href=&#34;http://www.pcengines.ch/alix2d3.htm&#34;&gt;alix2d3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Début 2010 je prends une machine virtuelle chez lost-oasis (sous FreeBSD puis Debian) pour fournir un MX et DNS secondaire.&lt;/li&gt;
&lt;li&gt;Juillet 2010 je m&#39;achète une nouvelle machine avec plus de RAM et qui consomme moins&lt;/li&gt;
&lt;li&gt;Fin 2010, la machine virtuelle est maintenant chez Hetzner, et sous FreeBSD 8.1 avec un vpn entre mes deux locations.&lt;/li&gt;
&lt;/ul&gt;</description>
		</item>
		<item>
			<title>Installer UNE debian rapidement en pxe avec dnsmasq</title>
			<link>http://blog.philpep.org/post/installer-une-debian-rapidement-en-pxe-avec-dnsmasq</link>
			<guid>http://blog.philpep.org/post/installer-une-debian-rapidement-en-pxe-avec-dnsmasq</guid>
			<pubDate>Mon, 29 Nov 2010 02:26:43 GMT</pubDate>
			<description>&lt;p&gt;Sur le net on voit beaucoup de tutos pour installer Debian en pxe. Mais la plupart sont beaucoup plus compliqués que ça ne l&#39;est vraiment. Pour mon cas il me fallait installer Debian sur un laptop depuis un autre laptop.&lt;/p&gt;
&lt;p&gt;Il faut s&#39;arranger pour que la machine cible puisse être sur le même lan que le serveur pxe. Moi mon laptop est en wifi, donc j&#39;ai mis un cable entre les deux laptop un coup de forward iptables (mais c&#39;est pas le sujet).&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;# Install dnsmasq
sudo apt-get install dnsmasq

# Creation du repertoire servi par le builtin tftp de dnsmasq
mkdir -p ~/pxe/pxelinux.cfg
cd pxe

# On fetch le kernel, le bootloader pxe et le ramdisk
export SITEFTP=ftp.fr.debian.org:/debian/dists/stable/main/installer-i386/current/images/netboot/debian-installer/i386
wget $SITEFTP/pxelinux.0
wget $SITEFTP/linux
wget $SITEFTP/initrd.gz

# Config du bootloader
cat &amp;gt; pxelinux.cfg/default &amp;lt;&amp;lt; EOF
DEFAULT lenny
LABEL lenny
        kernel linux
        append vga=normal initrd=initrd.gz --
TIMEOUT 0
EOF

# Config dnsmasq
cat &amp;gt; /etc/dnsmasq.conf &amp;lt;&amp;lt; EOF
interface=eth0
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/home/phil/pxe/
EOF

# Reload dnsmasq
sudo /etc/init.d/dnsmasq restart
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Configurez iptables pour laisser passer bootpc, dns et tftp et hop install pxe en moins de 5 minutes et avec un seul soft.&lt;/p&gt;</description>
		</item>
		<item>
			<title>Installer et booter une FreeBSD zfs on root depuis Debian/Grub2</title>
			<link>http://blog.philpep.org/post/installer-et-booter-une-freebsd-zfs-on-root-depuis-debiangrub2</link>
			<guid>http://blog.philpep.org/post/installer-et-booter-une-freebsd-zfs-on-root-depuis-debiangrub2</guid>
			<pubDate>Mon, 29 Nov 2010 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;J&#39;ai une partition primaire de libre sur mon laptop sous Debian , je comptais y installer une FreeBSD full zfs. Le problème c&#39;est que mon laptop n&#39;a pas (plus) de lecteur cd, et que je me voyais mal faire une installation zfs un peu ardue en pxe et sans avoir la doc dans $BROWSER.&lt;/p&gt;
&lt;p&gt;Alors je me dis qu&#39;installer FreeBSD sur la partition libre depuis ma Debian testing avec zfs-fuse est possible. Évidement pas de chroot possible, mais y&#39;a même pas besoin. Le plus dur ça a été de démarrer la FreeBSD avec grub2, mais je suis tombé sur &lt;a href=&#34;http://grub.enbug.org/GRUB2FreeBSDZFS&#34;&gt;la bonne doc&lt;/a&gt;. Voilà la manip sans attendre que qemu se lance.&lt;/p&gt;
&lt;p&gt;On installe les petits (gros) tools qu&#39;il nous faut (zfs-fuse est dans testing ou sid) :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;sudo apt-get install bsdtar zfs-fuse lftp
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;On récupère une distribution binnaire de FreeBSD (ici 8.1-RELEASE i386)&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;mkdir ~/freebsd &amp;amp;&amp;amp; cd ~/freebsd
lftp -c &amp;quot;open ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/i386/8.1-RELEASE/; mirror base&amp;quot;
lftp -c &amp;quot;open ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/i386/8.1-RELEASE/; mirror kernels&amp;quot;
# Et si vous voulez les man
lftp -c &amp;quot;open ftp://ftp.fr.freebsd.org/pub/FreeBSD/releases/i386/8.1-RELEASE/; mirror manpages&amp;quot;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Ensuite on crée sa pool zfs sur la partition cible (en forçant la version en 14, version de zfs sur FreeBSD)&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;sudo zpool create -o version=14 tank /dev/sda3
sudo zfs create tank/root
# Ici on peut créer tous les datasets qu&amp;#39;il nous faut
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;On extract tout ça :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;cd ~/freebsd/base &amp;amp;&amp;amp; cat base.?? | sudo bsdtar --unlink -xpzf - -C /tank/root
cd ~/freebsd/kernels &amp;amp;&amp;amp; cat generic.?? | sudo bsdtar --unlink -xpzf - -C /tank/root/boot
cd ~/freebsd/manpages &amp;amp;&amp;amp; cat manpages.?? | sudo bsdtar --unlink -xpzf - -C /tank/root
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Les finitions :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;# On utilisera le kernel GENERIC
sudo rmdir /tank/root/boot/kernel &amp;amp;&amp;amp; sudo mv /tank/root/boot/GENERIC /tank/root/boot/kernel

# On copie le cache zpool pour que la freebsd retrouve &amp;quot;tank&amp;quot;
sudo cp /var/lib/zfs/zpool.cache /tank/root/boot/zfs/

# On évite un warning
sudo touch /tank/root/etc/fstab

# On se fait un rc.conf
cat &amp;lt;&amp;lt; EOF | sudo tee /tank/root/etc/rc.conf
hostname=&amp;quot;shen.philpep.org&amp;quot;
keymap=&amp;quot;fr.iso.acc&amp;quot;
zfs_enable=&amp;quot;YES&amp;quot;
EOF

# On met mountpoint / pour tank/root (comme ça tank/root/... se montera à partir de /)
sudo zpool export tank
sudo zpool import -R /mnt tank
sudo zpool set mountpoint=/ tank/root
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et maintenant le plus dur, grub2 :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;menuentry &amp;#39;FreeBSD&amp;#39; {
    insmod zfs
    search -s -l tank
    kfreebsd /root@/boot/kernel/kernel
    kfreebsd_module_elf /root@/boot/kernel/opensolaris.ko
    kfreebsd_module_elf /root@/boot/kernel/zfs.ko
    kfreebsd_module /root@/boot/zfs/zpool.cache type=/boot/zfs/zpool.cache
    set kFreeBSD.vfs.root.mountfrom=zfs:tank/root
}
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Donc avec cette syntaxe on peut charger des modules au boot et écrire dans des variables sysctl (chose qu&#39;on fait dans /boot/loader.conf avec le bootloader de FreeBSD).&lt;/p&gt;
&lt;p&gt;Ça juste marche, et je trouve ça bien pratique, surtout qu&#39;on peut se servir du pool zfs depuis Debian, et on peut aussi monter l&#39;ext3 depuis FreeBSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EDIT: Je ne peut pas garantir que ce soit très fiable tout ça. Prudence donc. Si vous avez des problèmes au boot de FreeBSD (truc du style &#34;alloc magic is broken&#34;) vous pouvez essayer de remplacer &lt;code&gt;search -s -l tank&lt;/code&gt; par &lt;code&gt;set root=(hd0,3)&lt;/code&gt; (avec la pool en /dev/sda3 chez moi).&lt;/strong&gt;&lt;/p&gt;</description>
		</item>
		<item>
			<title>NSD pour remplacer BIND</title>
			<link>http://blog.philpep.org/post/nsd-pour-remplacer-bind</link>
			<guid>http://blog.philpep.org/post/nsd-pour-remplacer-bind</guid>
			<pubDate>Wed, 17 Nov 2010 18:31:30 GMT</pubDate>
			<description>&lt;p&gt;Je loue une machine virtuelle chez lost-oasis à (12€ par mois, 256Mo de RAM) pour faire du monitoring nagios, du mx/dns secondaire et du mirror http pour mes autres machines dans mon appart. Elle tourne sur Debian (en paravirtualisation kvm, virtio etc), avec de l&#39;openvz par dessus. 256Mo ça fait pas beaucoup, et en browsant sur mon &lt;code&gt;top&lt;/code&gt;, j&#39;ai remarqué que c&#39;était &lt;code&gt;bind&lt;/code&gt; qui prenait le plus de mémoire (loin devant postgresql et php-cgi).&lt;/p&gt;
&lt;p&gt;Je me met donc à la recherche d&#39;un serveur dns qui serait plus léger que bind et qui fasse aussi bien dns primaire et secondaire pour mes 5 petites zones et je me souviens avoir vu passer &lt;a href=&#34;http://www.gcu-squad.org/2010/10/je-voudrais-le-22-a-asnieres/&#34;&gt;une news&lt;/a&gt; à propos de l&#39;intégration récente de &lt;a href=&#34;http://www.nlnetlabs.nl/projects/nsd/&#34;&gt;nsd&lt;/a&gt; dans OpenBSD-Current. Ni une ni deux je dégaine mon &lt;code&gt;apt-get install nsd3&lt;/code&gt; et après quelques jours d&#39;utilisation j&#39;en suis très content.&lt;/p&gt;
&lt;p&gt;Ce qu&#39;il faut savoir à propos de &lt;code&gt;nsd&lt;/code&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;C&#39;est un serveur authoritative only (contrairement à bind qui fait aussi cache et récursion)&lt;/li&gt;
&lt;li&gt;Il est utilisé par quelques uns des root dns servers (on peut donc lui louer une certaine robustesse)&lt;/li&gt;
&lt;li&gt;Il sait lire les même fichiers de zones que bind&lt;/li&gt;
&lt;li&gt;La configuration est extrêmement simple&lt;/li&gt;
&lt;li&gt;Il est bien plus léger en RAM que bind même configuré pour faire la même chose.&lt;/li&gt;
&lt;li&gt;Il fonctionne très bien avec bind en master (j&#39;ai pas testé dans l&#39;autre sens)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Que du bon donc, laisser moi vous montrer un bout de config comme c&#39;est simple :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;server:
    hide-version: yes

# Une config master avec deux slaves 
zone:
    name: &amp;quot;philpep.org&amp;quot;
    zonefile: &amp;quot;master/philpep.org&amp;quot;

    notify: 217.70.177.40 NOKEY
    provide-xfr: 217.70.177.40 NOKEY

    notify: 212.85.155.53 NOKEY
    provide-xfr: 212.85.155.53 NOKEY

# Une config slave avec un master
zone:
    name: &amp;quot;philpep.org&amp;quot;
    zonefile: &amp;quot;slave/philpep.org&amp;quot;

    allow-notify: 82.229.137.130 NOKEY
    request-xfr: AXFR 82.229.137.130 NOKEY

# Apparemment nsd master ne gère que les transferts de zone AXFR (et pas IXFR)
# Ça n&amp;#39;a pas d&amp;#39;incidence l&amp;#39;un est testé puis l&amp;#39;autre si ça marche pas. Mais vous pouvez éviter
# un message de log en mettant AXFR dans request-xfr dans le cas d&amp;#39;un nsd master et slave.
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Les zones sont strictement les mêmes que celles de bind.&lt;/p&gt;
&lt;p&gt;Bien sûr il est possible de faire des config bien plus velues avec des clés pour faire des zones dynamiques, du chroot etc, voyez  &lt;a href=&#34;http://linux.die.net/man/5/nsd.conf&#34;&gt;nsd.conf(5)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il y a aussi un utilitaire bien convi pour controler le serveur : &lt;a href=&#34;http://linux.die.net/man/8/nsdc&#34;&gt;nsdc(8)&lt;/a&gt;. Avant de démarrer le serveur pour la première fois, il faut compiler les zones avec &lt;code&gt;nsdc rebuild&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;J&#39;ai trouvé nsd tellement pratique que je l&#39;ai aussi installé en master sur mon serveur FreeBSD  (&lt;code&gt;dns/nsd&lt;/code&gt;), bind sert toujours pour le cache,récursion et mes zones en local, mais je vais certainement le remplacer par un &lt;a href=&#34;http://cr.yp.to/djbdns.html&#34;&gt;djbdns&lt;/a&gt; ou un &lt;a href=&#34;http://www.thekelleys.org.uk/dnsmasq/doc.html&#34;&gt;dnsmasq&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le script rc de nsd sur FreeBSD &lt;code&gt;/usr/local/etc/rc.d/nsd&lt;/code&gt; est pas terrible, utilisez plutôt &lt;code&gt;nsdc&lt;/code&gt; ou attendez que &lt;a href=&#34;http://www.freebsd.org/cgi/query-pr.cgi?pr=152331&#34;&gt;mon patch&lt;/a&gt; soit accepté :-)&lt;/p&gt;</description>
		</item>
		<item>
			<title>NanoBSD avec / en nfs</title>
			<link>http://blog.philpep.org/post/nanobsd-avec-en-nfs</link>
			<guid>http://blog.philpep.org/post/nanobsd-avec-en-nfs</guid>
			<pubDate>Wed, 03 Nov 2010 00:00:00 GMT</pubDate>
			<description>&lt;p&gt;Dans &lt;a href=&#34;http://blog.philpep.org/post/ma-conf-nanobsd&#34;&gt;un précédent post&lt;/a&gt; j&#39;expliquais comment utiliser le script &lt;code&gt;/usr/src/tools/tools/nanobsd.sh&lt;/code&gt; des sources FreeBSD pour construire un système FreeBSD pour l&#39;embarqué.&lt;/p&gt;
&lt;p&gt;Dans le processus de création d&#39;un tel système, il peut être utile de tester son système sans utiliser la carte flash. On peut adapter le système en le testant sur NFS et n&#39;écrire l&#39;image finale sur la carte flash que quand on a fini.&lt;/p&gt;
&lt;h1&gt;kernel&lt;/h1&gt;
&lt;p&gt;Il faut compiler le kernel avec support NFS et NFS comme système de fichier racine&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;options NFSCLIENT
options NFS_ROOT
&lt;/pre&gt;&lt;/div&gt;


&lt;h1&gt;dhcpd.conf&lt;/h1&gt;
&lt;p&gt;Avec l&#39;option root-path on spécifie le path du montage nfs au client dhcp.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;filename &amp;quot;pxeboot&amp;quot;;
next-server 192.168.0.20; # le serveur tftpd
option root-path &amp;quot;192.168.0.20:/usr/obj/nanobsd.solo/_.w; # le montage NFS
&lt;/pre&gt;&lt;/div&gt;


&lt;h1&gt;inetd.conf&lt;/h1&gt;
&lt;p&gt;Le bootloader pxeboot est récuperé via tftp, lui même activé par inetd&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot
&lt;/pre&gt;&lt;/div&gt;


&lt;h1&gt;pxeboot&lt;/h1&gt;
&lt;p&gt;On compile pxeboot avec un baud de 115200 sur la sortie série.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;cd /usr/src/sys/boot
make BOOT_PXELDR_ALWAYS_SERIAL=1 BOOT_COMCONSOLE_SPEED=115200
mkdir /tftpboot
cp i386/pxeldr/pxeboot /tftpboot
&lt;/pre&gt;&lt;/div&gt;


&lt;h1&gt;nfs&lt;/h1&gt;
&lt;p&gt;Juste une ligne dans &lt;code&gt;/etc/exports&lt;/code&gt;, 192.168.0.1 étant l&#39;IP donnée par mon serveur dhcp à la machine cible.&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;/usr/obj/nanobsd.solo/_.w -alldirs -maproot=root 192.168.0.1
&lt;/pre&gt;&lt;/div&gt;


&lt;h1&gt;rc.conf&lt;/h1&gt;
&lt;p&gt;On active tout ça dans &lt;code&gt;/etc/rc.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt; inetd_enable=&amp;quot;YES&amp;quot;
 nfs_server_enable=&amp;quot;YES&amp;quot;
 rpcbind_enable=&amp;quot;YES&amp;quot;
 mountd_flags=&amp;quot;-r&amp;quot;
 dhcpd_enable=&amp;quot;YES&amp;quot;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Et on démarre les services :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt; /usr/local/etc/rc.d/isc-dhcpd start
 /etc/rc.d/inetd start
 /etc/rc.d/rpcbind start
 /etc/rc.d/nfsd start
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Maintenant il faut modifier le système généré par NanoBSD car il s&#39;attend à avoir la carte flash comme système de fichier.&lt;/p&gt;
&lt;p&gt;J&#39;ai juste crée une fonction dans ma config nanobsd (fonction à enlever quand on crée les images disques bien entendu) :&lt;/p&gt;
&lt;div class=&#34;codehilite&#34;&gt;&lt;pre&gt;post_nfsroot {
    rm ${NANO_WORLDDIR}/etc/fstab
    rm ${NANO_WORLDDIR}/conf/default/etc/remount
    echo &amp;quot;&amp;quot; &amp;gt; ${NANO_WORLDDIR}/conf/base/etc/fstab
}

late_customize_cmd post_nfsroot
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;Voilà, n&#39;oubliez pas l&#39;option &lt;code&gt;-i&lt;/code&gt; pour gagner le temps de construction des images disques et bon debug :)&lt;/p&gt;</description>
		</item>
	</channel>
</rss>

