Hi tech@
I send you this mail because a few months ago I tried to dabble with fuse
filesystem and OpenBSD. After some time working on this subject I have
succeeded to create something that works. It is not even near to be perfect
but with some changes and adaptions I think it could do the job.
In order to use these patches you will need to follow this procedure:
* apply the ports patch :
root # cd /usr/ports
root # ftp http://www.pmbsd.org/patch-fuse-ports
root # patch -p0 < patch-fuse-ports
* apply the src patch
root # cd /usr/src
root # ftp http://www.pmbsd.org/patch-fuse-src
root # patch -p0 < patch-fuse-src
* upgrade your system mount.h
root # cp /usr/src/sys/sys/mount.h /usr/include/sys/mount.h
* compile all mount and umount binaries
root # cd /usr/src/sbin/mount && make && make install
root # cd /usr/src/sbin/mount_ffs && make && make install
root # cd /usr/src/sbin/mount_fusefs && make && make install (there are
warning for a missing manpage)
...
root # cd /usr/src/sbin/umount && make && make install
* build a new kernel
root # cd /usr/src/sys/arch/i386/conf
root # config GENERIC
root # cd ../compile/GENERIC
root # make && make install
* update MAKEDEV script and launch it to create the fuse device
root # cd /dev
root # ftp http://www.pmbsd.org/patch-fuse-MAKEDEV
root # patch MAKEDEV < patch-fuse-MAKEDEV
root # ./MAKEDEV
root # ./MAKEDEV fuse
* install devel/fuse and sysutils/sshfs-fuse packages
root # cd /usr/ports/devel/fuse && make && make install
root # cd /usr/ports/sysutils/sshfs-fuse && make && make install
* reboot and try sshfs
root # reboot
root # sshfs [email protected]:/home/syl/code /mnt
root # ls /mnt
As I said before, this is not perfect... There are some outstanding
features to implement and bugs or architectural mistakes to solve...
There is some work to do to implement these missing vnops and vfs features :
* vptof
* fhtovp
* checkexp
* sysctl
* strategy
* fsync
* symlink
* rename vnop
* you could only mount one filesystem at once.
I think some security improvement could be done on these patches like :
- fix some panics and tsleep hole that could produce DoS...
- allow the use of fuse with a securelevel equal to -1...
- other security stuff that I'm surely missing :)
I will not explain all the fuse protocol in this mail but if you want
information on how it works I will answer your questions in a private mail.
If you have any questions about these patches or want me to change or
rework something in this code I will be happy to do it.
Thanks for your time,
Cheers,
--
Sylvestre Gallon