[Linux驱动炼成记] 07-文件系统分区

2019-02-20 17:12:03 浏览数 (1)

查看分区格式
代码语言:javascript复制
# df -hT
// ext4 文件格式
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/system          ext4            2.0G    112.4M      1.8G   6% /
devtmpfs             devtmpfs      107.2M         0    107.2M   0% /dev
tmpfs                tmpfs         116.5M         0    116.5M   0% /dev/shm
tmpfs                tmpfs         116.5M   1004.0K    115.5M   1% /tmp
tmpfs                tmpfs         116.5M     36.0K    116.5M   0% /run
/dev/data            ext4          613.9M    976.0K    568.2M   0% /data


[root@buildroot /]# df -hT
// ubifs 文件格式
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/ubi0_0          ubifs          78.7M     67.0M     11.7M  85% /
devtmpfs             devtmpfs      106.9M         0    106.9M   0% /dev
tmpfs                tmpfs         116.5M         0    116.5M   0% /dev/shm
tmpfs                tmpfs         116.5M      2.3M    114.2M   2% /tmp
tmpfs                tmpfs         116.5M     36.0K    116.5M   0% /run
/dev/ubi1_0          ubifs          86.0M     66.2M     15.4M  81% /data
/dev/ubi1_1          ubifs          16.8M     92.0K     15.8M   1% /etc/sugr
/dev/ubi1_2          ubifs          16.8M     32.0K     15.9M   0% /cache
查看具体的分区大小
代码语言:javascript复制
//ext4文件系统

cat /proc/inand
dev:    size   erasesize  name
inand01:    400000     80000 "bootloader"
inand02:   4000000     80000 "reserved"
inand03:  20000000     80000 "cache"
inand04:    800000     80000 "env"
inand05:   2000000     80000 "logo"
inand06:   2000000     80000 "recovery"
inand07:    800000     80000 "rsv"
inand08:    800000     80000 "tee"
inand09:   2000000     80000 "crypt"
inand10:   2000000     80000 "misc"
inand11:    400000     80000 "instaboot"
inand12:   2000000     80000 "boot"
inand13:  82000000     80000 "system"
inand14:  28000000     80000 "data"

//ubifs 文件系统

cat /proc/mtd 

dev:    size   erasesize  name
mtd0: 00200000 00020000 "bootloader"
mtd1: 00800000 00020000 "tpl"
mtd2: 00200000 00020000 "logo"
mtd3: 01000000 00020000 "recovery"
mtd4: 00f00000 00020000 "boot"
mtd5: 06480000 00020000 "system"
mtd6: 01400000 00020000 "config"
mtd7: 01400000 00020000 "cache"
mtd8: 14280000 00020000 "data"
计算Flash大小
代码语言:javascript复制
# cat /proc/partitions 
major minor  #blocks  name

   7        0     102400 loop0
   7        1     102400 loop1
 179        0    3702784 mmcblk0
 179        1       4096 mmcblk0p1
 179        2      65536 mmcblk0p2
 179        3     524288 mmcblk0p3
 179        4       8192 mmcblk0p4
 179        5      32768 mmcblk0p5
 179        6      32768 mmcblk0p6
 179        7       8192 mmcblk0p7
 179        8       8192 mmcblk0p8
 179        9      32768 mmcblk0p9
 179       10      32768 mmcblk0p10
 179       11       4096 mmcblk0p11
 179       12      32768 mmcblk0p12
 179       13    2129920 mmcblk0p13
 179       14     655360 mmcblk0p14
 179       96        512 mmcblk0rpmb
 179       64       2048 mmcblk0boot1
 179       32       2048 mmcblk0boot0

//计算方法
blocks 设备总块数 (1024 Bytes/block)
计算方法: blocks / 1024 = ??MB
如上: 3702784 / 1024 = 3616MB 大概3.5GB
代码语言:javascript复制
[root@buildroot /]# cat /proc/partitions
major minor  #blocks  name

  31        0       2048 mtdblock0
  31        1       8192 mtdblock1
  31        2       2048 mtdblock2
  31        3      16384 mtdblock3
  31        4      15360 mtdblock4
  31        5     102912 mtdblock5
  31        6      20480 mtdblock6
  31        7      20480 mtdblock7
  31        8     330240 mtdblock8
//计算方法
2048 8192 2048 16384 15360 102912 20480 20480 330240=518144
518144/1024=506MB
固件说明

文件系统的格式改为ext4之后,编译出来的固件有两种1

代码语言:javascript复制
// raw ext4 image 其特点是完整的ext2 分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大,编译出来的2GB
ls -alh rootfs.ext2
-rw-r--r-- 1 xxx xxx  2.0G 10月 21 17:14 rootfs.ext2

➜  images >file rootfs.ext2 
rootfs.ext2: Linux rev 1.0 ext4 filesystem data, UUID=9bcf3fbf-9dc4-4817-b18d-5dbe1b356164 (extents)

// 另一种是sparse ext2 image,是一个非常普通的dat文件。由于它将raw ext2进行稀疏描述,因此尺寸比较小(没有全零的无效填充区) 113M

ls -alh rootfs.ext2.img2simg 
-rw-r--r-- 1 xxx xxx 113M 10月 21 17:14 rootfs.ext2.img2simg

➜  images >file rootfs.ext2.img2simg 
rootfs.ext2.img2simg: Android sparse image, version: 1.0, Total of 524288 4096-byte output blocks in 1006 input chunks.
知识点
  • 为什么eMMC文件系统采用ext4格式 ? eMMC内置控制器用于处理坏块等问题,根本不需要类似ubifs文件系统中集成去处理
  • Linux下查询磁盘空间和扩充磁盘空间
  • sparse image

  1. simg2img ↩︎

0 人点赞