Tal vez muchos lo desconozcan pero, a diferencia de Linux que soporta un gran número de filesystems, el kernel FreeBSD sólo posee soporte para gestionar sistemas de archivos UFS, ZFS y ext2 (a través del driver ext2fs
). Adicionalmente posee soporte de sólo lectura para los sistemas de archivos XFS y ReiserFS. Aunque afortunadamente FreeBSD tiene su propia implementación de FUSE (Filesystem in Userspace), lo que nos permite montar, por ejemplo, sistemas de archivos ext4 y NTFS.
FUSE es un módulo del kernel para sistemas Unix que permite agregar soporte para sistemas de archivos adicionales sin necesidad de editar el código del propio kernel. Como el código que soporta a cada filesystem se ejecuta en espacio usuario, los usuarios sin privilegios tienen la capacidad de gestionarlos (montar, desmontar, etc.), mientras que el módulo FUSE sólo funciona como intermediario a la interfaz del kernel.
Instalar soporte para sistemas de archivos ext4 y NTFS
Para instalar los drivers de los sistemas de archivos ext4 y NTFS desde el gestor de paquetes, ejecutar:
# pkg install fusefs-ext4fuse
# pkg install fusefs-ntfs
Si en cambio se desea compilar desde los fuentes:
# portmaster sysutils/fusefs-ext4fuse
# portmaster sysutils/fuse
Luego es necesario cargar el módulo del kernel FUSE (fuse.ko
):
# kldload fuse.ko
Verificar que haya sido cargado correctamente:
root@hal9000:~ # kldstat | grep fuse 10 1 0xffffffff81ae7000 ded6 fuse.ko
Es posible configurar FreebSD para que cargue el módulo fuse.ko
automáticamente al iniciar el sistema. Para ello editar el archivo /boot/loader.conf
:
# vi /boot/loader.conf
Agregar la línea:
fuse_load="YES"
Montar sistemas de archivos
Para montar un sistema de archivos ext4, por ejemplo el que se encuentra en el dispositivo ada1s1
en el punto de montaje /media/disk1/
, simplemente ejecutar:
# ext4fuse /dev/ada1s1 /mnt/disk1/
De forma similar, si se desea montar el filesystem NTFS del dispositivo ada1s2
en el punto de montaje /media/disk2/
:
# ntfs-3g /dev/ada1s2 /media/disk2/
Permitir montar a usuarios sin privilegios
Notar que en los ejemplos anteriores he montado les filesystems como superusuario (root). Si se desea poder montarlos como un usuario sin privilegios, es necesario realizar las siguientes configuraciones.
Permitir que usuarios del grupo wheel tengan acceso de lectura/escritura sobre el dispositivo en cuestión (por ejemplo /dev/ada1s1
, el cual posee un sistema de archivos ext4) y sobre el dispositivo /dev/fuse
. Para ello, editar el archivo /etc/devfs.conf
:
# vi /etc/devfs.conf
Agregar las siguientes líneas:
# Permitir acceso rw a usuarios del grupo wheel sobre ada1s1 own ada1s1 root:wheel perm ada1s1 0660 # Permitir acceso rw a usuarios del grupo wheel sobre fuse own fuse root:wheel perm fuse 0660
Luego editar el archivo de configuración del kernel /etc/sysctl.conf
:
# vi /etc/sysctl.conf
Agregar la siguiente línea para permitir que usuarios sin privilegio puedan montar filesystems:
vfs.usermount=1
Reiniciar el sistema.
Verificar que el módulo fuse haya sido cargado automáticamente:
emi@hal9000:~ % kldstat | grep fuse 2 1 0xffffffff81956000 1a1f0 fuse.ko
Verificar que los permisos sobre los dispositivos ada1s1 y fuse hayan sido asignados de forma correcta:
emi@hal9000:~ % ll /dev/fuse crw-rw---- 1 root wheel 0x45 Dec 5 12:25 /dev/fuse emi@hal9000:~ % ll /dev/ada1s1 crw-rw---- 1 root wheel 0x67 Dec 5 12:22 /dev/ada1s1
Verificar los permisos sobre el punto de montaje (el usuario debe tener permisos de lectura/escritura sobre el directorio):
emi@hal9000:~ % ll -d /media/disk drwxrwx--- 2 emi wheel 512 Nov 28 13:03 /media/disk/
Verificar que el kernel permita que los usuarios sin privilegios puedan montar filesystems:
emi@hal9000:~ % sysctl vfs.usermount vfs.usermount: 1
Todo listo, ahora es posible montar el filesystem como el usuario "emi" perteneciente al grupo "wheel":
emi@hal9000:~ % ntfs-3g /dev/ada1s1 /media/disk/
Verificar mediante:
emi@hal9000:~ % mount | grep disk /dev/fuse on /media/disk (fusefs, local, synchronous)
Notas
La implementación de ext4 para FUSE es de sólo lectura, hasta el momento.
En cambio, la versión de NTFS-3G es estable, soporta acceso de lectura/escritura y posee todas las características implementadas. Aunque actualmente en FreeBSD no es posible montar un filesystem NTFS como usuario sin privilegios utilizando este driver.
Referencias
FreeBSD Handbook - 21.2. Linux® File Systems
Tal vez pueda interesarte