UBI文件系统制作和挂载

关于参数可以参考attach的命令输出:
root@ubuntu:~# ubiattach  /dev/ubi_ctrl -m 4 -d 0
UBI device number 0, total 4000 LEBs (516096000 bytes, 492.2 MiB), available 0LEBs (0 bytes), LEB
size 129024 bytes (126.0 KiB)
root@ubuntu:~# 
ubinize.cfg文件
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=450MiB --》一般要比真实的size要小
vol_type=dynamic
vol_alignment=1
vol_name=rootfs
vol_flags=autoresize

5. UBI文件系统镜像在Linux下的烧写
flash_eraseall /dev/mtd4
ubiformat /dev/mtd4 -s 512 -f /xxx/ubi.img

6、 UBI文件系统镜像在U-BOOT下的烧写
//load ubi image to RAM
tftp ubi.img
//erase MTD4 nand space
nand erase 0x6c0000 0xc820000
//write image to nand
nand write.i 0x81000000 0x6c0000 0xxxxx(image size)

7. UBI文件系统镜像在Linux下的挂载和卸载

挂载
ubiattach /dev/ubi_ctrl -m 4 -d 0
mount -t ubifs ubi0_0 /mnt/ubi

卸载
umount /mnt/ubi
ubidetach -d 0

8、使用ubi做根文件系统
需要在bootargs中设置如下信息:
  root=ubi0:rootfs ubi.mtd=4 rootfstype=ubifs

 

 配置linux内核
           配置的时候选上
          1)Device Drivers --->Memory Technology Device (MTD) support  --->UBI - Unsorted blockimages  --->Enable UBI
          2)File systems --->Miscellaneous filesystems  --->UBIFS file system support
          这样我们的内核就支持UBIFS文件系统了

 

9、ubi命令

在mtd-utils/ubi-utils中生成的工具是针对UBIFS的,包含:

(1)mtdinfo: 输出指定的mtd分区的信息, 该命令只对可读的设备分区有效。

用法: ./mtdinfo /dev/mtd1

 

(2)ubinfo:  输出指定的ubi设备的信息,不带参数时,输出系统所有的ubi设备以及ubi控制设备信息。ubi控制设备即/dev/ubi_ctrl是一个字符设备,在后面还将用到。

用法:./ubinfo

      ./ubinfo/dev/ubi0

 

(3)ubiformat:格式化指定的mtd分区, 参数使用的是mtd的字符设备

用法:./ubiformat /dev/mtd1

 

(4)ubiattach:将指定的mtd分区关联到ubi上

用法:./ubiattach /dev/ubi_ctrl -m 1, 将mtd1关连ubi

 

(5)ubidetach:解除mtd与ubi的关联

用法:./ubidetach /dev/ubi_ctrl -m 1

 

(6)ubimkvol:创建一个voluem,volume才是最终用户挂载文件系统的地方。

用法:在ubi2上创建4个olume,每个大小是20M, 名字分别为my_vol_a, my_vol_b, my_vol_c, my_vol_d.

./ubimkvol/dev/ubi2 -s 20Mib -N my_vol_a

./ubimkvol/dev/ubi2 -s 20Mib -N my_vol_b

./ubimkvol/dev/ubi2 -s 20Mib -N my_vol_c

./ubimkvol/dev/ubi2 -s 20Mib -N my_vol_d

 

(7)ubirename: 更改ubi某个olume的名字,或者完成两个volume的互换

用法:

(1)将ubi2上名字为my_vol_a的volume名字改为my_vol_newname

./ubirename /dev/ubi2my_vol_a my_vol_newname

(2)将ubi2上名字为my_vol_b和my_vol_c的两个volume互换,

./ubirename/dev/ubi2 my_vol_b my_vol_c my_vol_c my_vol_b

 

(8)ubirmvol: 删除某个volume,可以通过名字或id指定具体的volume

用法: ./ubirmvol /dev/ubi2 -n 1
或./ubirmvol /dev/ubi2 -N my_vol_d

 

(9)ubinize: 创建ubi image。

用法: ./ubinize -o myubi.img -p 126976 -m 2048my.ini

其中, -p, 指定的是目标flash的physical eraseblock的大小

       -s,指定的是目标flash的minimum input/output unit 的大小, 这两个参数的值可以通过“cat /sys/class/ubi/ubi2/*”得到

       my.ini是配置文件,其中指定了原文件,目标volume的大小、名字等。其格式如小:

[jffs2-volume]
mode=ubi
image=../jffs2.img
vol_id=1
vol_size=30MiB
vol_type=dynamic
vol_name=jffs2_volume
vol_flags=autoresize
vol_alignment=1

(10)ubiupdatevol: 向指定的volume上写数据

用法:./ubiupdatevol /dev/ubi2_0 myubi.img

 

 

 

 data:ubifs.img 
ubinize -o datafs.img -m 2048 -p 128KiB -s 512 -O 2048 ubinize.cfg
ubifs.img:
mkfs.ubifs -r ./data/ -o ubifs.img -m 2048 -e 126976 -c 148

 

 

 

 

 

 

 

 

 

 

                            4层结构说明

你可能感兴趣的:(linux)