您尚未登录。

楼主 #1 2021-02-19 13:52:06

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

如题

离线

#2 2021-02-19 14:02:30

拉轰的脚踏车
会员
注册时间: 2020-03-20
已发帖子: 288
积分: 222

Re: 请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

/opt/f1c100s/buildroot/output/host/sbin/mkfs.ubifs -d /opt/f1c100s/buildroot/output/build/buildroot-fs/ubifs/target -e 0x1f800 -c 2048 -m 0x800 -x lzo  -o /opt/f1c100s/buildroot_/output/images/rootfs.ubifs

/opt/f1c100s/buildroot/output/host/sbin/ubinize -o /opt/f1c100s/buildroot/output/images/rootfs.ubi -m 0x800 -p 0x20000 -s 512  /opt/f1c100s/buildroot/output/build/ubinize.cfg

好奇去看了一下buildroot log

离线

#3 2021-02-19 14:41:00

奔跑的孩子
会员
注册时间: 2021-01-28
已发帖子: 51
积分: 31.5

Re: 请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

3.制作 ubifs
Ubifs 的制作需要以下两个命令
mkfs.ubifs: 制作 UBIFS image
ubinize:根据 UBIFS image 制作 ubi.img,这个 ubi.img 是通过 u-boot 直接烧写在 nand flash 分区上的。

AM335x Linux SDK 里面带有制作好的文件系统,是.tar.gz 的压缩文件,可以解压在
一个目录下做为 UBI 文件系统内容,如/home/usr/fs。
GPEVM 板上的 NAND 型号为 MT29F2G08,page size 为 2048B,block size 为
64x2048B=131072B,block count 为 2048。如果制作针对 GPEVM 板的 ubifs,执行
如下两条命令:

1. $ mkfs.ubifs –F -q -r /home/usr/fs -m 2048 -e 126976 -c 2047 -o ubifs.img

参数简介:
-F:使能"white-space-fixup",如果是通过 u-boot 烧写需要使能此功能。
-r:待制作的文件系统目录
-m:NAND FLASH 的最小读写单元,一般为 page size
-e:LEB size,对于 AM335x 的 NAND driver,为 block size-2x(page size)
-c:文件系统所占用的最大 block 数,一般小于等于 block count -1
-o:输出的 ubifs.img 文件

2. $ ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg
参数简介:
-p:block size。
-m:NAND FLASH 的最小读写单元,一般为 page size
-o:输出的 ubi.img 文件
ubinize.cfg 为 ubinize 所需要的配置文件,内容如下:

[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_size=200MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize

4.烧写 ubifs
可通过 u-boot 命令将生成的 ubi.img(25M)烧写到 NAND FLASH 分区上,如下示
例是将 ubi.img 先存储到 SD 卡上,然后通过 u-boot 的 fatload 命令将其拷贝至内存
中。

u-boot# mw.b 0x82000000 0xFF 
u-boot# mmc rescan
u-boot# fatload mmc 0 0x82000000 ubi.img
u-boot# nand erase 0x00780000 0xF880000
u-boot# nand write 0x82000000 0x00780000 0x1E00000

5.Linux 启动设置
在 U-boot 下设置启动信息如下:

 #setenv bootargs 'console=ttyO0,115200n8 noinitrd ip=off mem=256M 
 rootwait=1 rw ubi.mtd=7,2048 rootfstype=ubifs root=ubi0:rootfs 
init=/init'

以上是转载

离线

楼主 #4 2021-02-19 15:17:17

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

Re: 请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

感谢楼上两位大佬,我大概明白了,

ubifs是用mkfs.ubifs生成的,不能直接烧录到flash,

而ubi文件是ubinize文件生成的,可以直接烧录到nand flash,

ubi文件包含上面生成的ubifs文件,并且在cfg配置文件给该img文件起一个卷名(volume name)

离线

楼主 #5 2021-02-23 14:24:51

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

Re: 请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

https://www.digi.com/support/knowledge-base/difference-between-ubifs-and-ubi-file-systems-on-c

The UBIFS image is a file system image.It works on top of a UBI volume.You cannot flash it on the raw flash device */dev/mtd*. You need to create UBI volume first and then update the volume with UBIFS image.

The UBI image is a UBI volume image. It uses the UBIFS image and some other metadata to create a volume on top of a raw flash device */dev/mtd*. In other words you can flash directly a UBI image with standard *nandwrite* command using the '/dev/mtdx' char device.

On CCWi-i.MX51 or CCWi-i.MX53 platforms , u-boot requires  UBIFS image, because the internals of u-boot will create the UBI volume and then updates it with UBIFS image.

The UBI image is meant to be used directly by the operating system (Linux/Android), but at the moment Digi use it only on Linux.

离线

楼主 #6 2021-02-23 14:28:35

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

Re: 请问 buildroot 根文件系统 ubi和ubifs有什么区别呢?

Question
What is the difference between UBI and UBIFS?
Answer
The UBI subsystem works on top of MTD devices and provides a notion of UBI volumes. UBIFS filesystem works on top of UBI volumes.
The UBIFS is done with the mkfs.ubifs command and the UBI is done with ubinize command.
SAM-BA and the U-Boot nand write.trimffs command expect a UBI file.

https://microchipsupport.force.com/s/article/What-is-the-difference-between-UBI-and-UBIFS

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn