导航:首页 > 文件目录 > 制作ubi文件系统

制作ubi文件系统

发布时间:2023-04-11 05:40:41

1. ubi 和yaffs文件系统的区别

近日,阅读著名通讯半导体公司——博通公司(broadcom)的资料时,发现他们提供的linux系统中使用了一种名为ubi的文件系统。怀着好奇心,在网上搜索下ubi文件系统的资料。
网上关于ubi文件系统的介绍,大多数是华清远见刘洪涛老师所写的文章。该文章主要介绍了ubi文件系统产生的背景和用法。不过,本文将从一个认识的角度来了解ubi文件系统。

一、 UBI/UBIFS产生背景
FLASH具有的逗先擦除再写入地、坏块、逗有限的读写次数地等特性,目前管理FLASH的方法主要有:
1、 采用MTD+FTL/NFTL(flash 转换层/nand flash转换层)+ 传统文件系统,如:FAT、ext2等。FTL/NFTL的使用就是针对FLASH的特有属性,通过软件的方式来实现日志管理、坏块管理、损益均衡等技 术。但实践证明,由于知识产权、效率等各方面因素导致本方案有一定的局限性。
2、采用硬件翻译层+传统文件系统的方案。这种方法被很多存储卡产品采用,如:SD卡、U盘等。这种方案对于一些产品来说,成本较高。
3、采用MTD+ FLASH专用文件系统,如JFFS1/2,YAFFS1/2等。它们大大提高了FLASH的管理能力,并被广泛应用。
JFFS2、YAFFS2等专用文件系统也存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等。在此背景下内核加入了UBI文件系统的支持。
二、UBI/UBIFS简单介绍
由于超大容量Nand Flash的普及,YAFFS等皆无法再去控制Nand Flash的空间,于是在2006年由IBM与Nokia的工程师Thomas Gleixner,Artem Bityutskiy设计开发了UBI及其UBIFS文件系统,专门为了解决MTD(Memory Technology Device)设备所遇到的瓶颈。UBIFS通过子系统UBI处理与MTD device之间的动作。与JFFS2一样,UBIFS 建构于MTD device 之上,因而与一般的block device不兼容。
其中,UBI是一种类似于LVM的逻辑卷管理层。主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等。而UBIFS是一种基于UBI的FLASH日志文件系统。
一句话解读就是,UBIFS及其使用的UBI子系统,是一种用在大容量flash上的文件系统。
三、UBI/UBIFS的特点

2. ubifs文件系统挂载失败,该怎么处理

UBIFS是nokia工程师在the university of Szeged大学帮助下开发的新的flash file system。UBIFS可以认为是JFFS2文件系统的下一代。

ubifs文件系统挂载失败的原因有很多,大多是以下原因导致的:

1、在uboot里,setenvnand_rootubi0:rootfsrwubi.mtd=2,2048

2、制作imgae时,mkfs.ubifs-c这个参数要仔细计算,些参数影响较大,再就是改一下ubinize.cfg这个文件的相关参数

3、开发用了gpio结果一个复用io被改了,结果造成nandreadonly,这个是驱动造成的,改一下内核驱动就可以

4、在uboot下少写rootfs的时候,没有跳过坏块导致

3. 如何制作UBI文件系统以及制作UBI文件系统相关的资料

文件系统制作错了隐橘吧,与你nand类隐携数型不匹配,还有可能是灶首ECC不匹配,也就是你烧写工具(uboot)的ECC和你内核使用的ECC类型不一样

4. 挂载为ubi文件系统后,怎么再挂载成jffs2

df-T只可以来查看已经挂载的分区源和文件系统类型。fdisk-l可以显示出所有挂载和未挂载的分区,但不显示文件系统类型。parted-l可以查看未挂载的文件系统类型,以及哪些分区尚未格式化。lsblk-f也可以查看未挂载的文件系统类型。

5. 为啥ubstore中botscript.dl加载失败

因为ubi文件系统制作过大的原因。
方法是打开对我的电脑,找到优盘。右键格式化。文件系统默认为FAT32,将纯神其做唤亏更改为NTFS,然后点击格式化。格式化完成后右键优盘,属性,发现文件系统改为NTFS,然后链猜在进行复制便可以了。
UBI文件系统:无排序区块镜像文件系统是用于固态存储设备上,并与LogFS相互竞争,作为JFFS2的后继文件系统之一。

6. ubifs文件系统挂载失败,该怎么处理

1、在kernel中添加ubifs文件系统相关的选项 2、制作ubifs.img文件并烧写经nand flash,但是就是并梁物挂载不上,请大虾帮忙分析,谢谢 ------解决方案绝液-------------------- 1. 制作ubi image的命令行,reference: https://github.com/voiceshen/scripts4linux/tree/master/ubifs 2. 启动系统的命令行参数。 ------解决方案-------------------- 1.在uboot里,setenv nand_root ubi0:rootfs rw ubi.mtd=2,2048 2.制作imgae时,mkfs.ubifs -c 这个参数要仔细计算,些参数影响较大,再就是改一下ubinize.cfg这个文件的相关参数 3.再说一个我遇到的,开发用了gpio结果一个复用io被改了,结果造成nand read only,这个是驱动造成的,改一下内核驱动就可渣早以了。

7. 如何制作UBI文件系统以及制作UBI文件系统相关的资料

ramdisk 出错。既然自己编译 linux 内核,不推荐使用randisk,只使用内核就行,在编译内核时一定要将自己使用的文件系统编译进首雹内核,引导时,内核后跟主分区的橘芹巧设备名就行,ramdisk的作用就是加载内核驱动的圆键,把文件系统驱动直接编译进内核,就不需要 ramdisk 了。

8. 如何挂载ubi文件系统

如何挂载ubi文件系统

Linux 系统中有关mtd和ubi的接口:
(1) cat /proc/mtd:可以看到当前系统的各个mtd情况,
(2) cat /proc/partitions: 分区信息,有上面的类似
(3) cat /sys/class/ubi/ubi0/*:当前系系统的ubi情况
(4) ls /dev/*, 查看设备节点

假设我们想在mtdblock1上加载ubifs文件系统,步骤如下:
(1)./ubiformat /dev/mtd1 -----格式化mtdblock1
(2)./ubiattach /dev/ubi_ctrl -m 1 -----将mtdblock1与ubi建立连接,命令输出如下:
[ 977.342492] UBI: attaching mtd1 to ubi2
[ 977.346417] UBI: physical eraseblock size: 131072 bytes (128 KiB)
[ 977.352631] UBI: logical eraseblock size: 126976 bytes
[ 977.357948] UBI: smallest flash I/O unit: 2048
UBI device number 2, total 2000 LEBs (253952000 bytes, 242.2 MiB), available 1976 LEBs (250904576 bytes, 239.3 MiB), LEB size 126976 bytes (124.0 KiB)

系统自动将mtd1关连到ubi2上,假设系统中已经存在ubi0, ubi1了。

(3) ls /sys/class/ubi/ -----可以看到该目录下增加了一个ubi2的子目录
(4) cat /sys/class/ubi/ubi2/dev -----可以得到该ubi2设备的主次设备号,如249:0
(5) cat /sys/class/ubi/ubi2/volumes_count -----结果为0,表示该ubi上没有任何volume
(6) ls /dev/ubi* -----如果/dev中没有ubi2, 则手工创建“mknod /dev/ubi2 c 249 0”
(7) ./ubimkvol /dev/ubi2 -s 100MiB -N my_ubi_vol -----在ubi2上创建一个volume
(8) ls /sys/class/ubi/ -----可以看到该目录下增加一个ubi2_0的目录,代表ubi2上的第一个volume,如果哦“cat /sys/class/ubi/ubi2_0/name”, 你可以得到“my_ubi_vol”,这就是(7)中的名字。
(9) cat /sys/class/ubi/ubi2_0/dev -----得到该volume的主次设备号,如249:1
(10) mknod /dev/ubi2_0 c 249 1 -----如果/dev中没有ubi2_0, 则需要手工创建
(11) mount -t ubifs ubi2_0 /mnt -----将ubi2_0挂载到本地目录 /mnt上,
(12) mount -----可以看到ubi2_0成功挂载在/mnt上。

至此ubifs 装载成功。

9. 开发板怎么烧android系统

首先是友善之臂的Mini6410,它提供了两种Boot,一种是移植的三星提供U-Boot1.1.6,这个版本不支持UBI文件系统的烧写,他们自己做了个superboot,支持UBI,但是不开源,没用过。

然后就是飞凌的OK6410,他们使用的也是三星提供的U-Boot,不支持UBI。所以想出另外的方式来烧写。他们的烧写使用了自己的 SD卡烧写工具:SD_Writer,首先烧写了一个mmc.bin和一个zImage-sd的文件到SD卡中,前者mmc.bin其实就是用于SD卡启动的,后者zImage-sd是一个内核文件。我们首先来看看mmc.bin做了哪些事情,从SD卡启动,进入U-Boot的下载模式,使用printenv打印环境变量,可得:

SMDK6410 # printenv
bootargs=rootdelay=0 console=ttySAC0,115200
bootcmd=nand erase;
fatload mmc 0:1 0x50008000 u-boot.bin;nand write.uboot 0x50008000 0 0x100000;
fatload mmc 0:1 0x50008000 zImage;nand write.e 0x50008000 0x100000 0x500000;
movi read kernel 0x50008000;bootm 0x50008000
从上面得bootcmd可以知道做的事情分四步:
1、擦除整个NAND Flash;

2、从SD卡中将u-boot.bin文件下载到内存中,然后烧写到NAND Flash上;

3、从SD卡中将zImage下载到内存中,然后烧写到NAND Flash上;

4、从SD卡读取内核(不是上一步烧写的zImage,而是之前使用SD卡烧写工具烧写的zImage-sd)到内存,然后启动这个内核。而启动参数就是上面的bootargs所显示。

进入这个内核之后,就会进入下面这个命令行,

可能有人会觉得之前烧写了U-Boot和zImage-sd到SD卡上,并没有烧写文件系统,那这个内核怎么启动呢?这里我们看一下命令提示符前面“initramfs”这几个字符就明白了。

所有的2.6版本linux内核都有一个特殊的文件系统rootfs,是内核启动的初始始根文件系统,initramfs的文件会复制到rootfs。如 果把initramfs比作种子,那么rootfs就是它生长的土壤。大部分linux系统正常运行后都会安装另外的文件系统,然后忽略rootfs。

这下大家就知道了吧,但是由于飞凌没提供的源文件,所以不知道yjsx这个程序具体是啥,只能通过看烧写的过程知道了,这里我就不贴了。主要做的工作就是把拷贝到SD卡中的文件系统烧写到NAND Flash上,注意,这里他们烧写的是yaffs格式,而不是ubi,我猜想他们仅仅是为了方便用户使用SD卡烧写(毕竟友善之臂的烧写方式确实非常好),而不是使用ubi文件系统。

这里再来说一些Real6410和TQ6410,他们做法类似,Real6410是在NAND分区的时候分了两个文件系统区,一个是cramfs,一个是真正用到的文件系统区。先启动内核进入cramfs文件系统,将NAND格式化为UBI格式的,再进行烧写。同样,TQ6410也是先挂载NFS文件系统,将NAND格式化UBI,然后进行烧写。

不过貌似TQ6410V2已经支持了UBI烧写,这个还没看。

10. iMX6ull SD卡系统和Nandflash系统

系统源码和编译方法,[参见连接] ( https://community.nxp.com/docs/DOC-334274 )其中dtb文件针对LCD或HDMI修改的内容对iSpeaker无影响,不用去修改。我们会使用另外的dtb文件。
烧写SD方式也不采用这个文档中的方法,直接在linux命令行下如下操作:

Nandflash使用zImage,dtb文件和SD卡中使用的完全一致。Uboot文件SD中使用的不能用于Nandflash,源码另见。
烧写Nandflash需要用SD卡系统盘启动,SD卡系统中需要宽芹已安装mtd-utils工具。系统启动后能咐桥正慎简毕常看到mtd0~mtd4分区。按照下面步骤操作:

$ flash_erase /dev/mtd0 0 0
$ flash_erase /dev/mtd1 0 0
$ flash_erase /dev/mtd2 0 0
$ kobs-ng init -x u-boot.imx --search_exponent=1 -v
$ flash_erase /dev/mtd3 0 0
$ nandwrite -p /dev/mtd3 zImage
$ nandwrite -p /dev/mtd3 -s 0x7e0000 imx.dtb
$ ubiformat /dev/mtd4 -f ubi.img

其中使用ubi.img文件,在linux主机下制作方法如下:
使用的根文件系统和SD卡中的根文件系统一样,假设SD卡已插入linux主机usb接口,并将第二个分区挂载与/mnt下,首先在linux主机工作目录下建立文本文件ubifs.cfg,内容如下:
[ubifs]
mode=ubi
image=ubifs.img
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
然后执行如下命令:
$ mkfs.ubifs -x zlib -m 2048 -e 124KiB -c 3965 -r /mnt ubifs.img
$ ubinize -o ubi.img -m 2048 -p 128KiB -s 2048 -O 2048 ubifs.cfg

阅读全文

与制作ubi文件系统相关的资料

热点内容
金医保app可以预约哪些医院 浏览:840
如果快速删掉电脑桌面文件 浏览:309
网络优化系统是什么 浏览:320
海康威视数据怎么删除 浏览:826
ug编程哪个视图好用 浏览:866
福州龙泉哪里有学编程的 浏览:513
消保整改文件 浏览:145
重度贫血数据是多少 浏览:323
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99

友情链接