不知道有没有java参考文档下面的文档正确制作ubi文件系统

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分288阅读权限20帖子精华可用积分290 信誉积分524 专家积分0 在线时间278 小时注册时间最后登录
稍有积蓄, 积分 288, 距离下一级还需 212 积分
帖子主题精华可用积分290 信誉积分524 专家积分0 在线时间278 小时注册时间最后登录
论坛徽章:0
本帖最后由 雪中的紫诺 于
16:04 编辑
1、modprobe mtd
2、modprobe mtdblock
3、modprobe ubi mtd=0& &
4、 modprobe nandsim first_id_byte=0x20 second_id_byte=0xaa third_id_byte=0x00 fourth_id_byte=0x15& &
5、mtdinfo /dev/mtd0& &&&
6、flash_eraseall /dev/mtd0& &
7、ubiformat /dev/mtd0 -s 512 -f ./ubi.img
8、ubiattach /dev/ubi_ctrl -m 0& &
前面几步都没问题,运行通过。但最后一步总是提示未知的文件系统,是那里原因呢&&
9、 mount -t ubifs ubi0:rootfs /mnt/& &&&
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分55阅读权限10帖子精华可用积分55 信誉积分623 专家积分0 在线时间225 小时注册时间最后登录
白手起家, 积分 55, 距离下一级还需 145 积分
帖子主题精华可用积分55 信誉积分623 专家积分0 在线时间225 小时注册时间最后登录
论坛徽章:13
mount -t ubifs ubi0:rootfs /mnt/
/var/log/message日志打印信息是什么?
你的内核支不支持ubifs 文件系统?如果不支持,编译内核的时候要把ubifs 文件系统编译进去
UID空间积分0 积分25阅读权限10帖子精华可用积分25 信誉积分200 专家积分0 在线时间84 小时注册时间最后登录
白手起家, 积分 25, 距离下一级还需 175 积分
帖子主题精华可用积分25 信誉积分200 专家积分0 在线时间84 小时注册时间最后登录
论坛徽章:0
本帖最后由 阿瓜000 于
10:10 编辑
你没创建卷吧你的ubi0:rootfs哪来的?
UID空间积分0 积分3388阅读权限50帖子精华可用积分3388 信誉积分2195 专家积分0 在线时间3013 小时注册时间最后登录
小富即安, 积分 3388, 距离下一级还需 1612 积分
帖子主题精华可用积分3388 信誉积分2195 专家积分0 在线时间3013 小时注册时间最后登录
论坛徽章:1
需要使用ubimkvol来创建rootfs这个volume
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处5406人阅读
嵌入式(53)
一、移植环境
§主机:vmware-redhat5&&&&&
§开发板:mini2440--<span style="font-size:12 color:#6MB nandflash
§kernel:2.6.29&&&&
编译器:&&&&
§uboot: u-boot-2008.10
二、制作ubifs镜像
步骤1:将文件系统制作成 ubifs镜像文件,需要使用mkfs.ubifs工具,该工具可以在网址:&,下载mtd-utils工具包源码编译后获得。
在安装mtd-utils之前首先在系统中安装如下两个软件:
(因为原先我看一些博文给的地址都不可访问,只好按名称东下一个西下一个,编译后都出错没法解决,特此提醒,后来暮然回首,在我的以前做过的文件系统中找到了以下三个经编译后可成功生成ubifs命令工具,(现放我资源里,提供给大家)请放心下载)
a.安装libacl,(我资源里)下载地址:&
输入命令:rpm& -ivh& libacl-2.2.23-5.4.e14.i386.rpm
b.安装lzo-2.05, (我资源里)下载地址:&
执行如下命令:
#&&& tar&& zxvf&& lzo-2.05.tar.gz
#&&& cd& lzo-2.05
#&& ./configure
#& &make install
c.安装 mtd-utils.tar.gz& (我资源里)下载地址:
#& tar& zxvf mtd-utils.tar.gz
# cd& mtd-utils
# ./configur
# make install
步骤2.使用上述安装命令后,mkfs.ubifs被安装到了/usr/local/usr/sbin目录下,可使用命令:export PATH=$PATH:/usr/local/usr/sbin将该路径包含进环境变量,
然后使用命令:mkfs.ubifs& -m 2048& -c&2048 -e& 126976& -r& /nfsroot/rootfs& -o&& rootfs.bin ,将根文件系统所在目录rootfs制作为ubifs镜像文件rootfs.bin,将该文件拷贝到/tftpboot/目录下等待下载烧写。(注意,你在哪执行这个命令,生成的.bin镜像就在执行此命令的当前目录下生成)
【注意点:1.上面制作的ubifs镜像文件使用的命令参数是根据开发板所使用的NAND
Flash来确定的,我的NAND Flash容量是256MB,可以适应命令:mkfs.ubifs&
-h 来查看各个命令选项的意思,我这里只简单的介绍一下:
-r :要制作成镜像的根文件系统的路径
-m:最小的I/O操作的大小(也就是NAND
FLASH的一个page的大小)
-e : 逻辑擦除块的大小
-p :物理擦除块的大小
-c :最大逻辑擦除块的数量
-o :最终制作成的根文件镜像的文件名
注意点:2.我原来用mkfs.ubifs& -m 2048& -c&2048 -e& 126976&
-r& /nfsroot/rootfs& -o&& rootfs.bin 制作成的镜像,启动内核时有错,我曾经的出错现象:&&但是发现启动内核时打印此出错信息:
UBI error: validate_ec_hdr: bad VID header offset 512, expected 2048
UBI error: validate_ec_hdr: bad EC header
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 556
UBI error: ubi_init: cannot attach mtd3
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22
后来找到了相近的解决方案:&&按照这篇帖子最终内核成功的启动了
我现在还不太懂为什么“-e& 126976”而不是大多数制作ubifs文件系统写的 “-e& 129024&”如果大家知道请通知我,不胜感激!】
步骤3.通过Jlink或者H-JTAG将u-boot.bin先烧进norflash,之后连接好串口线和网线,从norflash启动开发板。
步骤4.设定好网络相关的环境变量,重点是先设置好ipaddr和serverip(因为下面用到tftp协议下载)之后用sav命令保存环境变量;
之后用命令:tftp& & u-boot.bin&&&&
下载uboot.bin到内存地址处。
步骤5:使用命令:nand erase 0 60000,将nand flash的前0x60000字节空间擦除掉。在使用命令:nand write &&
0&& 60000,将内存处的u-boot.bin烧写到nand flash中。
步骤6:使用命令:tftp&
uImage&&&&&使用命令: nand erase 80000&& 300000,将nand flash的kernel分区擦除掉,在使用命令:nand
write& 00& 300000 ,将内存处的uImage烧写到nand flash中。
步骤7:使用命令:mtdparts default&&&使用默认分区对Nand Flash进行分区。使用命令:nand& erase root ,擦除root分区。使用命令:ubi
part& root& 2048&&,激活root分区进行ubi&#26684;式化。最后使用命令:ubi&& create& rootfs& ,创建rootfs分区。
【注意点:原来我用命令:& ubi&&&& part& root&来激活root分区进行ubi&#26684;式化,但是启动内核时出现报错信息(看红字部分),所以按这篇博文改成:ubi
part& root& 2048&&& 之后就没有报错了
UBI error: validate_ec_hdr: bad VID header offset 512, expected 2048
UBI error: validate_ec_hdr: bad EC header
UBI error: ubi_io_read_ec_hdr: validation failed for PEB 556
UBI error: ubi_init: cannot attach mtd3
UBI error: ubi_init: UBI error: cannot initialize UBI, error -22
步骤8:使用命令:tftp & rootfs.bin&下载rootfs到默认内存地址处,使用命令:ubi&& write
& rootfs&& $filesize,将内存处大小为$filesize的rootfs.bin通过ubi方式烧写到nand
flash的对应分区中。
设置启动变量: bootargs ,(bootargs是uboot传给内核的参数,使用命令:set&& bootargs& &ubi.mtd=3& root=ubi0:rootfs&& rootfstype=ubifs& console=ttySAC0& init=/linuxrc&& rw &
&设置启动命令:bootcmd,(bootcmd
是uboot启动的命令,输入命令:set& bootcmd& & nand& read
& 80000&&$& bootm& &&最后使用sav命令保存环境变量)
步骤10:关掉电源,让开发板重新从nand &flash启动,可以看到内核成功加载了我们只做的ubifs文件系统,如图:
[注意点1:set& bootcmd&
& nand& read
& 80000&&$& bootm& && 中的&&是启动内核的地址,内核启动时自动找到这个地方来启动kernel&;而前面用过的tftp&&
&& xxx&中的&&是内存中的地址(存放在内存地址中的数据掉电后就没了)
注意点2:如果 bootm后面不跟地址,默认是到处寻在内核启动的;如果bootcmd环境变量写成:set&
bootcmd& & nand& read
& 80000&&$& bootm&&&最终这种现象:如图(因为它到没有找到内核,内核原来由80000的内存地址读到了地址处)
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:356443次
积分:4632
积分:4632
排名:第3319名
原创:116篇
转载:21篇
评论:100条嵌入式linux新手入门手记-制作UBI文件镜像
> 嵌入式linux新手入门手记-制作UBI文件镜像
嵌入式linux新手入门手记-制作UBI文件镜像
  这一篇计划是放到最后写的,但是QT5.4.1移植和TSLIB的修改内容比较多,想想就将这篇提前。本文引用地址:
  /home/XXXX/nfs下已经包含一个完整的根文件系统了,可以使用这个文件系统来制作一个文件镜像,并将它烧写到nand中。
  如果没有根文件系统,就需要先获取或者自己制作一个。制作根文件系统可以用busybox。不过为了省事,我直接使用TI的SDK中的根文件系统,然后自己删减,得的了一个大约40M左右的根文件系统,在加入tslib,qt5.4.1,以及中文字库后的大小大约在90M左右。
  制作ubi文件镜像需要用到mtd-utils工具,目前的最新版本是1.5.1,使用git下载:git clone git://git.infradead.org/mtd-utils.git。
  下载下来的mtd-utils解压缩后保存到/home/XXXX/mtd-utils目录。
  编译mtd-utils还需要一些其他的库,我们使用apt-get来安装:
  sudo -s
  apt-get install libzo2-dev
  apt-get install libacl1-dev
  apt-get install uuid-dev
  以及zlib,到www.zlib.net下载zlib的源代码,保存到/home/XXXX/zlib目录中,进入到这个目录中执行./configure,成功后执行make -j4,make install。
  之后编译mtd-utils,进入到mts-utils目录中,执行make -j4。
  新建一个目录/home/XXXX/tools,将这个目录加入到PATH环境变量中,然后将编译出来的mtd-utils的目标执行程序拷贝到这个tools目录下。
  进入到/home/XXXX目录下,执行以下操作:
  mkfs.ubifs -F -q -r ./nfs -m 2048 -e 126976 -c 1599 -o ubifs.img
  -F: 使能&white-space-fixup&,通过uboot烧写nand时必须要这个参数
  -r ./nfs, 我计算机上用户挂载am335x板的nfs根文件系统,以这个目录中的内容制作镜像文件
  -m 2048, nand的最小读写单元,page size
  -e 126976, nand的block size-2*page size
  -c 1599, 文件系统占用的最大block数,一般小于等于nand最大block数-1,或者根据文件系统的大小实际计算
  -o ubifs.img,输出文件名
  ubinize -o ubi.img -m 2048 -p 128KiB /home/jerry/tools/ubifs.conf
  -o ubi.img,输出文件名
  -m 2048, nand的最小读写单元,page size
  -p 128KiB, block size
  最后面的ubifs.conf是配置文件:
  [ubifs]
  mode=ubi
  image=ubifs.img
  vol_id=0
  vol_size=120MiB
  vol_type=dynamic
  vol_name=rootfs
  vol_flags=autoresize
  到这里,就生成了一个ubi.img文件,这个就是ubi镜像文件,可以在u-boot中写入到nand中。
linux相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一从哪里去找ubi文件系统的开源代码?_百度知道
从哪里去找ubi文件系统的开源代码?
最近一个项目需要查看一下ubi文件系统的开源代码,想问一下哪里能找到ubi文件系统的源代码和一些资料?
提问者采纳
git" target="_blank">ubifs-2;git.git来源:&#47.org/ubifs-2:git.linux-mtd.infradead.infradead
提问者评价
多谢啦!!一直找不到呢,原来在这个网站
其他类似问题
为您推荐:
ubi的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁3264人阅读
嵌入式开发(159)
linux(127)
UBI文件系统简介
在linux-2.6.27以前,谈到Flash文件系统,大家很多时候多会想到cramfs、jffs2、yaffs2等文件系统。它们也都是基于文件系
统&#43;mtd&#43;flash设备的架构。linux-2.6.27后,内核加入了一种新型的flash文件系统UBI(Unsorted Block Images)。这里简单介绍下UBI文件系统加入的原因,及使用方法。我也是刚接触到这个文件系统,可能有理解不对的地方,也请指正。
一、产生的背景
FLASH具有的“先擦除再写入”、坏块、“有限的读写次数”等特性,目前管理FLASH的方法主要有:
1、采用MTD&#43;FTL/NFTL(flash 转换层/nand flash转换层)+
传统文件系统,如:FAT、ext2等。FTL/NFTL的使用就是针对FLASH的特有属性,通过软件的方式来实现日志管理、坏块管理、损益均衡等技
术。但实践证明,由于知识产权、效率等各方面因素导致本方案有一定的局限性。
2、采用硬件翻译层&#43;传统文件系统的方案。这种方法被很多存储卡产品采用,如:SD卡、U盘等。这种方案对于一些产品来说,成本较高。
3、采用MTD&#43; FLASH专用文件系统,如JFFS1/2,YAFFS1/2等。它们大大提高了FLASH的管理能力,并被广泛应用。
JFFS2、YAFFS2等专用文件系统也存在着一些技术瓶颈,如:内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差或过渡损益等。在此背景下内核加入了UBI文件系统的支持。
环境:omap3530处理器、 (128MByte 16 位NAND Flash) 、linnux-2.6.28内核
1、配置内核支持UBIFS
Device Drivers ---&Memory Technology Device (MTD) support ---&UBI - Unsorted block images ---&Enable UBI
配置mtd支持UBI接口
File systems ---&Miscellaneous filesystems ---&UBIFS file system support
配置内核支持UBIFS文件系统
2、将一个MTD分区4挂载为UBIFS&#26684;式
● flash_eraseall /dev/mtd4 //擦除mtd4
● ubiattach /dev/ubi_ctrl -m 4 //和mtd4关联
● ubimkvol /dev/ubi0 -N rootfs -s 100MiB //设定volume 大小(不是固定&#20540;,可以用工具改变)及名称
● mount -t ubifs ubi0_0 /mnt/ubi或mount -t ubifs ubi0:rootfs /mnt/ubi
3、制作UBIFS文件系统
在制作UBI镜像时,需要首先确定以下几个参数:
MTD //对应的FLASH分区大小
flash phys // FLASH物理擦除块大小
minimum flash input/ //最小的FLASH输入输出单元大小
for NAND flashes - sub- //对于nand flash来说,子页大小
logical eraseblock size.//逻辑擦除块大小
参数可以由几种方式得到
1)如果使用的是2.6.30以后的内核,这些信息可以通过工具从内核获得,如:mtdinfo –u。
2)之前的内核可以通过以下方法:
● MTD partition size:从内核的分区表或cat /proc/mtd获得
● flash physical eraseblock size:从flash芯片手册中可以得到FLASH物理擦除块大小,或cat /proc/mtd
● minimum flash input/output unit size:
1)nor flash:通常是1个字节
2)nand falsh:一个页面
● sub-page size:通过flash手册获得
● logical eraseblock size:对于有子页的NAND FLASH来说,等于“物理擦除块大小-1页的大小”
3)也可以通过ubi和mtd连接时的产生的信息获取,如:
#modprobe ubi mtd=4 //ubi作为模块加载
#ubiattach /dev/ubi_ctrl -m 4 //通过ubiattach关联MTD
UBI: attaching mtd4 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
UBI: attached mtd4 to ubi0
更详细的解释参见http://www.linux-mtd.infradead.org/doc/ubi.html#L_overhead
#mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 812 -o ubifs.img
#ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /home/lht/omap3530/tools/ubinize.cfg
-r:制定文件内容的位置
-m:页面大小
-e:逻辑擦除块大小
-p:物理擦除块大小
-c:最大的逻辑擦除块数量
对我们这种情况,文件系统最多可以访问卷上的=100M空间
-s:最小的硬件输入输出页面大小,如:k9f(上下半页访问)
其中,ubinize.cfg的内容为:
image=ubifs.img
vol_size=100MiB
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
4、利用uboot烧写、启动UBIFS镜像
1)烧写UBIFS镜像
OMAP3 DevKit8000 # mmcinit
OMAP3 DevKit8000 # fatload mmc 0:1
reading ubi.img
bytes read
OMAP3 DevKit8000 # nand unlock
device 0 whole chip
nand_unlock: start: , length: !
NAND flash successfully unlocked
OMAP3 DevKit8000 # nand ecc sw
OMAP3 DevKit8000 # nand erase 0000
NAND erase: device 0 offset 0x680000, size 0x7980000
Erasing at 0x7fe0000 -- 100% complete.
OMAP3 DevKit8000 # nand write.i 000 $(filesize)
NAND write: device 0 offset 0x680000, size 0xc40000
Writing data at 0x12bf800 -- 100% complete.
bytes written: OK
烧写过程和烧写内核镜像的过程一致,所以UBI文件系统应该不像yaffs文件系统那样用到了nand的OOB区域。
2)设置UBIFS文件系统作为根文件系统启动的参数
OMAP3 DevKit8000 # setenv bootargs console=ttyS2, ubi.mtd=4 root=ubi0:rootfs
rootfstype=ubifs video=omapfb:mode:4.3inch_LCD
OMAP3 DevKit8000 # setenv bootcmd nand read.i 000 200000\;bootm
根文件系统的位置在MTD4上
系统启动时会打印出如下和UBI相关的信息:
Creating 5 MTD partitions on &omap2-nand&:
0xx : &X-Loader&
0xx : &U-Boot&
0xx : &U-Boot Env&
0xx : &Kernel&
0xx : &File System&
UBI: attaching mtd4 to ubi0
UBI: physical eraseblock size: 131072 bytes (128 KiB)
UBI: logical eraseblock size: 129024 bytes
UBI: smallest flash I/O unit: 2048
UBI: sub-page size: 512
UBI: VID header offset: 512 (aligned 512)
UBI: data offset: 2048
UBI: attached mtd4 to ubi0
UBI: MTD device name: &File System&
UBI: MTD device size: 121 MiB
UBI: number of good PEBs: 970
UBI: number of bad PEBs: 2
UBI: max. allowed volumes: 128
UBI: wear-leveling threshold: 4096
UBI: number of internal volumes: 1
UBI: number of user volumes: 1
UBI: available PEBs: 0
UBI: total number of reserved PEBs: 970
UBI: number of PEBs reserved for bad PEB handling: 9
UBI: max/mean erase counter: 2/0
有了和两个工具后,就可以制作镜像了,具体步骤如下:
1. 使用命令将某个文件夹制作为镜像,具体命令为:
mkfs.ubifs -r/tmp/rootfs-m 2048 -e 126976-c 992 -o ubifs.img
以上命令的含义为将文件夹制作为文件系统镜像,输出的镜像名为,参数指定了最小的操作的大小,也就是一个的大小,参数指定了逻辑擦除快的大小,指定了最大的逻辑块号。
通过此命令制作的出的文件系统镜像可在下使用命令烧写到上。
2. 使用命令可将使用命令制作的文件系统镜像转换成可直接在上烧写的&#26684;式(带有文件系统镜像卷标):
ubinize -o ubi.img-m 2048 -p 128KiB-s 512 -O 2048 ubinize.cfg
ubinize.cfg为一些配置参数:
[ubifs]mode=ubiimage=ubifs.imgvol_id=0vol_size=100MiBvol_type=dynamicvol_alignment=1vol_name=rootfsvol_flags=autoresize
通过此命令生成的可直接使用的烧写命令烧写到上。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:314345次
积分:4821
积分:4821
排名:第3116名
原创:130篇
转载:341篇
评论:33条}

我要回帖

更多关于 easypoi参考文档 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信