1.根文件系统的挂载
- mount_root[init/do_mounts.c]
- create_dev(“/dev/root”, ROOT_DEV) ==> how to do this
- sys_unlink(“/dev/root”)
- sys_mknod(“/dev/root”,…)
- mount_block_root(“/dev/root”, flags)
- get_fs_names -> copy root_fs_names
- do_mount_root ==> 调用系统调用sys_mount,sys_chdir(“/root”),为当 前进程current->fs.pwd.dentry设置挂载返回的root dentry
- sys_mount ==>进入系统调用
- create_dev(“/dev/root”, ROOT_DEV) ==> how to do this
2.进入系统调用的挂载,也是用户态挂载文件系统的入口
- sys_mount[fs/namespace.c]
- copy_mount_string
- copy_mount_options
- do_mount
- user_path(dirname, &path) -> path_lookupat ==> 获取挂载路径的struct path,查找路径是很复杂的过程:)
- do_remount
- do_loopback
- do_change_type
- do_move_mount
- do_new_mount ==>

本文详细分析了Linux内核中挂载文件系统的流程,从根文件系统的挂载开始,包括创建设备节点、系统调用挂载、用户态挂载文件系统的入口,深入到具体的文件系统类型如ext2的挂载过程,涉及设备节点操作、路径查找、挂载点创建、super block填充等多个关键步骤。
最低0.47元/天 解锁文章
688

被折叠的 条评论
为什么被折叠?



