Estoy tratando de detectar qué sistemas de archivos puede admitir un núcleo. Idealmente en una pequeña lista de sus nombres, pero tomaré todo lo que tengas.
Tenga en cuenta que no me refiero a los sistemas de archivos actuales en uso , solo a los que el núcleo actual podría, en teoría, soportar directamente (obviamente, el fusible podría soportar números infinitos más).
fuente
/boot/config-$(uname -r)
/proc/filesystems
no está mal , simplemente está incompleto ./lib/modules/$(uname -r)/kernel/fs
solo ayudará con los sistemas de archivos que se han habilitado como módulos, no los que están integrados en el núcleo. Además, un nombre de módulo puede no coincidir con el nombre del sistema de archivos que proporciona, y un solo módulo puede proporcionar múltiples sistemas de archivos./proc/config.gz
por alto en absoluto. 1) no se garantiza que exista, 2) un nombre de módulo puede no coincidir con el nombre del sistema de archivos que proporciona, y un solo módulo puede proporcionar múltiples sistemas de archivos./proc/filesystems
enumera todos los tipos de sistemas de archivos admitidos por el núcleo en ejecución, junto con los atributos del sistema de archivos,nodev
para indicar que este sistema de archivos no está respaldado por un dispositivo de bloque, por ejemplo.man 5 filesystems
da información más detallada.fuente
nodev
significa el resultado cuando ustedcat /proc/filesystems
?cat /proc/filesystems
enumero un grupo de "nodev", obviamente sistemas de archivos de propósito especial, además de ext2, ext3, ext4. Cuando miro/lib/modules/3.11.6-1-ARCH/kernel/fs
, veo una serie de otros, como "grasas", "btrfs", "reiserfs", que también son sistemas de archivos regulares en el disco, pero no aparecen en la/proc/filesystem
lista. ¿Que pasa con eso?nodev
indica que el sistema de archivos en cuestión no es un sistema de archivos físico que necesita un dispositivo de bloques para vivir, sino más bien un sistema de archivos virtual respaldado por algo que no sea un dispositivo de bloques./proc/filesystems
solo muestra los sistemas de archivos que el kernel ha cargado; hasta que inserte esos módulos en el kernel (que generalmente ocurre automáticamente cuando los necesita), el kernel no puede admitir esos sistemas de archivos.Creo que esto te dará lo que quieres:
Explicación
Basado en mi mejor entendimiento:
cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d'
le brinda todos los sistemas de archivos que el núcleo admite de forma nativa (como sysfs) junto con aquellos que tienen sus módulos de núcleo actualmente cargadosls -1 /lib/modules/$(uname -r)/kernel/fs
le proporciona la lista de módulos de sistema de archivos disponibles para su núcleosort -u
ordena los resultados combinados de los dos primeros comandos con duplicados eliminados (solo muestra resultados únicos -u)Todavía estoy aprendiendo Linux, esto funciona en Arch Linux, pero creo que al menos para Ubuntu es posible que deba cambiar la ruta
/lib/modules/$(uname -r)/kernel/fs
a un directorio diferente apropiado para su distribución.fuente