Как узнать, какие драйверы файловой системы скомпилированы в ядре linux?

В бегущей системе Linux, что такое переносимый (среди дистрибутивов Linux) способ узнать, какие файловые системы используют текущее ядро ​​для компиляции (не через модули)?

Рассмотрим, например, мое текущее ядро ​​Ubuntu x86_64: 3.11.0-24-generic #41-Ubuntu . Это, например, нет /proc/config.gz , что было бы моей первой мыслью иначе.

  • Как получить сообщения ядра на последовательной консоли в системе systemd?
  • Является ли / dev / nvram опасным для записи?
  • Однородность файлов Linux
  • Как устройство IFB позиционируется в потоке пакетов ядра Linux
  • Защищенная среда выполнения
  • sigaction (7): семантика члена si_code siginfo_t
  • Причина, по которой мне интересно, это то, что я хочу (программно) построить среду спасения с текущим ядром и исходным ramdisk, который ядро ​​сможет загрузить / смонтировать.

    Это так же просто, как сравнение /proc/filesystems с lsmod ?

    Если да: У модулей всегда есть одно и то же имя (первый столбец из вывода lsmod ) в качестве имени файловой системы (последний столбец в /proc/filesystems )?

    Возможно ли более современный способ, например /sys вместо /proc искать информацию?

    Мой нынешний подход заключается в следующем. Может кто-то подтвердить, что это правильно, или посоветовать, как это сделать?

     for fscand in $(awk '{print $NF}' /proc/filesystems) do if test $(lsmod | grep -c -e '^'${fscand}'[^a-z0-9_-]') -eq 0 then candlist="${fscand} ${candlist}" fi done for fscand in $candlist do echo $fscand is compiled-in done 

  • Мне нужна конкретная версия ядра. Как получить соответствующий Debian iso?
  • скопировал папку - получив различное используемое пространство в пункте назначения (используя FreeBSD и UFS)
  • Невозможно создать 16-битные сегменты LDT на ядре 3.8.11
  • Жесткий диск USB3 не распознан Linux
  • Какие функции ext4 не поддерживают btrfs?
  • Как получить точку монтирования файловой системы, содержащую данный файл
  • One Solution collect form web for “Как узнать, какие драйверы файловой системы скомпилированы в ядре linux?”

    Это так же просто, как сравнение /proc/filesystems с lsmod ?

    Нет:

     $ comm -31 <(lsmod | awk 'NR!=1 {print $1}' |sort) \ <(</proc/filesystems awk '{print $NF}' |sort) | fmt anon_inodefs autofs bdev cgroup cpuset debugfs devpts devtmpfs ext2 ext3 fuseblk fusectl hugetlbfs mqueue nfs4 pipefs proc pstore ramfs rootfs rpc_pipefs securityfs sockfs sysfs tmpfs 

    Многие из них не встроены в ядро ​​этой системы. autofs обеспечивается модулями, называемыми autofs4 а nfs4 – модулем nfs . Модуль ext4 предоставляет ext2 и ext3 а также ext4 ; fuse обеспечивает как fuse так и fusectl . rpc_pipefs (не путать с pipefs ) предоставляется sunrpc .

    Однако ваша система может загружать модуль для файловой системы по требованию: при запуске mount -t foo … , если foo не поддерживается тип файловой системы, Linux пытается загрузить модуль, который предоставляет эту файловую систему. Как это работает, ядро ​​обнаруживает, что foo не поддерживается файловой системой, и вызывает modprobe для загрузки модуля fs-foo . Механизм похож на pci:… aliases для загрузки драйвера для периферийного оборудования PCI по его идентификатору PCI и usb:… который похож на USB – см. Как назначить драйвер USB для устройства, а Debian не обнаруживает последовательную PCI-карту после перезагрузки для более подробных объяснений. fs-… module записываются в /lib/$(uname -r)/modules.alias . Этот файл создается при сборке ядра.

    В нормальных условиях вы можете использовать это, чтобы определить, какие файловые системы предоставляются модулями. Исключением файловые системы, которые не предоставляются модулями, встроены в ядро. Существуют редкие случаи, когда такой подход не работает, например, если вы изменили или modules.alias файл modules.alias или если файловая система предоставляется как модулем, так и в форме скомпилированного. Я не знаю, как справиться с этими случаями, не написав код ядра и загрузив его как модуль.

     for fs in $(</proc/filesystems awk '{print "fs-" $NF}' |sort); do /sbin/modprobe -n $fs 2>/dev/null || echo "$fs is built in" done 
    Linux и Unix - лучшая ОС в мире.