ubi文件系统制作,还是"-c"选项的问题

以下是分析记录:

------------------------------------------------------------------------------

以上命令的参数可从 ubifs 挂载信息中提取:

UBI: attaching mtd5 to ubi0

UBI: physical eraseblock size:   131072 bytes (128 KiB) // -p:物理擦除块大小

UBI: logical eraseblock size:    129024 bytes           // -e:逻辑擦除块大小(LEB size)

UBI: smallest flash I/O unit:    2048                   // -m:页面大小

UBI: sub-page size:              512                    // -s:最小的硬件输入输出页面大小

UBI: VID header offset:          512 (aligned 512)

UBI: data offset:                2048

UBI: attached mtd5 to ubi0

UBI: MTD device name:            "File System-1"

UBI: MTD device size:            162 MiB

UBI: number of good PEBs:        1295                   // -c:最大的逻辑擦除块数量,一般小于等于 block count -1

UBI: number of bad PEBs:         1                      // -c:162*1024*1024/129024 = 1316, 162*1024*1024/(128*1024) = 1296(出错!!!)

// 对我们这种情况,文件系统最多可以访问卷上的 129024*812=100M 空间(可行!!!)

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: 1295

UBI: number of PEBs reserved for bad PEB handling: 12

UBI: max/mean erase counter: 2/0

UBI: image sequence number: 936292432

UBI: background thread "ubi_bgt0d" started, PID 471

------------------------------------------------------------------------------

UBIFS: recovery needed

UBIFS: recovery completed

UBIFS: mounted UBI device 0, volume 0, name "rootfs"

UBIFS: file system size:   163602432 bytes (159768 KiB, 156 MiB, 1268 LEBs)

UBIFS: journal size:       9033728 bytes (8822 KiB, 8 MiB, 71 LEBs)

UBIFS: media format:       w4/r0 (latest is w4/r0)

UBIFS: default compressor: lzo

UBIFS: reserved for root:  0 bytes (0 KiB)

VFS: Mounted root (ubifs filesystem) on device 0:12.

Freeing init memory: 164K

Failed to execute /init.  Attempting defaults...

INIT: version 2.86 booting

Starting udevtar: removing leading ‘/‘ from member names

------------------------------------------------------------------------------

cd /devkit8500d/work

/devkit8500d/tools/bin/mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 1996 -o ubifs.img

# 通过 mkfs.ubifs 命令制作的出的 UBIFS 文件系统镜像可在u-boot下使用ubi write命令烧写到NAND FLASH上

# 使用 ubinize 命令生产实际可用空间的 ubi 格式镜像,这样才可以通过 ubiformat 命令在板子上写入该文件系统镜像:

# ubinize,带有UBI文件系统镜像卷标

/devkit8500d/tools/bin/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /devkit8500d/tools/bin/ubinize.cfg

#/devkit8500d/tools/bin/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 -O 2048 /devkit8500d/tools/bin/ubinize.cfg

cp /devkit8500d/work/ubi.img /mnt/hgfs/Ubuntu10.04/dyz/omap3devkit8500/image/

------------------------------------------------------------------------------

/devkit8500d/tools/bin/mkfs.ubifs -m 2048 -c 1296 -e 129024 -r /devkit8500d/work/rootfs -o ubifs.img

/devkit8500d/tools/bin/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /devkit8500d/tools/bin/ubinize.cfg

出现错误:

...

UBIFS error (pid 1): ubifs_get_sb: cannot open "ubi0:rootfs", error -19

VFS: Cannot open root device "ubi0:rootfs" or unknown-block(0,0)

Please append a correct "root=" boot option; here are the available partitions:

1f00             512 mtdblock0 (driver?)

...

------------------------------------------------------------------------------

修改 ubinize.cfg 文件

[ubifs]

mode=ubi

image=ubifs.img

vol_id=0

vol_size=162MiB

vol_type=dynamic

vol_name=rootfs

vol_flags=autoresize

结果:

失败!!!

------------------------------------------------------------------------------

参考成功时候的信息

omap_vout omap_vout: : registered and initialized video device 1

UBIFS: mounted UBI device 0, volume 0, name "rootfs"

UBIFS: file system size:   163602432 bytes (159768 KiB, 156 MiB, 1268 LEBs) // 1268 LEBs 很重要!!!

UBIFS: journal size:       9033728 bytes (8822 KiB, 8 MiB, 71 LEBs)

UBIFS: media format:       w4/r0 (latest is w4/r0)

UBIFS: default compressor: lzo

UBIFS: reserved for root:  0 bytes (0 KiB)

VFS: Mounted root (ubifs filesystem) on device 0:12.

Freeing init memory: 164K

Failed to execute /init.  Attempting defaults...

INIT: version 2.86 booting

Starting udevtar: removing leading ‘/‘ from member names

重新运行:

/devkit8500d/tools/bin/mkfs.ubifs -m 2048 -c 1268 -e 129024 -r /devkit8500d/work/rootfs -o ubifs.img

/devkit8500d/tools/bin/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /devkit8500d/tools/bin/ubinize.cfg

结果:

失败!!!

------------------------------------------------------------------------------

/devkit8500d/tools/bin/mkfs.ubifs -m 2048 -c 812 -e 129024 -r /devkit8500d/work/rootfs -o ubifs.img

/devkit8500d/tools/bin/ubinize -o ubi.img -m 2048 -p 128KiB -s 512 /devkit8500d/tools/bin/ubinize.cfg

成功,还是 -c 的问题

------------------------------------------------------------------------------

时间: 2024-10-16 17:11:55

ubi文件系统制作,还是"-c"选项的问题的相关文章

page size == 4096 , nand size == 1GB, block size == 256kb 的ubi 文件系统制作

mkubiimg.sh 2 sudo mkfs.ubifs -F -q -r rootfs_ecm_5410 -m 4096 -e 253952 -c 3600 -o ubifs.img 3 4 echo mkfs.ubifs over! 5 sudo ubinize -o ubi.img -m 4096 -p 256KiB -s 4096 -O 4096 ubinize.cfg 6 echo ubinize over! 7 8 sync 9 10 sudo cp ubi.img ~/image

ubi 文件系统加载失败原因记录

尝试升级 kernel 到 4.4.12版本,然后出现 kernel 加载 ubi 文件系统失败的现象,现象如下 [ 3.152220] ubi0 error: vtbl_check: too large reserved_pebs 1908, good PEBs 1860 [ 3.160054] ubi0 error: vtbl_check: volume table check failed: record 0, error 9 经过查找,是因为 ubi 文件系统制作过大的原因. // 修改

linux系统移植和根文件系统制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5.

mini2440 最小根文件系统制作和nfs启动

mini2440 内核启动后,可以用busybox制作一个简单的根文件系统并用nfs来启动该文件系统 启动mini2440, 按任意键进入uboot,按q键进入uboot命令行: 执行以下命令: set bootargs "noinitrd root=/dev/nfs rw nfsroot=192.168.211.2:/home/host/nfs/mini2440/rootfs ip=192.168.211.211 console=ttySAC0 init=/linuxrc" save

hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .

一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包. 2.解压缩SDK包 在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,可以得到一个Hi3531_SDK_Vx.

根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统

最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的内容: 目录名 存放的内容 /bin 必备的用户命令,例如ls.cp等 /sbin 必备的系统管理员命令,例如ifconfig.reboot等 /dev 设备文件,例如mtdblock0.tty1等 /etc 系统配置文件,包括启动文件,例如inittab等 /lib 必要的链接库,例如C链接库.内

嵌入式Linux根文件系统制作和挂载

嵌入式Linux系统由三部分组成: uboot.kernel.根文件系统, 还是这张老图 这里的根文件系统可以说是包含两个部分: 一个是根,一个是文件系统 那么什么是根呢?哈哈 其实根表示的就是第一个的意思 下面贴张图看看整个根文件系统制作的步骤: 第一步创建目录,这里是在我自己的一个目录下建立一个名为rootfs的目录: 第二步 :创建设备文件(比如操作串口,其实就是打开一个串口文件,向里面写入读出等) 这里有两个是必须的,其他的暂时不考虑(串口控制台)(这个在dev目录下执行) 第一个指令c

jffs2文件系统制作

内核:                linux-3.0 uboot:             2010.09 开发板:             fl2440 交叉编译器:         2011.11 1.对根文件系统进行修改 无修改 2.添加内核对jffs2的支持 [[email protected] linux-3.0-jffs2]$ vt100[[email protected] linux-3.0-jffs2]$ sudo make menuconfig File systems  

内核启动时在挂载ubi文件系统时提示UBIFS error (ubi0:0 pid 1): ubifs_read_superblock: min. I/O unit mismatch

一.背景 1.1 笔者机器的内核错误信息如下: UBIFS error (ubi0:0 pid 1): ubifs_read_superblock: min. I/O unit mismatch: 2048 in superblock, 8 real 1.2 笔者为ubi文件提供的flash分区大小为32MiB 二.解决方法 修改在制作ubi文件系统时的页面大小参数 mkfs.ubifs的-m是用来指定页面大小参数的,当然其它参数也是需要适当调整的 如笔者原来的参数为:-m 2048 -e 12