我试图遵循this book来了解一下 Linux 内核的工作原理。
我真的不能把我的头是,我不明白 Linux 如何检测文件系统类型,有一个 gazillion 文件系统在 Linux 中支持每个其特殊性。
任何人都可以指出我在内核中的一段代码,应该区分让我们说 fat 和 ext4?
MBR 不包含这种信息,并且每种类型的超级块是不同的。
当发出mount /dev/whatever /media
时,没有必要添加文件系统类型。
找不到它的原因是因为,在大多数情况下,它不在内核中-它在util-linux
包中的 userspacemount
实用程序中。如果您不给它一个文件系统类型,或者如果您给它一个“any”类型,则mount
只返回一个内核尝试的所有文件系统的列表,直到内核知道它们的顺序为止。
它如何找出内核知道的文件系统类型是什么?它读取/proc/filesystems
文件,该文件遍历fs/filesystems.c
中的file_systems
链表。当加载文件系统驱动程序时,它会调用同一文件中的register_filesystem
函数将其自身添加到该列表中。例如,在中调用
当有人尝试使用错误的文件系统挂载设备时,某些文件系统会产生噪音并将错误打印到内核调试日志中,这就是为什么,例如,如果mount
首先尝试 xfs,那么当成功挂载 ext4 文件系统时,您可能会看到有关“无效的 XFS 文件系统”的错误。
blkid-o value-s TYPE /dev/path/to/device
从mount手册页:
如果没有给出-t 选项,或者如果指定了自动类型,mount 将尝试猜测所需的类型。如果 mount 是用 blkid 库编译的,则猜测是由这个库完成的。否则,mount 通过探测超级块来猜测自己;如果没有发现任何熟悉的东西,mount 将尝试读取文件 / etc / filesystems,或者,如果不存在,/ proc / filesystems。
此外,我的 ubuntu 框有这是安装手册页(提到volume_id
库)
如果没有给出-t 选项,或者如果指定了自动类型,则 mount 将尝试猜测所需的类型。Mount 使用 blkid 或 volume_id 库来猜测文件系统类型;如果没有出现任何熟悉的内容,则 mount 将尝试读取文件 / etc / filesystems,或者,如果不存在,则 / proc / filesystems 将尝试在其中列出的所有文件系统类型。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(83条)