原创文章,转载请注明出处,谢谢!
作者:清林,博客名:飞空静渡
现在的分区就主要分为MSDOS分区和GPT分区,个人决定GPT分区最容易也最好用,说的好用是在写分区软件时,GPT分区比较舒服 :)
说一下MSDOS分区吧,今天又修改了下分区代码,久了会忘记,老是从代码里召回分区的要点,今天记一下吧!
MSDOS分区就是分成这几个:主分区,扩展分区,逻辑分区,而逻辑分区所在的扇区,数据恢复那本书说是虚拟MBR,那我也这么说吧。
首先用fdisk看下一个硬盘的分区情况:
Device Boot Start End Blocks Id System
/dev/sdc1 * 2048 206847 102400 7 HPFS/NTFS
/dev/sdc2 206848 88542144 44167648+ 7 HPFS/NTFS
/dev/sdc3 88543232 103131135 7293952 7 HPFS/NTFS
/dev/sdc4 103131136 234438655 65653760 5 Extended
/dev/sdc5 103133184 151257087 24061952 7 HPFS/NTFS
/dev/sdc6 151259136 193478655 21109760 7 HPFS/NTFS
/dev/sdc7 193480704 234438655 20478976 7 HPFS/NTFS
三主,一扩展,三逻辑,比较典型的了
分区表的结构我就不多说了,其中比较主要的两个变量是分区的偏移位置和大小,而偏移位置又根据分区的类型而不一样,下面说一下分区的偏移位置的设置问题。
大致可以分成3种。
第一种:主分区和扩展分区,其在分区表里的偏移位置变量的值是其分区在硬盘中真实的偏移位置。
第二中:逻辑分区,其偏移位置是虚拟MBR到分区的偏移距离。
第三种:虚拟MBR中的扩展分区,其偏移变量值是主分区表中的扩展分区的偏移位置(即第一个虚拟MBR)到其指向的下一个虚拟MBR的偏移值,即虚拟MBR中的扩展分区的偏移位置都是相对于主MBR中的扩展分区的位置值。
下面看一下我在写入分区表时,个分区的偏移情况,可以对比一下,红色是主分区,蓝色是扩展分区,绿色是逻辑分区
start sect: 2048, end sect: 206847, pri
start sect: 206848, end sect: 88542144, pri
start sect: 88543232, end sect: 103131135, pri
start sect: 103131136, end sect: 234438655, ext
start sect: 103133184, end sect: 151257087, log
start sect: 151259136, end sect: 193478655, log
start sect: 193480704, end sect: 234438655, log
===============================
part(0) start= 2048
part(1) start= 206848
part(2) start= 88543232
part(3) start= 103131136 -->主MBR中的扩展分区
part(4) start= 2048 2048 + 103131136 = 103133184 这个值就是这个分区的在硬盘中的实际偏移位置,如上面所示
part(4) ext start= 48127937 -->虚拟MBR中的扩展分区 48127937+103131136 = 151259073 (下一个
虚拟MBR 置)+63=151259136 (下一个分区位置,如上面数据所示)
part(5) start= 63 -->这个63是相对于 48127937这个值的
part(5) ext start= 90349505 -->虚拟MBR中的扩展分区
part(6) start= 63
part(6) ext start= 0 -->最后一个虚拟MBR中的扩展分区位置为0,声明结束