¿Puedo enumerar los sistemas de archivos que admite un núcleo en ejecución?

27

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).

Oli
fuente

Respuestas:

12

¿Puedo enumerar los sistemas de archivos que admite un núcleo en ejecución?

Bueno, la respuesta /proc/filesystems es simplemente incorrecta: refleja solo los FSes que ya están en uso, pero generalmente hay una forma más:

ls /lib/modules/$(uname -r)/kernel/fs

Otra fuente es la /proc/config.gzque podría estar ausente en su distribución (y siempre me pregunto "¿por qué?" En el caso).

poige
fuente
2
La configuración del kernel de Ubuntu está incluida, solo en un lugar diferente:/boot/config-$(uname -r)
Oli
2
/proc/filesystemsno está mal , simplemente está incompleto .
scai
3
@poige Según esa lógica, su respuesta también es terriblemente incompleta e incorrecta. /lib/modules/$(uname -r)/kernel/fssolo 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.
Patrick
44
Esta respuesta es engañosa, si un módulo no está cargado, el núcleo simplemente no puede cargar ese tipo de sistema de archivos hasta que lo esté. No es correcto decir que el núcleo puede cargarse; no sabe si puede hacerlo hasta que cargue el módulo correctamente. Ni siquiera hay una garantía de que pueda cargar ese módulo.
Chris Down
3
@poige en realidad no estoy pasando /proc/config.gzpor 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.
Patrick
11

/proc/filesystemsenumera todos los tipos de sistemas de archivos admitidos por el núcleo en ejecución, junto con los atributos del sistema de archivos, nodevpara 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.

Chris Down
fuente
1
¿Qué nodevsignifica el resultado cuando usted cat /proc/filesystems?
slm
En mi computadora portátil Arch Linux, cat /proc/filesystemsenumero 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/filesystemlista. ¿Que pasa con eso?
Bruce Ediger el
1
nodevindica 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.
Jonathan Callen el
55
@BruceEdiger: /proc/filesystemssolo 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.
Jonathan Callen el
0

Creo que esto te dará lo que quieres:

(cat /proc/filesystems | awk '{print $NF}' | sed '/^$/d'; ls -1 /lib/modules/$(uname -r)/kernel/fs) | sort -u

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 cargados
  • ls -1 /lib/modules/$(uname -r)/kernel/fs le proporciona la lista de módulos de sistema de archivos disponibles para su núcleo
  • sort -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/fsa un directorio diferente apropiado para su distribución.

Chris Magnuson
fuente