error!: "/dev/ubi0" is not a character device ?!?
Arno Steffen
arno.steffen at googlemail.com
Thu Aug 5 07:55:02 EDT 2010
2010/7/30 Artem Bityutskiy <dedekind1 at gmail.com>:
> On Wed, 2010-07-28 at 13:04 +0200, Arno Steffen wrote:
>> Thanks Artem,
>> I am using a 2.6.33 kernel, this should be new enough. It is right,
>> that it is as a block device (in /dev/ ) ?
>
> No, _all_ UBI devices are character devices. New UBIFS can mount these
> character devices, old UBIFS cannot, and requires deviceless mounting.
>
> As documented here:
>
> http://www.linux-mtd.infradead.org/faq/ubifs.html#L_mount_ubifs
>
> 2.6.33 indeed should be able to mount /dev/ubi0_0.
>
> But because your system is strange in a way that your UBI devices are
> block devices, this does not work.
>
>> [root at or:/]# ubiattach /dev/ubi_ctrl -m 8 -d 8
>> UBI: attaching mtd8 to ubi8
>> UBI: physical eraseblock size: 131072 bytes (128 KiB)
>> UBI: logical eraseblock size: 129024 bytes
>> UBI: smallest flash I/O unit: 2048
>> UBI: sub-page size: 512
>> UBI: VID header offset: 512 (aligned 512)
>> UBI: data offset: 2048
>> UBI warning: ubi_eba_init_scan: cannot reserve enough PEBs for bad PEB
>> handling, reserved 1, need 3
>> UBI: attached mtd8 to ubi8
>> UBI: MTD device name: "extra"
>> UBI: MTD device size: 41 MiB
>> UBI: number of good PEBs: 331
>> UBI: number of bad PEBs: 1
>> 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: 331
>> UBI: number of PEBs reserved for bad PEB handling: 1
>> UBI: max/mean erase counter: 1/0
>> UBI: image sequence number: 228182237
>> UBI: background thread "ubi_bgt8d" started, PID 386
>> UBI device number 8, total 331 LEBs (42706944 bytes, 40.7 MiB),
>> available 0 LEBs (0 bytes), LEB size 129024 bytes (126.0 KiB)
>> [root at or:/]# ll /dev/ubi*
>> brw-rw---- 1 root root 253, 0 Jan 1 00:00 /dev/ubi8
>> brw-rw---- 1 root root 253, 1 Jan 1 00:00 /dev/ubi8_0
>> crw-rw---- 1 root root 10, 63 Jan 1 00:00 /dev/ubi_ctrl
>
> Wrong. Everything has to be character devices.
>
>> [root at or:/]#
>> [root at or:/]# mount -t ubifs /dev/ubi8 /tmp
>> mount: mounting /dev/ubi8 on /tmp failed: No such device
>> [root at or:/]# mount -t ubifs /dev/ubi8_0 /tmp
>> mount: mounting /dev/ubi8_0 on /tmp failed: No such device
>
> These do not work because /dev/ubi* have to be chdev.
>
>> [root at or:/]# mount -t ubifs ubi8_0 /tmp
>> mount: mounting ubi8_0 on /tmp failed: No such device
>> [root at or:/]# mount -t ubifs ubi8 /tmp
>> mount: mounting ubi8 on /tmp failed: No such device
>
> Do you have volume 0 on ubi8?
>
> Please, send me ls /sys/class/ubi/ and ls /sys/class/ubi/ubi8/
>
> Also, please, check /proc/devices and make sure ubi is in "Character
> devices" list.
>
> --
> Best Regards,
> Artem Bityutskiy (Артём Битюцкий)
>
>
Thanks Artem for your mail. To answer you requests:
[root at or:/]# ls -l /sys/class/ubi/
lrwxrwxrwx 1 root root 0 Jan 1 00:00 ubi8 ->
../../devices/virtual/ubi/ubi8
lrwxrwxrwx 1 root root 0 Jan 1 00:01 ubi8_0 ->
../../devices/virtual/ubi/ubi8/ubi8_0
-r--r--r-- 1 root root 4096 Jan 1 00:00 version
[root at or:/]# ls -l /sys/class/ubi/ubi8/
-r--r--r-- 1 root root 4096 Jan 1 00:00 avail_eraseblocks
-r--r--r-- 1 root root 4096 Jan 1 00:00 bad_peb_count
-r--r--r-- 1 root root 4096 Jan 1 00:01 bgt_enabled
-r--r--r-- 1 root root 4096 Jan 1 00:00 dev
-r--r--r-- 1 root root 4096 Jan 1 00:00 eraseblock_size
-r--r--r-- 1 root root 4096 Jan 1 00:00 max_ec
-r--r--r-- 1 root root 4096 Jan 1 00:00 max_vol_count
-r--r--r-- 1 root root 4096 Jan 1 00:00 min_io_size
-r--r--r-- 1 root root 4096 Jan 1 00:01 mtd_num
drwxr-xr-x 2 root root 0 Jan 1 00:01 power
-r--r--r-- 1 root root 4096 Jan 1 00:00 reserved_for_bad
lrwxrwxrwx 1 root root 0 Jan 1 00:01 subsystem ->
../../../../class/ubi
-r--r--r-- 1 root root 4096 Jan 1 00:00 total_eraseblocks
drwxr-xr-x 3 root root 0 Jan 1 00:00 ubi8_0
-rw-r--r-- 1 root root 4096 Jan 1 00:01 uevent
-r--r--r-- 1 root root 4096 Jan 1 00:01 volumes_count
[root at or:/]# ls -l /dev/u*
brw-rw---- 1 root root 252, 0 Jan 1 00:00 /dev/ubi8
brw-rw---- 1 root root 252, 1 Jan 1 00:00 /dev/ubi8_0
crw-rw---- 1 root root 10, 63 Jan 1 00:00 /dev/ubi_ctrl
cr--r--r-- 1 root root 1, 9 Jan 1 00:00 /dev/urandom
cat /proc/devices give me back, that (252 ubi8) is a character device.
But looking above, in /dev it is listed as block device !?!
For me creating entries are not transparent, this happend with
ubiattach. No idea how to force ubiattach to write ubi8 in the
devicelist as character device.
Best regards
Arno
More information about the linux-mtd
mailing list