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/fstabcome questo:# <file system> <mount point> <type> <options> <dump> <pass> # ... vdbfs.py#<dev> /srv/virtual-db fuse user,<other-opts> 0 0Oppure,
-
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.vdbfsE modifica
/etc/fstabcome 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%.