加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

深度解析Linux根文件系统的挂载过程

发布时间:2020-12-31 05:09:22 所属栏目:安全 来源:网络整理
导读:副标题#e# 《深度解析Linux根文件系统的挂载过程》要点: 本文介绍了深度解析Linux根文件系统的挂载过程,希望对您有用。如果有疑问,可以联系我们。 在前面的文章中介绍《Linux操作系统启动过程》,而Linux系统的根文件系统(root file system)的挂载过程则

real_root_dev = new_encode_dev(ROOT_DEV);
create_dev("/dev/root.old",Root_RAM0);
/* mount initrd on rootfs’ /root */
mount_block_root("/dev/root.old",root_mountflags & ~MS_RDONLY);
sys_mkdir("/old",0700);
root_fd = sys_open("/",0);
old_fd = sys_open("/old",0);
/* move initrd over / and chdir/chroot in initrd root */
sys_chdir("/root");
sys_mount(".",NULL);
sys_chroot(".");

/*
* In case that a resume from disk is carried out by linuxrc or one of
* its children,we need to tell the freezer not to wait for us.
*/
current->flags |= PF_FREEZER_SKIP;

pid = kernel_thread(do_linuxrc,"/linuxrc",SIGCHLD);
if (pid > 0)
while (pid != sys_wait4(-1,NULL))
yield();

current->flags &= ~PF_FREEZER_SKIP;

/* move initrd to rootfs’ /old */
sys_fchdir(old_fd);
sys_mount("/",".",NULL);
/* switch root and cwd back to / of rootfs */
sys_fchdir(root_fd);
sys_chroot(".");
sys_close(old_fd);
sys_close(root_fd);

if (new_decode_dev(real_root_dev) == Root_RAM0) {
sys_chdir("/old");
return;
}

ROOT_DEV = new_decode_dev(real_root_dev);
mount_root();

printk(KERN_NOTICE "Trying to move old root to /initrd … ");
error = sys_mount("/old","/root/initrd",NULL);
if (!error)
printk("okayn");
else {
int fd = sys_open("/dev/root.old",0);
if (error == -ENOENT)
printk("/initrd does not exist. Ignored.n");
else
printk("failedn");
printk(KERN_NOTICE "Unmounting old rootn");
sys_umount("/old",MNT_DETACH);
printk(KERN_NOTICE "Trying to free ramdisk memory … ");
if (fd
error = fd;
} else {
error = sys_ioctl(fd,BLKFLSBUF,0);
sys_close(fd);
}
printk(!error ? "okayn" : "failedn");
}
}[/code]

先将/dev/ram0挂载,而后执行/linuxrc.等其执行完后.切换根目录,再挂载具体的根文件系统.
到这里.文件系统挂载的全部内容就分析完了.

四、小结

在本小节里.分析了根文件系统的挂载流程.并对几个虚拟根文件系统的情况做了详细的分析.理解这部份,对我们构建linux嵌入式开发系统是很有帮助的.

五、参考资料

IBM技术论坛的附根文件系统挂载流程图:

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读