标签:local 磁头 winhex led not error [1] order color
http://blog.chinaunix.net/uid-24774106-id-3340397.html
最近排查一个USB相关的故障,由于信息安全就不多说工作上的事情了,顺路学习了MBR的相关知识,在网上找了一些资料,现在把学习心得写下来,抛砖引玉。感谢无数前辈的分享精神。
我的U盘插入linux后被识别成了sdb4,我当时很纳闷,为什么是4,没有sdb1 sdb2 sdb3,直接就sdb4 了。linux是从哪里显示的这个4.
是这样的,sdb,这个b是有linux 动态分配的,Linux那些事儿,我是SCSI硬盘中有精彩的讲解。在Kernel代码中时sd_probe函数做的事情。linux对于scsi设备,支持sda~sdzzz,因为英文字母有26个,所以支持这么多SCSI设备
因为我的板子上,有自带的sda SCSI盘,所以我插入的U盘被识别成了sdb。为啥是sdb,LINUX是怎样防止不同的SCSI赋予同一个disk_name 呢,这就是IDR做的事情。IDR integer ID management,是管理小整数分配的。不太了解的筒子请摸我 and 再摸我
剩下的是,linux 为什么把我的U盘识别成了sdb4。这个分区的信息记录在了U盘的mbr,这就引出了我们本文的主角 MBR。
MBR,Master Boot Record的缩写,可以成为主引导记录或者主引导扇区。计算机开机之后,访问磁盘必须先访问这个MBR,获取到这个磁盘的相关信息,比如这个磁盘有几个分区啊,每个分区从哪开始,到哪结束,每个分区都是啥文件系统等等信息。
MBR是一个扇区,在磁盘的位置是(柱面,磁头,扇区)=(0,0,1)。MBR是怎么组织的呢?一个扇区512个字节(不一定,apple有文章表示,扇区大小不一定是512)。
其中从0x01BE到0x01FD这六十四个字节表示的是4个主分区的信息。每个主分区16个字节描述,这16反个字节的含义是:
其中扇区最后两个字节是0x55 0xaa,这也可以验证是否是标准的MBR。下面代码中有。
标签:local 磁头 winhex led not error [1] order color
原文地址:http://www.cnblogs.com/leaven/p/6360932.html