mbr位置:位与0磁道,0磁头,1扇区。
为什么是1扇区呢,因为扇区的编号是从1开始计算的,mbr就是硬盘的前512字节.0磁道也就是0柱面,0磁道位与硬盘的最磁道,最外磁道的数据比较稀疏,数据可靠性高,所以用来存放关键性的代码。
mbr的作用:系统在启动进入bios后,首先自检(post),然后初始化硬件(init),然后扫描硬盘启动项,扫描到启动盘后,copy前512字节到内存0x7c00,将控制权交给mbr。这样系统就开始启动了。
mbr512字节的组成:一个MBR总共由四个部分组成。
1、主引导程序。负责从活动分区中装载,并运行系统引导程序。(137字节)
2、数据区。 (309字节)
3、分区表。共64字节为分区项1、分区项2、分区项3、分区项4。(64字节)
4、结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。(2字节)
0000-0088 | Master Boot Record 主引导程序 | 主引导 程序 |
0089-01BD | 出错信息数据区 | 数据区 |
01BE-01CD | 分区项1(16字节) | 分区表 |
01CE-01DD | 分区项2(16字节) | |
01DE-01ED | 分区项3(16字节) | |
01EE-01FD | 分区项4(16字节) | |
01FE | 55 | 结束标志 |
01FF | AA |
程序流程:
1 将程序代码由0:7C00H移动到0:0600H(注,BIOS把MBR放在0:7C00H处)
2 搜索可引导分区,即80H标志
成功:goto 3
失败:跳入ROM BASIC
无效分区表:goto 5
3 读引导扇区
失败:goto 5
成功:goto 4
4 验证引导扇区最后是否为55AAH
失败:goto 5
成功:goto 6
5 打印错误进入无穷循环
6 跳到0:7C00H进行下一步启动工作
最后送给大家一个读取磁盘数据的命令,可以查看硬盘前512字节的数据,供大家深入了解mbr
# dd if=/dev/hda of=mbr.bin bs=512 count=1
# od -xa mbr.bin
dd命令是copy磁盘的命令,if输入文件,of输出文件,bs一个块的大小,count读取块的数量
od命令和hexdump命令相似,参数x代表16进制,x1代表用一个字符标识,-t标识显示的format,A标识基质的format
今天到此为止,好久不写博客了,好久不进步了,反省ing。。。。。。。。