I guess this is not a big problem, still I can't see what's the matter.

I'm building Images for an Embedded Linux (2.6.39) ARM9 System with Buildroot 2013.11, which is booting from an SD card. I was trying different file system formats, where some of them couldn't manage to boot.

What I did for the working ones: E.g.: rootfs.cramfs is working, in Linux menuconfig I selected

File Systems
- Miscellaneous filesystems
- - Compressed ROM file system support (cramfs)

Then I put the kernel on the first partition of the sd, and for the second partition I used the dd command:

sudo dd if=/[path-to-rootfs]/rootfs.cramfs of=/dev/sdb2 bs=2048

The kernel command line looks like:

console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait

And it's booting the system without any problems.

What I did for the ones that didn't work: E.g.: rootfs.ubifs (and many others too). Actually I did nearly the same steps as above. The Kernel command line stays the same. The things I canged is in linux-menuconfig:

File Systems
- Miscellaneous filesystems
- - SquashFS 4.0 - Squashed file system support
- - - Squashfs XATTR support
- - - Include support for LZO compressed file systems
- - - Include support for XZ compressed file systems

and dd command:

sudo dd if=/[path-to-rootfs]/rootfs.ubifs of=/dev/sdb2 bs=2048

(btw: after this step the host system isn't able anymore to read the content of the 2 partition).

But then It crashes during boot with the message:

No filesystem could mount root

and then a kernel panic occurs (due to the line above). If interested I can put the .config file here.

Does anyone see my mistake?


UBIFS is designed only for raw flash devices, where the software handles writes to an erased bit or page separately from block erasure. UBIFS does not work on block devices, where the hardware (or usually firmware) handles page or block remapping (and thus wear leveling, to the extent that it does) so as to offer a simple interface where the software can pretend that writing to a sector just overwrites that sector (like on magnetic storage).

SD cards, MMC, SSD, USB flash drives and so on handle block remapping in hardware and offer a block device interface, so UBIFS does not work on these devices.

UBIFS works on MTD devices with UBI as an intermediate layer.

See the UBIFS documentation for more details.


According to an UBIFS documentation it isn't working at all with block devices such as MMC/SD. So I guess this is the error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.