《Linux Uboot ubi 命令及内核参数设置》

uboot中的ubi 内核启动参数分析


Bootargs=console=ttyS0,115200n8 ubi.mtd=4 root=ubi0:rtfs rootfstype=ubifs rw mtdparts=café_nand:200M(part1),300M(part2),400M(part3),500M(part4),-(part5)
其中console部分是定义关于串口的参数,这里不解释了。
ubi.mtd=4 指示整个系统的根文件系统在第四个mtd 上,系统将据此默认把mtd4 attach到ubi0 上
root=ubi0:rtfs 指示 根文件系统在ubi0上的名字叫做rtfs的volume上注意这里ubifs的设备名字的写法,不是以/dev开头。他的写法有两种:
a) 【ubi device名b) 】:【ubi volume名c) 】,d) 例如ubi0:rootfs
e) 【ubi device名f) 】_【ubi volume 编号】,g) 例如ubi0_0
rootfstype=ubifs 指示rootfs的文件系统类型为ubifs
mtdparts=café_nand:200M(part1),300M(part2),400M(part3),500M(rootfs),-(part5)
定义了物理分区表。格式为
Mtd_id:[-]size[@offset](name)[mask_flag], …,…
其中[]中的代表可有可无项。
Mtd_id 对应于某种类型flash init过程中的name,二者必须相同,才能进行有效分区。
- 表示该分区划分所有的剩余空间。
Size 指示当前分区的大小。
@引导offset的开始。// 如 0x300000@0x120000(kernel) ,表示从0x120000开始到 0x420000 是 kernel 
Offset 指示该分区的起始偏移量。
(Name)中表示该物理分区(partition)的名字。
Mask_flag 表示该分区的读写属性。// 如 0x300000@0x120000(kernel)ro, xxx

 

uboot中的ubi 命令

(1)查看MTD分区表

  1. U-Boot$ mtdparts  
  2. mtdparts variable not set, see 'help mtdparts'  
  3. no partitions defined  
  4.   
  5. defaults:  
  6. mtdids : nand0=nandflash0  
  7. mtdparts: mtdparts=nandflash0:1536k(bootloder),512k(params),4m(kernel),16m(safefs),-(rootfs)  

 

(2)载入默认分区表

 U-Boot$ mtdparts default

(3)激活分区

U-Boot$ ubi part safefs

  1. Creating 1 MTD partitions on "nand0":  
  2. 0x000000600000-0x000001600000 : "mtd=3"  
  3. device_name0:mtd=3  
  4. UBI: attaching mtd1 to ubi0  
  5. UBI: physical eraseblock size: 131072 bytes (128 KiB)  
  6. UBI: logical eraseblock size: 129024 bytes  
  7. UBI: smallest flash I/O unit: 2048  
  8. UBI: sub-page size: 512  
  9. UBI: VID header offset: 512 (aligned 512)  
  10. UBI: data offset: 2048  
  11. scanning error 0  
  12. UBI: attached mtd1 to ubi0  
  13. UBI: MTD device name: "mtd=3"  
  14. UBI: MTD device size: 16 MiB  
  15. UBI: number of good PEBs: 127  
  16. UBI: number of bad PEBs: 1  
  17. UBI: max. allowed volumes: 128  
  18. UBI: wear-leveling threshold: 4096  
  19. UBI: number of internal volumes: 1  
  20. UBI: number of user volumes: 1  
  21. UBI: available PEBs: 0  
  22. UBI: total number of reserved PEBs: 127  
  23. UBI: number of PEBs reserved for bad PEB handling: 2  
  24. UBI: max/mean erase counter: 4/1  

 

查看当前激活的分区:
U-Boot$ ubi part

  1. Device 0: nand0, partition safefs  

 

(4)挂载分区

U-Boot$ ubifsmount safefs

  1. UBIFS: recovery needed  
  2. UBIFS: recovery deferred  
  3. UBIFS: mounted UBI device 0, volume 0, name "safefs"  
  4. UBIFS: mounted read-only  
  5. UBIFS: file system size: 14192640 bytes (13860 KiB, 13 MiB, 110 LEBs)  
  6. UBIFS: journal size: 9033728 bytes (8822 KiB, 8 MiB, 71 LEBs)  
  7. UBIFS: media format: w4/r0 (latest is w4/r0)  
  8. UBIFS: default compressor: LZO  
  9. UBIFS: reserved for root: 0 bytes (0 KiB)  

(5)查看分区的内容

U-Boot$ ubifsls

  1. <DIR> 3840 Tue Apr 20 07:42:09 2010 bin  
  2. <DIR> 480 Fri Aug 28 02:32:54 2009 dev  
  3. <DIR> 2416 Thu Jan 01 00:18:47 1970 etc  
  4. <DIR> 5464 Tue Apr 20 07:54:28 2010 lib  
  5. <DIR> 480 Tue Apr 20 07:42:01 2010 mnt  
  6. <DIR> 160 Fri Aug 28 01:37:57 2009 opt  
  7. <DIR> 224 Tue Apr 20 09:19:29 2010 tmp  
  8. <DIR> 160 Fri Aug 28 01:37:57 2009 sys  
  9. <DIR> 736 Thu Feb 26 07:25:19 2009 var  
  10. <DIR> 608 Fri Aug 28 02:32:54 2009 usr  
  11. <DIR> 296 Fri Aug 28 01:37:57 2009 boot  
  12. <DIR> 224 Tue Apr 20 07:42:01 2010 home  
  13. <DIR> 160 Fri Aug 28 01:37:57 2009 proc  
  14. <DIR> 2528 Tue Sep 14 08:50:07 2010 sbin  
  15. <DIR> 160 Fri Aug 28 01:37:57 2009 root  
  16. <LNK> 11 Tue Sep 14 08:24:07 2010 linuxrc  
  17.               706 Wed Sep 15 08:47:30 2010 burn.usb  
  18.                52 Wed Jun 30 06:30:21 2010 readme  
  19.               697 Wed Sep 15 08:47:43 2010 burn.cf  
  20.               664 Wed Sep 15 08:47:17 2010 burn.sd  

(6)查看某个文件

U-Boot$ ubifsload 80008000 readme

  1. Loading file 'readme' to addr 0x80008000 with size 52 (0x00000034)...  
  2. Done  

U-Boot$ md 80008000

  1. 80008000: 65666173 66207366 6120726f 4c206c6c safefs for all L  
  2. 80008010: 32334350 42203035 6472616f 200a2e73 PC3250 Boards..  
  3. 80008020: 20202020 32202020 2d303130 302d3730 2010-07-0  
  4. 80008030: 0a0a0a31 00000000 00000000 00000000 1...............  

 

补充:

ubi part <mtd partition>        // 把一个mtd 分区 格式化为ubi 设备

ubi create<volume> <size>   // 创建一个volume

ubi write <addr> <volume> <大小> //从addr中 写入size 大小的 ubi 文件系统到 volume 

ubi write <addr> <volume> <大小>  //从volume中读入size大小的ubi文件系统到addr

ubi remove <volume>          // 移除 volume

 

1.MTD Subsystem:
MTD 子系统, 提供对flash芯片的访问接口, MTD子系统提供了MTD device的概念,比如/dev/mtdx,MTD可以认为是raw flash。
2.UBI subsystem:
为flash device提供了wear-leveling和 volume management功能; UBI工作在MTD设备之上,提供了UBI volume;UBI是MTD设备的高层次表示,对上层屏蔽了一些MTD不得不处理的问题,比如wearing以及坏块管理。
3.UBIFS filesystem
UBIFS 文件系统,工作于UBI之上。

 
             --------       --------
          | ubi0:0 |   | ubi0:1 |
             --------        --------    
                   ↑      ↑ make volume 
             ----------------          -----------------
           |       ubi0      |       |        ubi1      |
             ----------------          -----------------      
                    ↑attach             ↑attach
               -----------               ------------ 
            | mtdblock0 |     |  mtdblock 1 |
                -----------              ------------

                       ↑                       ↑
                --------------------------------------
               |               nand flash             |            
                --------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值