I've written a small FUSE-based filesystem and now the only part's missing is that I want to register it with fstab(5) to auto-mount it on system startup and/or manually mount it with just mount /srv/virtual-db
. How can I achieve this?
I know, I can just run /usr/bin/vdbfs.py /srv/virtual-db
from some init script, but that's not exactly pretty.
I'm sorry because this may be not exactly a programming question, but it's highly related, as the packaging and deployment is still the programmer's job.
In general, one "registers" a new mount filesystem type by creating an executable mount.fstype
.
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
If vdbfs.py
takes mount
-ish arguments (i.e. dev path [-o opts]
), then mount -t vdbfs
and using vdbfs
as the 3rd field in fstab
will work. If it doesn't, you can create a wrapper which does take arguments of that form and maps them to whatever your vdbfs.py
takes.
FUSE should also install a mount.fuse
executable; mount.fuse 'vdbfs.py#dev' path -o opts
will go on and call vdbfs.py dev path -o opts
. In that case, you can use fuse
as your filesystem type and prefix your device with vdbfs.py#
.
So to clarify ephemient's answer, there are two options:
Edit /etc/fstab
like this:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
vdbfs.py#<dev> /srv/virtual-db fuse user,<other-opts> 0 0
Or,
Create an executable prefixed with "mount." (ensuring it can be used
with mount
-like options):
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
And edit /etc/fstab
like this:
# <file system> <mount point> <type> <options> <dump> <pass>
# ...
<dev> /srv/virtual-db vdbfs.py user,<other-opts> 0 0
With regards to auto-mounting at start up and manually mounting with mount
, the user
and noauto
options are relevant and fully supported by fuse itself so you don't have to implement them yourself. The user
option lets a non-priveleged user who is a member of the "fuse" group mount your filesystem with the mount
command, and noauto
directs your filesystem not to automatically mount at startup. If you don't specify noauto
, it will automatically mount.
You could just use fuse filesystem type. The following works on my system:
smbnetfs /media/netbios fuse defaults,allow_other 0 0
Another example:
sshfs#user@example.com:/ /mnt fuse user,noauto 0 0