NUC972调试笔记之NAND分区调整新增

新增需求如下:
1.增加 tmpfs 文件系统格式的 /var 分区,大小2M
2.新增 ubi分区,/data,大小30M

1.通过boot分区,如下所示:
原始分区结构如下:
可以看到原始分区一个以mtd=1作为root的ubi0:rootfs分区作为root rootfs大小是0x7900000,以偏移0x700000开始计算。
修改分区前的环境变量
做如下分区修改:
新增一个以mtd=2作为data的ubi1:data分区作为data data大小是0x1E00000,以偏移0x6200000开始,这里注意下原先的rootfs分区大小变化了,这是因为该nand总共大小只有128M,因此若需要新增一个分区大小30M的,就必须把原先的rootfs减小了。可见现在rootfs分区大小为0x5B00000,以同样以偏移0x700000开始计算。
在这里插入图片描述

以上只是把nand进行mtd分区了,因此在开机log中和开机后可以做如下查看:
在这里插入图片描述
在这里插入图片描述

开始进行ubifs格式分区挂载:
ubiattach /dev/ubi_ctrl -m 2
ubimkvol /dev/ubi1 -N data -s 27262976
mount -t ubifs ubi1_0 /data

ps:粗略解释下上述命令含义,详情可参考后附参考众链接。
ubiattach /dev/ubi_ctrl -m 2 : -m 2 就是使用mtd=2的分区
ubimkvol /dev/ubi1 -N data -s 27262976 : 创建ubi1设备名叫data,大小是27262976
mount -t ubifs ubi1_0 /data : 将ubifs格式的ubi1_0设备挂载到data

这里注意几点:分区大小要和配置的uboot环境变量大小以及制作的文件系统大小相等,切不可文件系统大小大于分区大小。
ubifs文件系统制作时候的命令可参考如下:

#这里需要注意-c选项的参数,这里480意为60M(60M=480=60*1024/128=480)
mkfs.ubifs -F -x lzo -m 2048 -e 126976 -c 480 -o rootfs_ubifs.img -d ./rootfs  #60M
#这里rootfs_ubinize.cfg文件是ubinize命令所需的参数之一,意为rootfs分区的配置文件用来生成ubi文件系统镜像,详情如后:
ubinize -o ubi_ln.img -m 2048 -p 131072 -O 2048 -s 2048 rootfs_ubinize.cfg

NUC972调试笔记之NAND分区调整新增_第1张图片
NUC972调试笔记之NAND分区调整新增_第2张图片
这里的vol_size需要注意是size,很多网文说可以直接写xxM,如 vol_size=60M,这里实测是不行的必须换算成size,即60M=62914560=6010241024

挂载完成:
可用mount 和 df -h 查看如下:
NUC972调试笔记之NAND分区调整新增_第3张图片
NUC972调试笔记之NAND分区调整新增_第4张图片

这里另附下tmpfs分区的新增,如下所示:

/bin/mount tmpfs /var -t tmpfs -o size=2M

最终效果如下:
NUC972调试笔记之NAND分区调整新增_第5张图片
这里说明下:实际分出来的data是30M,好像看网上说ubi实际好像会小点,这里有明白的大佬望不吝赐教。

参考资料:
1.【Linux】【驱动】MTD分区表信息解析方法分析
2.u-boot中添加mtdparts支持以及Linux的分区设置
3.u-boot中nand相关命令使用---- ubi, ubifsls, ubifsmount, ubifsumount
4.NUC972 MTD分区详解(UBI error: vtbl_check: too large reserved_pebs 824, good PEBs 512 错误分析)
5.UBI分区挂载
6.UBIFS分区挂载
7.挂载ubifs文件系统分区
8.UBI error: ubi_create_volume: cannot create volume 1, error -28
9.Ubifs文件系统和mkfs.ubifs以及ubinize工具的用法
10.Linux下的tmpfs文件系统(/dev/shm)
11.【Linux】tmpfs简介及增加方式
12.[AndroidO] [RK3399] – Rockchip 平台 parameter.txt 文件详解

你可能感兴趣的:(NCU972调试笔记,Linux,linux,嵌入式,nuc972,新塘)