免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3785 | 回复: 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
发表于 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
发表于 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
发表于 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
发表于 2014-06-18 06:25 |显示全部楼层
本帖最后由 chishanmingshen 于 2014-06-18 06:30 编辑

回复 2# kerryxi


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

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

论坛徽章:
0
发表于 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
发表于 2014-06-18 09:04 |显示全部楼层
回复 4# kerryxi


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

论坛徽章:
0
发表于 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
发表于 2014-06-18 09:41 |显示全部楼层
回复 6# kerryxi


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

论坛徽章:
0
发表于 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
发表于 2014-06-18 10:59 |显示全部楼层
回复 8# kerryxi


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

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP