U盘(F:) 是个神马玩意?
哦,上面那个 U盘(F:) 就是这里的 【未分配】,4M 大小,也就是 /dev/sdc
$ ls /dev/sdc*
/dev/sdc /dev/sdc1
来看看这 4M 是个神马玩意,
liyongjun@Box:~/project/board/IMX6ULL/uboot/alientek_uboot$ sudo dd if=/dev/sdc of=f.bin bs=1M count=4
[sudo] liyongjun 的密码:
记录了4+0 的读入
记录了4+0 的写出
4194304字节(4.2 MB,4.0 MiB)已复制,0.0578493 s,72.5 MB/s
liyongjun@Box:~/project/board/IMX6ULL/uboot/alientek_uboot$ sudo hexdump -C f.bin
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 b6 c0 61 80 00 00 00 82 |..........a.....|
000001c0 03 00 0b dc d4 c8 00 20 00 00 00 60 ed 00 00 00 |....... ...`....|
000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00400000
哦吼,整个4M就这一点数据,比我的脸还干净。
分析一下:
起始扇区号:0x00002000 = 8192,也就是 4M 位置(512 * 8192)
该分区扇区总数:0x00ed6000 = 15556608,也就是 7.4G,和上图完全吻合
U盘(G:) 对应 /dev/sdc1,看下其开头 512 字节信息
DBR:
偏移 长度 说明
0x00 3 跳转指令(跳过开头一段区域)
0x03 8 OEM名称常见值是MSDOS5.0.
0x0b 2 每个扇区的字节数。取值只能是以下几种:512,1024,2048或是4096。设为512会取得最好的兼容性
0x0d 1 每簇扇区数。 其值必须中2的整数次方,同时还要保证每簇的字节数不能超过32K
0x0e 2 保留扇区数(包括启动扇区)此域不能为0,FAT12/FAT16必须为1,FAT32的典型值取为32
0x10 1 文件分配表数目。 NumFATS,任何FAT格式都建议为2
0x11 2 最大根目录条目个数, 0 for fat32, 512 for fat16
0x13 2 总扇区数(如果是0,就使用偏移0x20处的4字节值)0 for fat32
0x15 1 介质描述 0xF8 单面、每面80磁道、每磁道9扇区
0xF9 双面、每面80磁道、每磁道9扇区
0xFA 单面、每面80磁道、每磁道8扇区
0xFB 双面、每面80磁道、每磁道8扇区
0xFC 单面、每面40磁道、每磁道9扇区
0xFD 双面、每面40磁道、每磁道9扇区
0xFE 单面、每面40磁道、每磁道8扇区
0xFF 双面、每面40磁道、每磁道8扇区
无沦此域写入什么数值,同时也必须在FAT[0]的低字节写入相同的值,这是因为早期的MSDOS 1.x使 用该字节来判定是何种存储介质
0x16 2 每个文件分配表的扇区(FAT16),0 for fat32
0x18 2 每磁道的扇区, 0x003f
0x1a 2 磁头数,0xff
0x1c 4 隐藏扇区, 与MBR中地址0x1C6开始的4个字节数值相等
0x20 4 总扇区数(如果超过65535使用此地址,小于65536参见偏移0x13,对FAT32,此域必须是非0)
0x24 4 每个FAT表占用扇区数。(FAT32特有)
0x24 1 物理驱动器个数(FAT16),由操作系统决定
0x25 1 当前磁头(FAT16),格式化FAT卷时必须设为0
0x26 1 签名(FAT16),扩展引导标记(0x29)用于指明此后的3个域可用
0x27 4 ID (FAT16)
0x28 2 Flags (FAT32特有)
Bits0-3:不小于0的FAT(active FAT)数目,只有在镜像(mirrorig)禁止时才有效。
Bits 4-6: 保留
Bits 7: 0,FAT实时镜像到所有的FAT表中,1 ,只有一个活动的FAT表。这个表就是Bits0-3所指定的
Bits8-15:保留
0x2a 2 版本号 (FAT32特有)
0x2c 4 根目录起始簇 (FAT32),一般为2
0x2b 11 卷标(非FAT32)
0x30 2 FSInfo 扇区 (FAT32) bootstrap
0x32 2 启动扇区备份 (FAT32)如果不为0,表示在保留区中引导记录的备数据所占的扇区数,通常为6同时不建议使用6以外的其他数值
0x34 2 保留未使用 (FAT32) 此域用0填充
0x36 8 FAT文件系统类型(如FAT、FAT12、FAT16)含"FAT"就是PBR,否则就是MBR
0x3e 2 操作系统自引导代码
0x40 1 BIOS设备代号 (FAT32)
0x41 1 未使用 (FAT32)
0x42 1 标记 (FAT32)
0x43 4 卷序号 (FAT32)
0x47 11 卷标(FAT32)
0x52 8 FAT文件系统类型(FAT32)
0x1be 64 partitions table, DOS_PART_TBL_OFFSET
0X1BE ~0X1CD 16 talbe entry for Partition 1
0X1CE ~0X1DD 16 talbe entry for Partition 2
0X1DE ~0X1ED 16 talbe entry for Partition 3
0X1EE ~0X1FD 16 talbe entry for Partition 4
talbe entry for Partition:
Offse length content
0 1 boot indicator(80h=active)
1 3 start chs , (Cylinder, Head, Sector )
4 1 type descriptor(0x0b is 32bit fat,0x83 is ext2/3/4 )
5 3 end chs
8 4 start sector
12 4 partition size(unit is sectors)
0x1FE 2 扇区结束符(0x55 0xAA) 结束标志:MBR的结束标志与DBR,EBR的结束标志相同。