SylixOS块设备驱动开发(二)

gewenbin
gewenbin
gewenbin
188
文章
15
评论
2021年1月9日16:15:14 1 1,371

分区和格式化

1. 查看分区信息

块设备要想被使用首先需要进行分区,然后将分区格式化为具体的文件系统格式才能使用,分区信息是以分区表的形式保存在设备的第一个扇区末尾中:

SylixOS块设备驱动开发(二)

在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]#

 

gewenbin
  • 本文由 发表于 2021年1月9日16:15:14
  • 转载请务必保留本文链接:http://www.databusworld.cn/9935.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • liqingquan liqingquan 3

      打卡