为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > ubifs文件系统挂载及同步(1)

ubifs文件系统挂载及同步(1)

2022-08-01 17页 doc 39KB 26阅读

用户头像

is_751406

暂无简介

举报
ubifs文件系统挂载及同步(1)UBIFS分区制作及UBIFS烧写和启动(转载)相关命令工具ubiattach version 1.0 - a tool to attach MTD device to UBI.Usage: ubiattach  [-m ] [-d ][--mtdn=] [--devn ]Example 1: ubiattach /dev/ubi_ctrl -m 0 - attach MTD device 0 (mtd0) to UBIExample 2: ubiattach /dev/ubi_ctrl -m 0 -d 3 - attach ...
ubifs文件系统挂载及同步(1)
UBIFS分区制作及UBIFS烧写和启动(转载)相关命令工具ubiattach version 1.0 - a tool to attach MTD device to UBI.Usage: ubiattach  [-m ] [-d ][--mtdn=] [--devn ]Example 1: ubiattach /dev/ubi_ctrl -m 0 - attach MTD device 0 (mtd0) to UBIExample 2: ubiattach /dev/ubi_ctrl -m 0 -d 3 - attach MTD device 0 (mtd0) to UBI andand create UBI device number 3 (ubi3)-d, --devn= the number to assign to the newly created UBI    device(the number is assigned automatically if this is not specified)-m, --mtdn= MTD device number to attach-O, --vid-hdr-offset      VID header offset (do not specify this unless you really know what you do and the optimal defaults will be used)-h, --help           print help message-V, --version          print program versionubimkvol version 1.0 - a tool to create UBI volumes.Usage: ubimkvol  [-h] [-a ] [-n ] [-N ] [-s ] [-S ] [-t ] [-V] [-m] [--alignment=][--vol_id=] [--name=] [--size=] [--lebs=] [--type=] [--help] [--version] [--maxavsize]Example: ubimkvol/dev/ubi0 -s 20MiB -N config_data - create a 20 Megabytes volumenamed "config_data" on UBI device /dev/ubi0.-a, --alignment=  volume alignment (default is 1)-n, --vol_id=   UBI volume ID, if not specified, the volume IDwill be assigned automatically-N, --name=       volume name-s, --size=      volume size volume size in bytes, kilobytes (KiB)or megabytes (MiB)-S, --lebs=    alternative way to give volume size in logicaleraseblocks-m, --maxavsize        set volume size to maximum available size-t, --type=  volume type (dynamic, static), default is dynamic-h, -?, --help        print help message-V, --version         print program versionThe following is a compatibility option which is deprecated, do not use it-d, --devn=       UBI device number - may be used instead of the UBIdevice node name in which case the utility assumesthat the device node is "/dev/ubi"ubidetach version 1.0 - a tool to remove UBI devices (detach MTD devices from UBI)Usage: ubidetach [-d ] [-m ] [--devn ] [--mtdn=]Example 1: ubidetach /dev/ubi_ctrl -d 2 - delete UBI device 2 (ubi2)Example 2: ubidetach /dev/ubi_ctrl -m 0 - detach MTD device 0 (mtd0)-d, --devn= UBI device number to delete-m, --mtdn= or altrnatively, MTD device number to detach -this will delete corresponding UBI device-h, --help           print help message-V, --version          print program versionubiformat version 1.0 - a tool to format MTD devices and flash UBI imagesUsage: ubiformat  [-h] [-V] [-y] [-q] [-v][-x ] [-E ] [-s ] [-O ] [-n][--help] [--version] [--yes] [--verbose] [--quiet][--ec=] [--vid-hdr-offset=][--ubi-ver=] [--no-volume-table]Example 1: ubiformat /dev/mtd0 -y - format MTD device number 0 and donot ask questions.Example 2: ubiformat /dev/mtd0 -q -e 0 - format MTD device number 0,be quiet and force erase counter value 0.-s, --sub-page-size= minimum input/output unit used for UBIheaders, e.g. sub-page size in case of NANDflash (equivalent to the minimum input/outputunit size by default)-O, --vid-hdr-offset= offset if the VID header from start of thephysical eraseblock (default is the nextminimum I/O unit or sub-page after the ECheader)-n, --no-volume-table    only erase all eraseblock and preserve erasecounters, do not write empty volume table-f, --flash-image=   flash image file-e, --erase-counter= use  as the erase counter value for alleraseblocks-y, --yes          assume the answer is "yes" for all questionthis program would otherwise ask-q, --quiet         suppress progress percentage information-v, --verbose        be verbose-x, --ubi-ver=     UBI version number to put to EC headers(default is 1)-h, -?, --help        print help message-V, --version        print program version使用实例将一个MTD分区挂载为UBIFS格式 ● flash_eraseall /dev/mtd5 //擦除mtd5 ● ubiattach /dev/ubi_ctrl -m 5 -d 0 //UBI和mtd5关联 ->ubi0● ubimkvol /dev/ubi0 -n 0 -N rootfs0 -s 256MiB //创建分区ubi0_0设定volume 大小● mount -t ubifs ubi0_0 /mnt/ubi或mount -t ubifs ubi0:rootfs0 /mnt/ubi //挂载烧写UBIFS文件系统映像U-Boot烧写ubifs:(mmc)#mmcinit#fatload mmc 0:1 81000000 ubi.img#nand unlock#nand ecc sw#nand erase 680000 7980000#nand write.i 81000000 680000 $(filesize)NFS文件系统上烧写法一,使用ubiformat工具./ubiformat -q /dev/mtd5 -f ubi.img 法二,不必烧写映像,将ROOTFS打包,解压到UBIFSubiattach /dev/ubi_ctrl -m 5 -d 0ubimkvol /dev/ubi0 -n 0 -N rootfs -s 128MiBmount -t ubifs ubi0_0 /mnt/ubi0tar -jxv -C /mnt/ubi0 rootfs.tar.bz2umount /mnt/ubi0UBI文件系统启动设置UBIFS文件系统作为根文件系统启动的参数#setenv bootargs console=ttyAM0,115200n8 ubi.mtd=5 root=ubi0:rootfs rootfstype=ubifs init=linuxrc# setenv bootcmd nand read.i 80300000 280000 200000\;bootm 80300000UBIFS一、UBIFS简介由IBM、nokia师ThomasGleixner,ArtemBityutskiy等人于2006年发起,致力于开发性能卓越、扩展性高的FLASH专用文件系统,以解决当前嵌入式环境下以FLASH作为MTD设备使用时的技术瓶颈,开发背景:FLASH特性:FLASH是一类电可擦出可编程存储体,在使用方式上与硬磁盘最大不同是:FLASH文件系统所必须的关键技术:1.由于FLASH的“先擦除后写”的特性决定,必须(或者说所被公认为)采用异地更新策略(out-of-placeupdate)。相关问题讨论可参考:文档ABriefIntroductiontotheDesignofUBIFS。2.采用异地更新策略就必须(或者说所被公认为)采用日志文件系统来管理。3.采用日志文件系统就必须(或者说所被公认为)实现垃圾回收(garbagecollection)4.由于FLASH的物理擦除块(PhysicalEraseBlock)只有有限次有效擦除,所以必须(或者说所被公认为)采用“负载平衡”(我比较喜欢为“损益均衡”——一个经济学术语)(Wear-Leveling)技术,即保证上的(几乎)所有PEB的擦除次数趋向于均衡化,从而避免小部分PEB大大先于其他PEB而”坏“掉。当前嵌入式FLASH解决多采用:1. 无文件系统直接使用FLASH:缺点很明显2.采用传统文件系统,如ext2,ext3,FAT16/32,dos,Cramfs等:这些文件系统本来是为传统的磁盘体开发的,他们无法高效的管理以FLASH作为介质的文件系统,特别是在FLASH的使用寿命上。于是出现了第3中方案。3.采用FTL/NFTL(flash转换层/nandflash转换层)+传统文件系统:FTL的使用就是针对FLASH的特有属性,通过硬件的方式来实现日志管理、损益均衡等技术。但实践证明,由于各方面因素导致本方案有一定的局限性。4.FLASH专用文件系统,如JFFS1/2,YAFFS等,他们从一定程度上缓解了flash使用上的技术瓶颈。但也仍然存在诸多问题:如内存消耗大,对FLASH容量、文件系统大小、内容、访问模式等的线性依赖,损益均衡能力差活过渡损益。随作FLASH容量逐渐暴涨(我见到的资料已经有64GFLASH已经实用化),JFFS,YAFFS几乎无法管理如此大的FLASH——虽然JFFS目前还在改进中,但前途不看好,一个很好的例子JFFS的主要开发者大多倒向了UBIFS。:) UBI:一种类似于LVM的逻辑卷管理层。主要实现损益均衡,逻辑擦除块、卷管理,坏块管理等。UBIFS:基于UBI的FLASH日志文件系统。有关ubifs的详细介绍,请参考:二、使用UBIFS前的准备1.获取ubifs:2.6.22以后,ubifs活跃于git管理工程中git://git.infradead.org/ubi-2.6.git2.6.27以后,ubifs被整合进内核树中,用户只需下载最新内核即可获取ubifs支持。2.配置linux内核(2.6.28以上kernel已经包含ubifs,早期的kernel还得去官网上找找,我的就是2.6.28)配置的时候选上1)DeviceDrivers --->MemoryTechnologyDevice(MTD)support --->UBI-Unsortedblockimages --->EnableUBI2)Filesystems --->Miscellaneousfilesystems --->UBIFSfilesystemsupport这样我们的内核就支持UBIFS文件系统了3.UBIFS工具mtd-utils工具中提供了对UBIFS的支持,所以我们需要下载和编译这些工具,下载以下几个文件1)下载mtd-utilswgettarxzvfmtd-utils_20080508.orig.tar.gzcdmtd-utils-200805082)编译mtd-utils(主要是修改工具链)修改Makefile文件:#CROSS=arm-linux-修改为 CROSS=arm-marvell-linux-gnueabi-BUILDDIR:=$(CROSS:-=)修改为 BUILDDIR:=.修改ubi-utils/Makefile文件:添加  CROSS=arm-marvell-linux-gnueabi-修改  ubi-utils/new-utils/Makefile文件:添加  CROSS=arm-marvell-linux-gnueabi-makeWITHOUT_XATTR=13)ubi-utils子目录下生成我们需要的ubiattach、ubimkvol等文件(请确保是交叉编译所得)  mkfs.ubifs子目录下生成我们需要的mkfs.ubifs工具,通过这个工具我们能打包一个文件夹,生成UBIFS系统镜像,我是使用nfs启动,直接解压文件到flash上,所以并没有使用mkfs.ubifs工具.另外网络上很多文正提到zlib、lzo这两个库,但是我并没有使用到。三.如何使用UBIFS1.使用nfs启动系统,首先建立设备节点:mknod /dev/ubi_ctrlc1058mknod/dev/ubi0c25002、执行以下命令挂载ubifs:1)flash_eraseall/dev/mtd4        #擦出分区2)ubiattach/dev/ubi_ctrl-m4      #建立关联3)ubimkvol/dev/ubi0-Nrootfs-s450MiB #创建容量,-s是设置大小4)mount-tubifsubi0_0/mnt       #也可以:mount-tubifsubi0:rootfs/mnt三.uboot如何支持UBIFS为根文件系统启动:setenvbootargsconsole=ttyS0,115200ubi.mtd=4root=ubi0_0rootfstype=ubifsip=192.168.1.101:192.168.1.100::255.255.255.0::usb0:on下面附上一个我自己通过nfs启动以后,烧写kernel和文件系统的脚本。#!/bin/shTestResult(){if[$?-ne0];thenecho"$1faildpleasecheckthefile" exit1elseecho"$1OK!!!" echo"" fi}#Erasetheflashpartitionecho"--------------Erasetheflashpartitin----------------"/mtd-utils/usr/sbin/flash_eraseall/dev/mtd3/mtd-utils/usr/sbin/flash_eraseall/dev/mtd4echo"--------------Installkernelandsoftwaretoflash----------------"/bin/ddif=/zImageof=/dev/mtdblock3mkdir-p/mountpointmknod /dev/ubi_ctrlc1058mknod/dev/ubi0c2500/mtd-utils/ubi/ubiattach/dev/ubi_ctrl-m4TestResult"/mtd-utils/ubi/ubiattach/dev/ubi_ctrl-m4"/mtd-utils/ubi/ubimkvol/dev/ubi0-Nrootfs-s450MiBTestResult"/mtd-utils/ubi/ubimkvol/dev/ubi0-Nrootfs-s450MiB"/bin/mount-tubifsubi0_0/mountpointTestResult"/bin/mount-tubifsubi0_0/mountpoint"echo"tarxvf/fs.tar-C/mountpointpleasewait"tarxf/FSSoftware.tar-C/mountpointsync/bin/umount/mountpointecho"----------------------------------------------------------------"echo"    Pleasesetubootenvironment: "echo"setenvbootargsconsole=ttyS0,115200ubi.mtd=4root=ubi0_0rootfstype=ubifsip=192.168.1.101:192.168.1.100::255.255.255.0::usb0:on"echo"----------------------------------------------------------------"exit0另外ubifs是一个异步的文件系统,所以为了掉电的时候数据能保存完整,最好使用-osync挂载文件系统。
/
本文档为【ubifs文件系统挂载及同步(1)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索