分区和格式化
1. 查看分区信息
块设备要想被使用首先需要进行分区,然后将分区格式化为具体的文件系统格式才能使用,分区信息是以分区表的形式保存在设备的第一个扇区末尾中:
在x86平台的磁盘上,上图中紫色的部分是系统启动用的引导代码,在其他平台上这段空间数据无意义,红色的部分就是分区表了,每个分区信息用16B来描述,总共可以描述4个分区的信息。
在SylixOS中可以使用 fdisk 命令来查看块设备的分区信息:
[root@sylixos:/]# fdisk /dev/blk/sdcard-0 block device : /dev/blk/sdcard-0 block type : SD/MMC block serial : DEADBEEF block firmware: 2006.02, v0.1 block product : QEMU! SDSC memory card block media : SDSC(v1.0), 512(R) 512(W) partition >> PART ACT SIZE(KB) OFFSET(KB) TYPE ---- --- ---------- ---------- ------------------------------------- 0 * 261120 1024 SylixOS True Power Safe Partition total partition 1 [root@sylixos:/]#
- PART:表示这是第几个分区。
- ACT:此分区是否是激活分区。
- SIZE:分区的大小,单位是KB。
- OFFSET:分区的起始位置,单位是KB。在SylixOS中设备前1MB的空间是预留的,分区是从1MB偏移位置开始的。
- TYPE:分区的文件系统类型,在SylixOS下块设备一般使用2种文件系统:FATFS(FAT12、FAT16、FAT32),TPSFS。
2. SylixOS分区操作
在SylixOS中同样通过 fdisk 命令来对一个块设备进行分区操作,我们这里通过分区一个虚拟块设备来体验下如何进行分区,后面章节会详细地分析这个虚拟块设备的代码。
虚拟块设备的名字为 vdisk-0 :
[root@sylixos:/dev/blk]# ll brw-r--r-- root root Sat Jan 01 09:09:00 2000 20MB, vdisk-0 brw-r--r-- root root Sat Jan 01 08:00:00 2000 256MB, sdcard-0 total items: 2 [root@sylixos:/dev/blk]#
通过 fdisk -f 命令进行分区,首先会提示需要分几个区,这里以3个为例:
[root@sylixos:/root]# fdisk -f /dev/blk/vdisk-0 block device /dev/blk/vdisk-0 total size: 20 (MB) please input how many partition(s) you want to make (1 ~ 4) : 3
接着输入块的对齐大小,典型值为4096:
please input how many bytes align (4K 8K ...) : 4096
第一个分区我们设置为2MB大小的非激活保留分区:
please input the partition 0 size percentage(%) or capacity(M) 0 means all left space : 2M is this partition active(y/n) : n please input the file system type 1: FAT 2: TPSFS 3: LINUX 4: RESERVED 4
第二个分区我们将剩余磁盘容量的10%设置为FAT文件系统:
please input the partition 1 size percentage(%) or capacity(M) 0 means all left space : 10 is this partition active(y/n) : y please input the file system type 1: FAT 2: TPSFS 3: LINUX 4: RESERVED 1
第三个分区我们将剩余的容量都设置为TPSFS文件系统:
please input the partition 2 size percentage(%) or capacity(M) 0 means all left space : 0 is this partition active(y/n) : y please input the file system type 1: FAT 2: TPSFS 3: LINUX 4: RESERVED 2
输入0就表示将剩余空间都设置为一个分区。
随后会给出新分出的三个分区信息:
making partition... block device : /dev/blk/vdisk-0 block type : <unkown> block serial : N/A block firmware: N/A block product : N/A block media : N/A partition >> PART ACT SIZE(KB) OFFSET(KB) TYPE ---- --- ---------- ---------- ------------------------------------- 0 2048 1024 Reserved partition 1 * 1944 3072 Win95 FAT32 Partition 2 15464 5016 SylixOS True Power Safe Partition total partition 3 [root@sylixos:/root]#
3. SylixOS格式化分区操作
块设备分区完成之后需要挂载到某个目录下,通过 remount 命令对块设备进行挂载:
[root@sylixos:/root]# [root@sylixos:/root]# remount /dev/blk/vdisk-0 Block device /dev/blk/vdisk-0 part 1 mount to /media/vdisk0 use vfat file system. Magic number error, mount failed Block device /dev/blk/vdisk-0 part 2 mount to /media/vdisk1 use tpsfs file system. [root@sylixos:/root]#
挂载TPSFS分区时,会报出一个Magic number error, mount failed,这个是正常现象,无需担心。
通过输出信息可以知道,虚拟块设备的两个分区被挂载到 /media/vdisk0 和 /media/vdisk1 下,我们通过 mkfs 命令来格式化这两个分区:
[root@sylixos:/root]# mkfs /media/vdisk0/ now format media, please wait... disk format ok. [root@sylixos:/root]# [root@sylixos:/root]# [root@sylixos:/root]# [root@sylixos:/root]# mkfs /media/vdisk1/ now format media, please wait... disk format ok. [root@sylixos:/root]#
格式化完成之后可以通过 df 命令查看分区容量使用情况:
[root@sylixos:/root]# df /media/vdisk0 VOLUME TOTAL FREE USED RO FS TYPE -------------- --------- --------- ---- -- --------------------------------- /media/vdisk0 1690.00KB 1688.00KB 0% n FAT12 FileSystem [root@sylixos:/root]# df /media/vdisk1 VOLUME TOTAL FREE USED RO FS TYPE -------------- --------- --------- ---- -- --------------------------------- /media/vdisk1 14.12MB 13.74MB 2% n True Power Safe FileSystem [root@sylixos:/root]#
4. 查看挂载信息
通过 showmount 命令查看系统中所有块设备的挂载情况;
[root@sylixos:/root]# showmount AUTO-Mount point show >> VOLUME BLK NAME -------------------- -------------------------------- /media/vdisk1 /dev/blk/vdisk-0:2 /media/vdisk0 /dev/blk/vdisk-0:1 /media/sdcard0 /dev/blk/sdcard-0:0 MTD-Mount point show >> VOLUME BLK NAME -------------------- -------------------------------- Mount point show >> VOLUME BLK NAME -------------------- -------------------------------- /ram 0 [root@sylixos:/root]#
5. 卸载分区
如果要对一个块设备重新分区,首先需要将已经挂载的分区进行卸载,然后才能重新分区格式化。可以先通过 showmount 命令查看块设备的各个分区挂载情况,然后通过 umount 命令来卸载所有分区:
[root@sylixos:/root]# umount /media/vdisk0 [root@sylixos:/root]# umount /media/vdisk1 [root@sylixos:/root]#
2022年2月10日 19:39 1F
打卡