LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1131|回复: 7

问一个问题:内核是如何知道fstab文件的位置的?

[复制链接]
发表于 2005-8-11 08:52:48 | 显示全部楼层 |阅读模式
在启动内核的时候,内核还不知道如何挂载文件系统,

那么怎么去读取/etc/fstab文件的n呢?

我百思不得其解啊

请教达人了
发表于 2005-8-11 09:58:50 | 显示全部楼层
fstab文件是干什么的
回复 支持 反对

使用道具 举报

发表于 2005-8-11 10:00:50 | 显示全部楼层
那内核映像文件是如何找到的呢?
在 lilo 或GRUB的配置文件中都指明了 root所在位置,如/etc/grub.conf中
root(hda0,0)
系统启动后, 会依这个信息找到KERNEL IMAGE, 当然也能找到 mount程序, 还有/etc/fstab
个人认为是不是内核维护两分根文件系统的记录,一份是在GRUB中指定的那个, 用于寻找启动必须文件, 一份即是用户用的也就是FSTAB中指定的?
还是只有一份, 不断的更换?
启动时按GRUB中的算,然后到了加载 initrd 时, 根文件系统又变成INITRD了, 之后UNMOUNT掉INITRD又换上了GRUB中的, 找到并加载FSTAB,最后才换上我们在FSTAB中指定的/


请有研究的朋友给个回复.
回复 支持 反对

使用道具 举报

发表于 2005-8-11 11:10:02 | 显示全部楼层
个人认为内核根本就不需要直接读取/etc/fstab内的信息。/etc/fstab只是给rc.sysinit和mount之类用的
回复 支持 反对

使用道具 举报

发表于 2005-8-11 11:39:08 | 显示全部楼层
同意楼上的观点,fstab对内核来说是无用的,比如说,没有mount /boot,系统一样启动,我看关键起作用的是引导管理器传给内核的参数“root=/dev/hdxxx",告诉内核如何找到根分区,然后在根分区上运行init,接下来完成整个系统的启动
回复 支持 反对

使用道具 举报

发表于 2005-8-11 12:57:31 | 显示全部楼层
先INIT还是先MOUNT?应是先INIT吧.
那这个INIT程序是“root=/dev/hdxxx"中的/bin/init 还是FSTAB中/对应的INIT程序? 有时FSTAB中的/与GRUB.CONF中的/是不同的.
回复 支持 反对

使用道具 举报

发表于 2005-8-11 13:07:01 | 显示全部楼层
是先init再mount,很明显,不管fstab里是什么内容,内核都可以运行到init这一步,但fstab里的内容不对的话,init就无法继续了,是这样吧,所以说内核和fstab是没有关系的,呵呵
回复 支持 反对

使用道具 举报

发表于 2005-8-11 13:18:48 | 显示全部楼层
Post by 弥敦路九号
先INIT还是先MOUNT?应是先INIT吧.
那这个INIT程序是“root=/dev/hdxxx"中的/bin/init 还是FSTAB中/对应的INIT程序? 有时FSTAB中的/与GRUB.CONF中的/是不同的.


启动过程一般有两次mount。第一次现将/分区mount为只读,内核需要的所有信息以及模块都从启动参数和initrd中获得. 在mkinitrd制作initrd的时候要通过/etc/fstab里的信息,将mount参数和需要的模块写入initrd.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表