我试图了解内核如何安装文件系统。在检查源代码时,我发现do_mounts.c
文件的源代码与挂载相关(rootfs文件系统在init_rootfs()
内注册)。
rootfs_mount()
调用 start_kernel()
函数,我无法理解mount_nodev()
内rootfs_mount()
的使用情况。能否帮助我理解从rootfs_mount()
调用start_kernel()
背后的逻辑,因为它没有安装任何文件系统。
通过调用mount_nfs_root()
中的mount_block_root()
或kernel_init()
函数启动实际文件系统挂载,请告诉我我的理解是否不同。
答案 0 :(得分:1)
我无法理解
mount_nodev()
的使用情况 在rootfs_mount()
内。你能帮帮我吗? 理解调用rootfs_mount()
背后的逻辑start_kernel()
,因为它没有安装任何文件系统。
好吧,mount_nodev()
并不意味着它没有安装任何文件系统,而是(参见VFS - The Linux Kernel Archives):
mount_nodev:挂载未由设备支持的文件系统
(例如NFS)。顺便说一句,这也反映在/proc/filesystems
rootfs_mount()
特别安装 ramfs 或 tmpfs 。
附录 - 此Linux Initialization HOWTO说明start_kernel()
中的来电:
vfs_caches_init(mempages)
(在linux / fs / dcache.c中)
调用kmem_cache_create()来创建 buffer_head,names_cache,filp和CONFIG_QUOTA的slab缓存, dquot。
调用dcache_init()创建dentry_cache和 dentry_hashtable。