对ubifs文件系统升级时,出现:
cannot attach mtd6;
vtbl_check: volume table check failed
是mtd6分区大小不够造成的。我使用的是davinci平台:修改/kernel/arch/arm/mach-omap2/board_ti8148ipnc.c中mtd分区大小即可。
引用http://lists.infradead.org/pipermail/linux-mtd/2009-April/025127.html
贴出源文:
Ubiattach problem after flashing an image
Artem Bityutskiy dedekind at infradead.org
Fri Apr 3 03:09:18 EDT 2009
- Previous message: Ubiattach problem after flashing an image
- Next message: Kernel OOPS - JFFS2 file system on NOR flash
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, On Thu, 2009-04-02 at 15:58 +0200, simon polette wrote: > Hi, > > I'm using the last mtd utils version provided by the git mtd > repository. I want to flash an ubi image built with mkfs.ubfis and > ubinize into a Nand flash. Once the nand is flashed, when I try to > attach ubi, I get this error : > > # ubiattach /dev/ubi_ctrl -m 2 > [ 968.980000] UBI: attaching mtd2 to ubi1 > [ 969.000000] UBI: physical eraseblock size: 131072 bytes (128 KiB) > [ 969.030000] UBI: logical eraseblock size: 129024 bytes > [ 969.050000] UBI: smallest flash I/O unit: 2048 > [ 969.060000] UBI: sub-page size: 512 > [ 969.080000] UBI: VID header offset: 512 (aligned 512) > [ 969.100000] UBI: data offset: 2048 > [ 969.330000] UBI error: vtbl_check: volume table check failed: > record 1, error 9 > ubiattach: error!: cannot attach mtd2 > error 22 (Invalid argument) > > The ubi image I use is ok because I already successfully flashed it > and used it with this hardware. This error appeared since I upgraded > both mtd utils and Linux kernel, but even if come back to the previous > versions I was used to work with, this error persist. I think I'm > doing something wrong, but don't know where at all. > Any idea is welcome. You did not enable debugging, as it is asked for here: http://www.linux-mtd.infradead.org/doc/ubifs.html#L_how_send_bugreport But I took a look into the code, and the following is error 9: if (reserved_pebs > ubi->good_peb_count) { dbg_err("too large reserved_pebs %d, good PEBs %d", reserved_pebs, ubi->good_peb_count); err = 9; goto bad; } This means you created a too large UBI volume in the image, and your real flash is smaller. Try to enable UBI debugging, and type dmesg, then you'll see reserved and real eraseblock numbers. -- Best regards, Artem Bityutskiy (Битюцкий Артём)