In generale, si "registra" un nuovo tipo di filesystem di montaggio creando un eseguibile mount.fstype
.
$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
Se vdbfs.py
prende mount
-ish argomenti (ad esempio dev path [-o opts]
), quindi mount -t vdbfs
e usando vdbfs
come terzo campo in fstab
funzionerà. In caso contrario, puoi creare un wrapper che prende gli argomenti di quella forma e li mappa a qualunque sia il tuo vdbfs.py
prende.
FUSE dovrebbe anche installare un mount.fuse
eseguibile; mount.fuse 'vdbfs.py#dev' path -o opts
andrà avanti e chiamerà vdbfs.py dev path -o opts
. In tal caso, puoi utilizzare fuse
come tipo di filesystem e anteponi al tuo dispositivo vdbfs.py#
.
Quindi, per chiarire la risposta di ephemient, ci sono due opzioni:
-
Modifica
/etc/fstab
come questo:# <file system> <mount point> <type> <options> <dump> <pass> # ... vdbfs.py#<dev> /srv/virtual-db fuse user,<other-opts> 0 0
Oppure,
-
Crea un eseguibile con il prefisso "mount". (assicurandosi che possa essere utilizzato con
mount
-like opzioni):$ ln -s /usr/bin/vdbfs.py /usr/sbin/mount.vdbfs
E modifica
/etc/fstab
come questo:# <file system> <mount point> <type> <options> <dump> <pass> # ... <dev> /srv/virtual-db vdbfs.py user,<other-opts> 0 0
Per quanto riguarda il montaggio automatico all'avvio e il montaggio manuale con mount
, il user
e noauto
le opzioni sono rilevanti e completamente supportate da fuse stesso, quindi non devi implementarle tu stesso. Il user
l'opzione consente a un utente non privilegiato che è un membro del gruppo "fuse" di montare il filesystem con mount
comando e noauto
ordina al tuo filesystem di non montarsi automaticamente all'avvio. Se non specifichi noauto
, verrà montato automaticamente.
Per chiarire il commento di @patryk.beza sulla risposta accettata, il modo corretto montare un file system FUSE è impostare il tipo di file system su fuse.<subtype>
.
Ad esempio, per montare un'implementazione s3fs-fuse, che non fornisce uno specifico /sbin/mount.*
wrapper e usa normalmente s3fs
comando utente per montare i bucket S3, è possibile utilizzare questo comando come root:
mount -t fuse.s3fs bucket-name /path/to/dir -o <some,options>
o questa riga in /etc/fstab
:
bucket-name /path/to/dir fuse.s3fs <some,options> 0 0
o questa unità di montaggio SystemD (ad esempio, /etc/systemd/system/path-to-dir.mount
):
[Unit]
Description=S3 Storage
After=network.target
[Mount]
What=bucket-name
Where=/path/to/dir
Type=fuse.s3fs
Options=<some,options>
[Install]
WantedBy=multi-user.target
Come funziona:mount
riconosce il concetto di "sottotipi di filesystem" quando il tipo è formattato con un punto (ad es. <type>.<subtype>
), in modo che un tipo con il formato fuse.someimpl
è riconosciuta come responsabilità dell'helper di montaggio FUSE /sbin/mount.fuse
. L'helper di montaggio FUSE risolve quindi someimpl
parte dell'implementazione FUSE, allo stesso modo del #
format è usato nella risposta originale (penso che questa sia solo una ricerca del percorso per un programma chiamato <subtype>
, ma non ne sono sicuro al 100%.