linux挂载ubi镜像,mtd命令及制作ubi镜像做根文件系统

在linux2.6.28后才加入对ubifs的支持

1 查看nand分区

root@ubuntu:~# cat /proc/mtd

dev:    size   erasesize  name

mtd0: 00020000 00020000 "U-Boot-min"

mtd1: 00240000 00020000 "U-Boot"

mtd2: 00020000 00020000 "U-Boot Env"

mtd3: 00440000 00020000 "Kernel"

mtd4: 1f400000 00020000 "File System"

mtd5: 00540000 00020000 "Reserved"

root@ubuntu:~# cat /proc/partitions

major minor  #blocks  name

31        0        128 mtdblock0

31        1       2304 mtdblock1

31        2        128 mtdblock2

31        3       4352 mtdblock3

31        4     512000 mtdblock4

31        5       5376 mtdblock5

root@ubuntu:~#

2、查看mtd4的信息

root@ubuntu:~# mtdinfo -m 4 -u

mtd4

Name:                           File System

Type:                           nand

Eraseblock size:                131072 bytes, 128.0 KiB

Amount of eraseblocks:          4000 (524288000 bytes, 500.0 MiB)

Minimum input/output unit size: 2048 bytes

Sub-page size:                  512 bytes

OOB size:                       64 bytes

Character device major/minor:   90:8

Bad blocks are allowed:         true

Device is writable:             true

Default UBI VID header offset:  512

Default UBI data offset:        2048

Default UBI LEB size:           129024 bytes, 126.0 KiB

Maximum UBI volumes count:      128

root@ubuntu:~# mtdinfo -m 2 -u

root@ubuntu:~# mtdinfo /dev/mtd4

mtd2

Name:                           U-Boot Env

Type:                           nand

Eraseblock size:                131072 bytes, 128.0 KiB

// FLASH物理擦除块大小

Amount of eraseblocks:          1 (131072 bytes, 128.0 KiB)

Minimum input/output unit size: 2048 bytes

1)nor flash:通常是1个字节

2)nand falsh:一个页面

Sub-page size:                  512 bytes

//对于nand flash来说,子页大小

OOB size:                       64 bytes

Character device major/minor:   90:4

Bad blocks are allowed:         true

Device is writable:             true

Default UBI VID header offset:  512

Default UBI data offset:        2048

Default UBI LEB size:           129024 bytes, 126.0 KiB

//逻辑擦除块大小

Maximum UBI volumes count:      128

mtd4大小为500MiB,擦除单元大小(一般即为块大小)为128KiB,名字是"NAND simulator partition 0"。 NandFlash

擦除是以块(block)为单位,读写是以页(page)为单位。

3 root@ubuntu:~# ls -lah /dev/mtd*

crw------- 1 root root 90,  0 Jan  1 00:00 /dev/mtd0 //字符设备

crw------- 1 root root 90,  1 Jan  1 00:00 /dev/mtd0ro

crw------- 1 root root 90,  2 Jan  1 00:00 /dev/mtd1

crw------- 1 root root 90,  3 Jan  1 00:00 /dev/mtd1ro

crw------- 1 root root 90,  4 Jan  1 00:00 /dev/mtd2

crw------- 1 root root 90,  5 Jan  1 00:00 /dev/mtd2ro

crw------- 1 root root 90,  6 Jan  1 00:00 /dev/mtd3

crw------- 1 root root 90,  7 Jan  1 00:00 /dev/mtd3ro

crw------- 1 root root 90,  8 Jan  1 00:00 /dev/mtd4

crw------- 1 root root 90,  9 Jan  1 00:00 /dev/mtd4ro

crw------- 1 root root 90, 10 Jan  1 00:00 /dev/mtd5

crw------- 1 root root 90, 11 Jan  1 00:00 /dev/mtd5ro

brw-rw---- 1 root disk 31,  0 Jan  1 00:00 /dev/mtdblock0  //块设备,与mtd0对应

brw-rw---- 1 root disk 31,  1 Jan  1 00:00 /dev/mtdblock1

brw-rw---- 1 root disk 31,  2 Jan  1 00:00 /dev/mtdblock2

brw-rw---- 1 root disk 31,  3 Jan  1 00:00 /dev/mtdblock3

brw-rw---- 1 root disk 31,  4 Jan  1 00:00 /dev/mtdblock4

brw-rw---- 1 root disk 31,  5 Jan  1 00:00 /dev/mtdblock5

root@ubuntu:~#

4.

关于mtd工具集的安装

sudo apt-get install mtd-utils

UBI文件系统镜像文件的制作

@ubuntu:~$ sudo mkfs.ubifs -r targetfs -m 2048 -e 129024 -c 3900 -o ubifs.img

@ubuntu:~$ sudo ubinize -o ubi.img -m 2048 -p 128KiB -s 512 ubinize.cfg

关于mkfs.ubifs参数的算法

-m minimum I/O unit size

-e, --leb-size=SIZE      logical erase block size

-c maximum logical erase block count

-x compression type - "lzo", "favor_lzo", "zlib" or "none" (default: "lzo")

-p size of the physical eraseblock of the flash this UBI image is created for in bytes

wear_level_reserved_blocks is 1% of total blcoks per device

*logical_erase_block_size* is physical erase block size minus 2 pages for UBI

Block size = page_size * pages_per_block

physical blocks on a partition = partition size / block size

Logical blocks on a partition = physical blocks on a partitiion - reserved for wear level

File-system volume = Logical blocks in a partition * Logical erase block size

关于参数可以参考attach的命令输出:

root@ubuntu:~# ubiattach  /dev/ubi_ctrl -m 4 -d 0

UBI device number 0, total 4000 LEBs (516096000 bytes, 492.2 MiB), available 0 LEBs (0 bytes), LEB

size 129024 bytes (126.0 KiB)

root@ubuntu:~#

ubinize.cfg文件

[ubifs]

mode=ubi

image=ubifs.img

vol_id=0

vol_size=450MiB

vol_type=dynamic

vol_alignment=1

vol_name=rootfs

vol_flags=autoresize

5. UBI文件系统镜像在Linux下的烧写

flash_eraseall /dev/mtd4

ubiformat /dev/mtd4 -s 512 -f /xxx/ubi.img

6、 UBI文件系统镜像在U-BOOT下的烧写

//load ubi image to RAM

tftp ubi.img

//erase MTD4 nand space

nand erase 0x6c0000 0xc820000

//write image to nand

nand write.i 0x81000000 0x6c0000 0xxxxx(image size)

7. UBI文件系统镜像在Linux下的挂载和卸载

挂载

ubiattach /dev/ubi_ctrl -m 4 -d 0

mount -t ubifs ubi0_0 /mnt/ubi

卸载

umount /mnt/ubi

ubidetach -d 0

8、使用ubi做根文件系统

需要在bootargs中设置如下信息:

root=ubi0:rootfs ubi.mtd=4 rootfstype=ubifs

配置linux内核 配置的时候选上 1)Device Drivers  --->Memory Technology Device (MTD) support  --->UBI - Unsorted block images  --->Enable UBI 2)File systems  --->Miscellaneous filesystems  --->UBIFS file system support 这样我们的内核就支持UBIFS文件系统了

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值