LinuxSir.cn,穿越时空的Linuxsir!

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

Bootloader 怎么加载内核映像?

[复制链接]
发表于 2004-5-24 13:40:39 | 显示全部楼层 |阅读模式
我查看了一些分析 Linux Kernel 源代码的书,发现里面都没有提到这个先有鸡还是先有蛋的问题。这些书中关于 pc 机引导过程介绍得很详细,从加电自检,到一路 bios 中断调用读入引导扇区,以及内核由文件首部一段解压缩程序和后面的经 gzip 压缩的内核映像文件组成还有加载内核后怎么 setup 怎么解压怎么 init 都说得很清楚,但是关于 bootloader 怎么从文件系统中读取内核映像却一笔带过。内核映像不是存放在 MBR 中,也不是放在分区的引导扇区的,而是放在文件系统如 ReiserFS 中的不知道什么位置的。(从软盘启动好像不有这个问题,启动盘是没有文件系统的)。想要加载内核,就要能够读 ReiserFS 文件系统,而对 ReiserFS 的支持已经被编译到内核里了,因此就要先加载内核。这就导致了恶性循环了。
想来想去,只有两种可能,
1。被写入引导扇区的 Bootloader 已经包含了内核映像文件在磁盘中物理位置的信息,即内核映像被保存到磁盘的哪些柱面哪些扇区哪些磁道都被记录在了引导扇区,开机的时候和 bootloader 一并被读取。这样的话,bootloader 就可以通过 bios 中断调用把内核映像从磁盘中加载到内存中。
2。或者 bootloader 自身就包含对文件系统的支持,不过 bootloader 程序也太小了,实现起来好像有点困难,但是 GRUB 很可能就是这么做的。开机时启动到 GRUB 再按下 'c' 键进入命令行的时候,就像进入了一个 Shell(Bash) 一样,可以得到目录中的文件信息,这一点,bios 中断调用很难做到吧。
谢谢大家指教。:thank :help :thank
发表于 2004-5-24 13:48:16 | 显示全部楼层
不是可能,而是事实就是如此。
GRUB支持多种文件系统。
ls /boot/grub看看,有reiserfs_stage_1.5这样的文件。

其实最直接的了解途径就是参阅GRUB的文档乃至源码。
 楼主| 发表于 2004-5-24 14:28:06 | 显示全部楼层
reiserfs_stage_1.5 这个文件是什么用的?如果 GRUB 需要这个文件才能支持 ReiserFS 的话,那就有待进一步考虑了。
因为找不到 Linux 操作系统,因此很难实地考查一下。看 GRUB 的源码也免了吧。 :thank
发表于 2009-5-29 13:21:57 | 显示全部楼层
boot --loader --内核--驱动fs....
回复 支持 反对

使用道具 举报

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

本版积分规则

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