我试图按照这本书来对Linux内核的工作原理有一些了解。
我无法真正确定的是,我不了解Linux如何检测文件系统类型,Linux中支持大量的文件系统,每个文件系统都有其特殊性。
谁能指出我在内核中应该区分例如fat和ext4的一段代码?
MBR不包含此类信息,并且每种类型的超级块都不同。
发出时,mount /dev/whatever /media
无需添加文件系统类型。
您找不到它的原因是,在大多数情况下,它不在内核中-在mount
程序util-linux
包中的userspace 实用程序中。如果您不给它一个文件系统类型,或者给它一个“ any”类型,那么mount
只需遍历内核知道的所有文件系统列表,然后依次尝试每个文件系统,直到其中一个成功安装为止(或者如果没有一个返回错误)。
如何找到内核知道的文件系统类型?它将读取/proc/filesystems
文件,该文件将在中移动file_systems
链表fs/filesystems.c
。加载文件系统驱动程序后,它将调用register_filesystem
同一文件将其自身添加到该列表中。例如,有一个register_filesystem
in init_ext2_fs
in 调用fs/ext2/super.c
— init_ext2_fs
是ext2模块的module-init函数。
某些文件系统嘈杂,当有人尝试使用错误的文件系统挂载设备时,会在内核调试日志中显示错误,这就是为什么(例如)成功挂载ext4文件系统时,您可能会看到有关“无效XFS文件系统”的错误的mount
原因首先尝试xfs。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句