From owner-p4-projects@FreeBSD.ORG Thu Oct 6 01:12:30 2005
Return-Path:
-The module was written for and tested with CURRENT, aka FreeBSD-7.0. I'd guess it will work fine with RELENG 6 too, but currently it's not usable with 5.x (or lower) versions. The module will work with 7.0-CURRENT snapshots from not earlier than 8th of August and RELENG_6 snapshots from not earlier than 13th of August (desperate types can try with older CURRENT/RELENG_6 snapshots if they set the -DUSE_OLD_CLONEHANDLER_API flag for cc). +The module can be expected work with RELENG_6 snapshots of version number at least 600034, or with HEAD snapshots of version number at least 700002. (Hint: you can get the version number of your currently running kernel by sysctl -n kern.osreldate; or you can extract the version number directly from the source code by awk '/#define/{if ($2 == "__FreeBSD_version") { print $3; exit }}' /sys/sys/param.h.) (Desperate types can try with older HEAD/RELENG_6 snapshots if they set the -DUSE_OLD_CLONEHANDLER_API flag for cc.)
What can be considered as a public homepage for the project is http://wikitest.freebsd.org/moin.cgi/FuseFilesystem; for updates, further info go there. Get in contact with me via the soc-chenk email addrees of the FreeBSD organization (freebsd.org). @@ -50,7 +50,7 @@
- Fuse itself. Get Fuse 2.4.0-rc1 from their Sourceforge project page. If this is not availabe there (because a newer (pre)release has taken its place), you can either try to adopt these instructions to the newer (pre)release, or fetch it from my download directory, http://creo.hu/~csaba/projects/fuse4bsd/downloads/. + Fuse itself. Get Fuse 2.4.0 from their Sourceforge project page. If this is not availabe there (because a newer (pre)release has taken its place), you can either try to adopt these instructions to the newer (pre)release, or fetch it from my download directory, http://creo.hu/~csaba/projects/fuse4bsd/downloads/.
darcs get http://creo.hu/~csaba/darcs-repos/fuse4bsdcommand, or via Perforce (you can use this latter link for online source code browsing). +
+ Release tarballs and SCM snapshots include a version of this wiki page as README.html. Always act according to the included version. +
++ Warning: on rare occasions the wiki version may refer to a not yet committed state of the module code. +
@@ -98,30 +104,27 @@
Apply the patch with -
patch -Np1 < ../fuse4bsd/fuselib/fuselib-2.4.0-rc1.diff+
patch -Np1 < ../fuse4bsd/fuselib/fuselib-2.4.0.diff
Do
cp ../fuse4bsd/fuse_module/fuse_kernel.h include/ && - cp ../fuse4bsd/fuse_module/linux_compat.h include/(these commands dynamically customize the header file defining the kernel-userland interface; as these are needed in the module as well, they are handled separately from the userspace patch). + cp ../fuse4bsd/fuse_module/linux_compat.h include/ (as fuse_kernel.h is used by both of kernel and userspace, the necessary patch is separated from the all-over userspace patch, and is kept by the module code).
- We will do a non-privileged install (I'd say that's easier than set up a jail), I'll use ~/meta/fuse-2.4.0-rc1 as the prefix. Type the following commands: + We will do a non-privileged install (I'd say that's easier than set up a jail), I'll use ~/meta/fuse-2.4.0 as the prefix. Type the following commands:
mkdir junk && ln -s /usr/bin/true junk/chown && ln -s /usr/bin/true junk/mknod && - echo '#!/bin/sh - echo "$1" | grep -q /etc/udev || /bin/mkdir "$@"' > junk/mkdir && - chmod a+x junk/mkdir && - echo '#!/bin/sh - echo "$@" | grep -q udev || /usr/bin/install "$@"' > junk/install && - chmod a+x junk/install && + echo 'echo "$1" | grep -q /etc/udev || /bin/mkdir "$@"' > junk/mkdir && + echo 'echo "$@" | grep -q udev || /usr/bin/install "$@"' > junk/install && + chmod a+x junk/mkdir junk/install && (export PATH=`pwd`/junk:$PATH && - ./configure --prefix=$HOME/meta/fuse-2.4.0-rc1 --bindir=`pwd`/junk --disable-kernel-module MOUNT_FUSE_PATH=`pwd`/junk && + ./configure --prefix=$HOME/meta/fuse-2.4.0 --bindir=`pwd`/junk --disable-kernel-module MOUNT_FUSE_PATH=`pwd`/junk && make && make install)@@ -144,7 +147,7 @@
Type -
env PKG_CONFIG_PATH=~/meta/fuse-2.4.0-rc1/lib/pkgconfig/ ./configure && make+
env PKG_CONFIG_PATH=~/meta/fuse-2.4.0/lib/pkgconfig/ ./configure && make
As the superuser, do -
kldload use_module/fuse.ko +and also make sure that mount_fusefs (of FreeBSD Fuse) is in your path. Then do:kldload fuse_module/fuse.ko sysctl vfs.usermount=1-Now you'll have to act as a user belonging to the operator group or you can as well delete all barriers by -
devfs rule add path 'fuse*' mode 666(opening and doing I/O on fuse devices will have no effect until they get mounted). +Now you'll have to act as a user belonging to the operator group. (A different access policy could be set by devfs(8); eg., deleting all barriers would look like devfs rule add path 'fuse*' mode 666. Think of permissions of fuse devices directly as mount permissions of Fuse filesystems.)-Proceed on with the user you chose (we will assume you use the same user as the one who did the installation). +Proceed on with the user you chose (nevertheless, we will assume you use the same user as the one who did the installation).
Pick your favourite ssh accessible account (though maybe you'd better stick to servers running OpenSSH -- I've seen commits in sshfs' CVS for better interoperability with other servers, which show there might occur problems with them), say, it's foo@bar.baz. @@ -176,7 +178,7 @@
Go to sshfs' directory. First prepare the mount:
mkdir -p ~/fuse && -export LD_LIBRARY_PATH=~/meta/fuse-2.4.0-rc1/lib/and also make sure that mount_fusefs (of FreeBSD Fuse) is in your path. Then do: +export LD_LIBRARY_PATH=~/meta/fuse-2.4.0/lib/
mount_fusefs auto ~/fuse ./sshfs foo@bar.baz:
@@ -204,6 +206,14 @@
+ Make autotools play nice with Fuse (generating configure files doesn't work with CVS snapshots) +
++ Autotools gurus, help please! It might be just a five minutes work for you to fix it. +
+Implement attr/name caching (with timeouts)