免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4884 | 回复: 19
打印 上一主题 下一主题

[实践] grub stage1.5的疑问。。。 [复制链接]

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-17 12:33 |只看该作者 |倒序浏览
5可用积分
#ifdef STAGE1_5
notification_string:    .string "Loading stage1.5"
#else
notification_string:    .string "Loading stage2"
#endif

不打开这个宏时:跳过1.5,直接加载stage2? 不可能吧!此时还不识别stage2所在的fs呢。。

求指点,谢谢!

最佳答案

查看完整内容

回复 15# humjb_1983 前面说的没有stage1_5的情况,stage2放在固定boot引导区是不太准确,stage2应是在固定磁盘文件系统分区的扇区上,stage1上面直接写死了stage2的地址。所以这种安装方法stage2文件不能移动文件位置。 stage1_5是可以放在boot区的,至少有一部分在。e2fs_stage1_5就是8k, 16个扇区,MBR所在的boot sector区有64个sectors, 足以放下。

论坛徽章:
0
2 [报告]
发表于 2014-06-17 12:33 |只看该作者
回复 15# humjb_1983


    前面说的没有stage1_5的情况,stage2放在固定boot引导区是不太准确,stage2应是在固定磁盘文件系统分区的扇区上,stage1上面直接写死了stage2的地址。所以这种安装方法stage2文件不能移动文件位置。

   stage1_5是可以放在boot区的,至少有一部分在。e2fs_stage1_5就是8k, 16个扇区,MBR所在的boot sector区有64个sectors, 足以放下。

论坛徽章:
0
3 [报告]
发表于 2014-06-17 19:49 |只看该作者
grub stage1.5老古董了。在硬盘上,有1.5和没有stage 1.5都可以。  没有stage1.5的执行流程如下:
1.        加载硬盘上的mbr即stage1到7c00处, 执行stage1的代码
2.        stage2安装时会放置在硬盘固定的扇区上, stage1将会加载1个stage2的扇区到0x8000处, 执行stage2的start.s代码
3.        stage2的start.s代码加载后续扇区到0x8200处, 数量在安装时指定, 大小就是stage2文件大小减去一个扇区.
4.        直接跳转到0x8200, 开始执行stage2的asm.s代码开始的地方.

既然stage2都是固定加载到了内存空间,所以可以不需要stage1.5的方式来执行。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2014-06-18 06:25 |只看该作者
本帖最后由 chishanmingshen 于 2014-06-18 06:30 编辑

回复 2# kerryxi


    如此的话,stage2的大小应该有限制,不超过第一磁道的大小?

    新的grub分析资料少,只好看老的了。

论坛徽章:
0
5 [报告]
发表于 2014-06-18 08:57 |只看该作者
回复 3# chishanmingshen


    stage2的大小没限制(当然也不是无限大),但是stage2的start.s代码的启动代码总大小要有限制,不超过一个磁道的大小。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2014-06-18 09:04 |只看该作者
回复 4# kerryxi


    stage2的start.s代码 能识别fs?

论坛徽章:
0
7 [报告]
发表于 2014-06-18 09:09 |只看该作者
回复 5# chishanmingshen


    stage2的start.s不需要识别fs,在安装grub stage2的时候,就指定了stage2的地址。stage1.5的目的也是为了用fs的方式知道地址。有地址了,加载模块就行,就不需要fs。所以stage1.5可以不用。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2014-06-18 09:41 |只看该作者
回复 6# kerryxi


    stage2位置发生变化了,咋办?比如文件移动了。

论坛徽章:
0
9 [报告]
发表于 2014-06-18 10:50 |只看该作者
回复 7# chishanmingshen


    stage2是安装的,如果没有stage1.5,里面就不是文件格式了,就是一坨bin,不会移动。移动就出问题了。

论坛徽章:
4
酉鸡
日期:2014-03-21 23:19:50狮子座
日期:2014-08-01 22:11:40酉鸡
日期:2015-01-10 21:31:442015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2014-06-18 10:59 |只看该作者
回复 8# kerryxi


    有何种应用场景这么特殊的用?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP