无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
12
返回列表 发新帖
楼主: 不点
打印 上一主题 下一主题

最近觉得 grub4dos 的文档需要系统整理了

[复制链接]
31#
发表于 2014-1-7 14:51:29 | 只看该作者
本帖最后由 pppfj 于 2014-1-7 14:52 编辑

仔细阅读了这篇一年前的文档,对grub4dos的内部结构和工作原理又有了进一步的了解。
有些疑惑还想再请教一下不点大师:
GRLDR 的头部占用 16 扇区,也就是 8K,即 8192 个字节,或者(用十六进制表示)0x2000 字节。GRLDR 的头部会被 NTLDR 加载。遗憾的是,NTLDR 不能够把 GRLDR 完整加载到内存,只能刚好加载 8K 大小的头部。这就是 “ 为什么 GRLDR 的头部正好是 8K ” 的原因。这样,当头部获得控制后,它就有一个首要的任务,即寻找 “ 主体 ” 部分在哪里,然后加载主体部分到内存。实际的执行步骤是,头部在各个硬盘各个分区的根目录寻找整个 GRLDR 文件(如果都失败,那么最后会尝试在第一软盘 fd0 的根目录寻找 GRLDR 文件),找到 GRLDR 之后就加载完整的 GRLDR 文件到内存,并递交控制权。

疑惑:
    1.“当头部获得控制后,它就有一个首要的任务,即寻找 “ 主体 ” 部分在哪里,然后加载主体部分到内存”。正确理解了这句话的意思,是把grldr头部16个扇区以后的“主体”载入内存,并移交控制权;
    2.“实际的执行步骤是,头部在各个硬盘各个分区的根目录寻找整个 GRLDR 文件,找到 GRLDR 之后就加载完整的 GRLDR 文件到内存,并递交控制权。”理解这句话有点疑问:“加载完整的grldr文件到内存,并递交控制权”,意味着加载包含“16扇区头部+主体”到内存,然后递交控制权,不就意味着“16扇区头部”要再次执行寻找“主体”的工作,形成死循环?实际上程序运行的很好,肯定是我的理解有问题,请大师指点。
再请教:
grldr 并非只能被 ntldr 加载,它也可以被其它启动软件加载。例如,fbinst、syslinux 都可以加载 grldr。原则上讲,任何启动软件(经过改造以后)都可以加载 grldr,因为加载它是很容易的,只要把 grldr 放在 16 字节对齐的内存地址处便可递交控制权了。

    1.如果用wee的命令“command /grldr”或“/grldr”来加载grldr,是不是一次性完整的把整个grldr(头部+主体)文件加载到内存,然后递交控制权?如果是完整加载整个文件,递交控制权后,“16个扇区头部”是否还要再“寻找”并加载“主体”一次,造成重复劳动?
    2.如果用grub的“chainloader /grldr”命令加载grldr,是否与上述过程是类似的?
    谢谢!
回复

使用道具 举报

32#
 楼主| 发表于 2014-1-7 15:33:52 | 只看该作者
头部接管控制后,它首先检查整个 grldr 是否都已经加载到内存了,这是很简单的一个检查。如果已经加载完毕,那就不会再搜索了,而是跳过搜索代码,直接启动 grldr 的主程序体。
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-22 12:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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