磁盘分区管理
MBR 简介
Microsoft 将使用 DOS 分区体系的磁盘称为“主引导记录(Master Boot Record,MBR)”磁盘。在一个分区表类型的磁盘中最多只能存在 4 个主分区。如果一个磁盘上需要超过 4 个以上的磁盘分块的话,那么就需要使用扩展分区了。如果使用扩展分区,那么一般为 3 个主分区+1 个扩展分区,扩展分区中可包含无限制的逻辑分区。此外,DOS 分区单卷容量最大支持 2TB。
对于使用 DOS 分区体系的磁盘,第一个扇区(0 号扇区,512 字节)为存放主引导记录(MBR)的扇区。当计算机启动并完成自检后,首先会寻找磁盘的 MBR 并读取其中的引导记录,然后将系统控制权交给它。
MBR 由 446 个字节的引导代码、64 字节的主分区表以及两字节的签名值“55AA”组成。如下表所示:
字节偏移 | 字节数 | 描述 |
---|---|---|
00~1BD | 446 | 引导代码 |
1BE~1CD | 16 | 分区表项 1 |
1CE~1DD | 16 | 分区表项 2 |
1DE~1ED | 16 | 分区表项 3 |
1EE~1FD | 16 | 分区表项 4 |
1FE~1FF | 2 | 签名值(55AA) |
- 引导代码:MBR 获得系统的控制权后,引导代码对其他代码信息进行检查,如查看是否有“55AA”有效标记,并进一步引导系统。
- 分区表:描述磁盘内的分区情况。
- “55AA”有效标志:“55AA”标志通知系统,该 MBR 扇区是否有效,如果该标志丢失或损坏,磁盘将会显示为未初始化。
其中分区表区域占 64 个字节,分为 4 个分区表项。各个表项描述了一个 DOS 分区,最多可描述 4 个主分区。分区表项与物理分区没有顺序上的对应关系,操作系统会完整的对 4 个分区表项进行检索,根据每个分区表项的描述定位物理分区。分区表项的详细结构如下表所示:
字节偏移 | 字节数 | 描述 |
---|---|---|
00~00 | 1 | 可引导标志(0x80:可引导,0x00:不可引导) |
01~03 | 3 | 分区起始 CHS 地址 |
04~04 | 1 | 分区类型 |
05~07 | 3 | 分区结束 CHS 地址 |
08~0B | 4 | 分区起始 LBA 地址(Little-endian 顺序) |
0C~0F | 4 | 分区大小扇区数(Little-endian 顺序) |
磁盘命令说明
fdisk
fdisk 命令可以显示磁盘分区或为磁盘设备创建分区表。
命令格式:
fdisk [-f] [block I/O device]
常用选项:
-f:指定磁盘设备
参数说明:
block I/O device:块设备,如/dev/blk/sdcard0
下面是 fdisk 命令的使用方法:
显示 udisk0 分区表:
fdisk /dev/blk/udisk0
创建分区表:
fdisk -f /dev/blk/udisk0
fdisk 最多可创建 4 个分区(分区数:1~4),每个分区的大小需指出其百分比值(如 40%),可选择指定的分区是否为活动分区(包括:活动和非活动),目前支持的文件系统类型包括:
1:FAT。
2:TPSFS(SyilxOS 掉电安全文件系统)。
3:LINUX。
mkfs
在 SylixOS 中,可以使用 mkfs 命令来格式化指定磁盘。
命令格式:
mkfs media name
常用选项:
无
参数说明:
media name: 磁盘名称
下面是 mkfs 命令格式化 sdcard0:
#mkfs /media/sdcard0/
now format media, please wait..
disk format ok
mkgrub
在 SylixOS 中,可以使用 mkgrub 命令来对指定磁盘写入 GRUB 引导区程序。
命令格式:
mkgrub [block I/O device]
常用选项:
无
参数说明:
block I/O device: 块设备文件
下面是 mkgurb 向 hdd-0 写入 GRUB 引导区程序:
# mkgrub /dev/hdd0/
Make disk grub boot program