<?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>Emile "iMil" Heitor 's home &#187; FUSE</title>
	<atom:link href="http://imil.net/wp/tag/fuse/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Sun, 13 May 2012 10:43:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>puffs et FUSE sous NetBSD</title>
		<link>http://imil.net/wp/2008/11/02/puffs-et-fuse-sous-netbsd/</link>
		<comments>http://imil.net/wp/2008/11/02/puffs-et-fuse-sous-netbsd/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 11:19:49 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[FUSE]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[puffs]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=237</guid>
		<description><![CDATA[NetBSD 4.0 a vu apparaitre un nouveau filesystem, plus ou moins équivalent au FUSE de GNU/Linux. Il s&#8217;agit de proposer un framework qui permettra de manipuler sous forme de filesystem (via les opérations associées open, close, read, write&#8230;) des outils userland. Parmi les plus pratiques de ces utilisations, citons par exemple SSHfs ou CurlFtpFS. Et [...]]]></description>
			<content:encoded><![CDATA[<p>NetBSD 4.0 a vu apparaitre un nouveau filesystem, plus ou moins équivalent au <a href="http://fuse.sourceforge.net/">FUSE</a> de GNU/Linux. Il s&#8217;agit de proposer un framework qui permettra de manipuler sous forme de filesystem (via les opérations associées <i>open, close, read, write&#8230;</i>) des outils <i>userland</i>. Parmi les plus pratiques de ces utilisations, citons par exemple <a href="http://fuse.sourceforge.net/sshfs.html">SSHfs</a> ou <a href="http://curlftpfs.sourceforge.net/">CurlFtpFS</a>. Et c&#8217;est précisemment de cette dernière abstraction dont j&#8217;ai recemment eu besoin.</p>
<p>Un rapide tour dans <a href="http://www.netbsd.org/docs/software/packages.html">pkgsrc</a> nous montre l&#8217;existence du package <code>filesystems/fuse-curlftpfs</code>, ce qui signifie que ce que nous envisageons semble à portée. On note cependant dans le <code>Makefile</code> de ce package la dépendance suivante :</p>
<pre>
.include "../../mk/fuse.buildlink3.mk"
</pre>
<p>fichier dans lequel on peut lire :</p>
<pre>
.  elif ${OPSYS} == "NetBSD"
.     if !exists(/usr/include/fuse.h)
PKG_FAIL_REASON+=       "Couldn't find fuse headers, please install librefuse."
.     endif
</pre>
<p>Munis de ces quelques informations, une recherche bien placée nous dirige evidemment sur NetBSD.org, et en particulier <a href="http://www.netbsd.org/docs/puffs/">à la section dédiée à puffs</a>. Là, nous pouvons lire la chose suivante :<br />
<i><br />
Using FUSE file systems on NetBSD 4.0 is possible, but in addition to adding puffs support support to the kernel, it requires fetching and manually installing a backport of the ReFUSE library. The library is available here  and further instructions are available here.<br />
</i><br />
Bien. Résumons :</p>
<p>Pour utiliser FUSE et ses nombreux <i>backends</i>, nous avons besoin :</p>
<ul>
<li>Du support puffs dans le noyau</li>
<li>Du backport de la librairie ReFUSE</li>
</ul>
<p>Execution.</p>
<p>Le support puffs s&#8217;active de deux façons differentes, directement dans la configuration du noyau via la directive</p>
<pre>
file-system PUFFS
</pre>
<p>ou plus simplement en chargeant un module noyau. C&#8217;est cette derniere methode, bien moins contraignante, pour laquelle nous allons opter.</p>
<p>Pour mon plus grand malheur, dans une installation de base, pas trace d&#8217;un <code>/usr/lkm/puffs.o</code>, il est donc nécessaire de compiler ce dernier puis l&#8217;installer. D&#8217;abord, la documentation officielle explique qu&#8217;il fau placer la variable <code>MKPUFFS=yes</code> dans le fichier <code>/etc/mk.conf</code>. Ensuite, puisque cette machine comporte bien les sources du système mais n&#8217;a jamais reconstruit quoi que ce soit concernant la base, construisons les <i>tools</i> :</p>
<pre>
# mkdir /usr/obj
# cd /usr/src &#038;&#038; ./build.sh -m i386 tools
</pre>
<p>Operation à l&#8217;issue de laquelle un repertoire <code>/usr/src/tooldir.NetBSD-`uname -r`-i386</code> devrait avoir fait son apparition.<br />
Il est maintenant possible de construire notre module en se rendant dans son repertoire source :</p>
<pre>
# cd /usr/src/sys/fs/puffs
# make install
</pre>
<p>Un module noyau est maintenant disponible dans <code>/usr/lkm</code>, reste à le charger :</p>
<pre>
# modload /usr/lkm/puffs.o
</pre>
<p>Puis à créer son <i>device</i> dans <code>/dev</code> :</p>
<pre>
# cd /dev &#038;&#038; ./MAKEDEV puffs
</pre>
<p>Et afin d&#8217;automatiser cette opération à chaque reboot, de placer dans le fichier <code>/etc/lkm/conf</code> la ligne suivante :</p>
<pre>
puffs.o -s - - - BEFOREMOUNT
</pre>
<p>Maintenant que notre système est <i>puffs-ready</i>, il est temps d&#8217;installer la couche d&#8217;emulation FUSE pour puffs, ReFUSE.</p>
<p>On trouve le lien vers le backport NetBSD 4.0 de la libReFUSE dans la page de puffs chez NetBSD.org. À l&#8217;heure ou j&#8217;écris ces lignes, ce backport se trouve <a href="http://www.cs.hut.fi/~pooka/NetBSD/librefuse_nb4-20080115.tar.gz">ici</a> et la documentation associée, <a href="http://mail-index.netbsd.org/netbsd-users/2008/01/15/msg000075.html">ici</a>.</p>
<p>L&#8217;installation est &#8220;à peu près&#8221; complète :</p>
<pre>
# tar zxvf librefuse_nb4-20080115.tar.gz
# cd librefuse
# make install
</pre>
<p>Mais l&#8217;auteur a oublié de mentionner qu&#8217;il fallait copier les fichiers <code>fuse.h</code> et <code>fuse_opt.h</code> dans <code>/usr/include</code> pour satisfaire <code>buildlink</code>. Donc :</p>
<pre>
# cp fuse.h /usr/include
# cp fuse_opt.h /usr/include
</pre>
<p>Voila ! il est maintenant possible d&#8217;installer un <i>backend</i> FUSE issu de <code>pkgsrc</code> :</p>
<pre>
# cd /usr/pkgsrc/filesystems/fuse-curlftpfs/ &#038;&#038; make install clean
</pre>
<p>De le démarrer (attention cette commande ne rend pas la main):</p>
<pre>
# curlftpfs -v -o disable_epsv ftp.lip6.fr /mnt
</pre>
<p>Et de tester</p>
<pre>
~/src/librefuse$ ls -l /mnt/
total 782080
dr-xr-xr-x   2 root  wheel       512 Sep  8  2006 etc
drwxr-xr-x   9 root  wheel       512 Feb 16  2001 ibp
drwxr-xr-x  10 root  wheel       512 Jun 22  2000 jussieu
drwxr-xr-x   2 root  wheel       512 Feb 16  2001 liafa
drwxr-xr-x   5 root  wheel       512 Jul 23  2003 lip6
-rw-r--r--   1 root  wheel  50020898 Nov  2 09:50 ls-lR.gz
drwx------   3 root  wheel       512 Feb 16  2001 private
drwxr-xr-x  43 root  wheel      1024 Jan 22  2008 pub
</pre>
<p>Magnifique.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2008/11/02/puffs-et-fuse-sous-netbsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-05-22 22:51:30 by W3 Total Cache -->
