| |
基础知识:
主引导扇区共512个字节,由
1:MBR,Master Boot Record主引导记录(1-446)
2:DPT(447-510;2字节结束位),其中64位,分成4部分,每部分16字节,记录四个主分区的记录。至于扩展分区,属于特殊的主分区,记录首个逻辑分区的位置,是个单向链表结构。

关于MBR中也就是grub的Stage1中,那446个字节,究竟那个地方记录了Stage2的相关信息,我相信我已经找到了。
应该的位置就是65-75这10个字节,当然目前没有完整的理论支持,但是我实验结果是这样的。

[root@server mbr]# grub --version
grub (GNU GRUB 0.97)

引用

测试过程:
首先已经有1个操作系统RHEL5,在此情况下提取主引导扇区。
再安装一个ubuntu7.10,覆盖MBR,再次提取主引导展区。


首先,我的RHEL5安装的boot的分区,处于/dev/hda1,分区结构如下:

/dev/hda1 /boot  ---rhel5
/dev/hda2 /      ---rhel5
/dev/hda3 /home  ---rhel5
/dev/hda4        ---Extended
/dev/hda5 swap   ---rhel5

如上所述,我用DD命令得到我的主引导扇区的信息。

[root@server mbr]# dd if=/dev/hda of=mbr.rhel5 bs=512 count=1


[root@server mbr]# hexdump mbr.rhel5
0000000 48eb 0090 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0203
0000040 0080 8000 5041 0002 0800 90fa f690 80c2
0000050 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0
0000060 2000 a0fb 7c40 ff3c 0274 c288 be52 7d7f
0000070 34e8 f601 80c2 5474 41b4 aabb cd55 5a13
0000080 7252 8149 55fb 75aa a043 7c41 c084 0575
0000090 e183 7401 6637 4c8b be10 7c05 44c6 01ff
00000a0 8b66 441e c77c 1004 c700 0244 0001 8966
00000b0 085c 44c7 0006 6670 c031 4489 6604 4489
00000c0 b40c cd42 7213 bb05 7000 7deb 08b4 13cd
00000d0 0a73 c2f6 0f80 ea84 e900 008d 05be c67c
00000e0 ff44 6600 c031 f088 6640 4489 3104 88d2
00000f0 c1ca 02e2 e888 f488 8940 0844 c031 d088
0000100 e8c0 6602 0489 a166 7c44 3166 66d2 34f7
0000110 5488 660a d231 f766 0474 5488 890b 0c44
0000120 443b 7d08 8a3c 0d54 e2c0 8a06 0a4c c1fe
0000130 d108 6c8a 5a0c 748a bb0b 7000 c38e db31
0000140 01b8 cd02 7213 8c2a 8ec3 4806 607c b91e
0000150 0100 db8e f631 ff31 f3fc 1fa5 ff61 4226
0000160 be7c 7d85 40e8 eb00 be0e 7d8a 38e8 eb00
0000170 be06 7d94 30e8 be00 7d99 2ae8 eb00 47fe
0000180 5552 2042 4700 6f65 006d 6148 6472 4420
0000190 7369 006b 6552 6461 2000 7245 6f72 0072
00001a0 01bb b400 cd0e ac10 003c f475 00c3 0000
00001b0 0000 0000 0000 0000 8404 0009 0000 0180
00001c0 0001 fe83 183f 003f 0000 209a 0006 fe00
00001d0 ffff fe83 ffff ac14 013e 8b3b 0138 0000
00001e0 1901 fe83 ffff 20d9 0006 8b3b 0138 fe00
00001f0 ffff fe05 ffff 374f 0277 0072 0b82 aa55


安装Ubuntu后的分区情况

/dev/hda1 /boot  ---rhel5
/dev/hda2 /      ---rhel5
/dev/hda3 /home  ---rhel5
/dev/hda4        ---Extended
/dev/hda5 swap   ---rhel5
/dev/hda6 /boot  ---unbutu 7.10
/dev/hda7 /      ---ubuntu 7.10

再次提取主引导记录

[root@server mbr]# dd if=/dev/hda of=mbr.u710 bs=512 count=1

查看

0000000 48eb 0090 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000010 0000 0000 0000 0000 0000 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0203
0000040 00ff 2000 0001 0000 0200 90fa f690 80c2
0000050 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0
0000060 2000 a0fb 7c40 ff3c 0274 c288 be52 7d7f
0000070 34e8 f601 80c2 5474 41b4 aabb cd55 5a13
0000080 7252 8149 55fb 75aa a043 7c41 c084 0575
0000090 e183 7401 6637 4c8b be10 7c05 44c6 01ff
00000a0 8b66 441e c77c 1004 c700 0244 0001 8966
00000b0 085c 44c7 0006 6670 c031 4489 6604 4489
00000c0 b40c cd42 7213 bb05 7000 7deb 08b4 13cd
00000d0 0a73 c2f6 0f80 ea84 e900 008d 05be c67c
00000e0 ff44 6600 c031 f088 6640 4489 3104 88d2
00000f0 c1ca 02e2 e888 f488 8940 0844 c031 d088
0000100 e8c0 6602 0489 a166 7c44 3166 66d2 34f7
0000110 5488 660a d231 f766 0474 5488 890b 0c44
0000120 443b 7d08 8a3c 0d54 e2c0 8a06 0a4c c1fe
0000130 d108 6c8a 5a0c 748a bb0b 7000 c38e db31
0000140 01b8 cd02 7213 8c2a 8ec3 4806 607c b91e
0000150 0100 db8e f631 ff31 f3fc 1fa5 ff61 4226
0000160 be7c 7d85 40e8 eb00 be0e 7d8a 38e8 eb00
0000170 be06 7d94 30e8 be00 7d99 2ae8 eb00 47fe
0000180 5552 2042 4700 6f65 006d 6148 6472 4420
0000190 7369 006b 6552 6461 2000 7245 6f72 0072
00001a0 01bb b400 cd0e ac10 003c f475 00c3 0000
00001b0 0000 0000 0000 0000 8404 0009 0000 0180
00001c0 0001 fe83 183f 003f 0000 209a 0006 fe00
00001d0 ffff fe83 ffff ac14 013e 8b3b 0138 0000
00001e0 1901 fe83 ffff 20d9 0006 8b3b 0138 fe00
00001f0 ffff fe05 ffff 374f 0277 5758 014f aa55


结论:对比观察,我认为应该在65字节至75字节,是Stage2所在分区的位置记录。

后续测试:
当安装完Ubuntu7.10后,引导的程序所引用的是/dev/hda6里面的Ubuntu7.10的启动信息,主要是grub.conf menu.lst(软连接关系)。没有背景的。
我执行了下面的操作,重写了MBR(注意:只是MBR,不要分区表,否则刚才安装的Ubuntu就没有了。),重启后,自动切换为/dev/hda1里面RHEL5的启动信息。出现了红色的背景图案。

[root@server mbr]# dd if=mbr.rhel5 of=/dev/hda bs=446 count=1





本文链接:http://www.52zhe.cn/read.php/122.htm
本文作者:kook(若就博客内所涉及的技术问题交流,请用下面的MSN或Gmail联系我)
联系方式:(MSN:kook#live.com) (Google talk:kookliu)
没有版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!
by kook | 分类: Linux | 评论(2) | 引用(0) | 阅读(2425)
sinanjj
2009/01/27 15:48
版权:GNU,转载时请注明“转载人”欠本人一顿饭,来日见面之时兑现!谢谢合作!





呵呵谢谢共享
Jason
2007/12/13 19:20
不一定,就有44.45.46.47的。
可以反汇编看看的。
kook 回复于 2007/12/14 08:23
是不是Grub版本的问题不同,或者其它什么原因的。
有时间再研究一下。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]