web-dev-qa-db-ja.com

SDカードにUBIFSをマウントできませんでした

これは大きな問題ではないと思いますが、それでも何が問題なのかわかりません。

SDカードから起動するBuildroot2013.11を使用して組み込みLinux(2.6.39)ARM9システム用のイメージを構築しています。私はさまざまなファイルシステム形式を試していましたが、そのうちのいくつかは起動できませんでした。

動作しているものに対して行ったこと:例:rootfs.cramfsが動作している、Linuxmenuconfigで選択した

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

次に、カーネルをsdの最初のパーティションに配置し、2番目のパーティションにddコマンドを使用しました。

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

カーネルコマンドラインは次のようになります。

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

そして、問題なくシステムを起動しています。

機能しなかったものに対して私がしたこと:例:rootfs.ubifs(および他の多くのものも)。実際、私は上記とほぼ同じ手順を実行しました。カーネルコマンドラインは同じままです。私がカンジしたものは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

およびddコマンド:

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

(ところで:このステップの後、ホストシステムは2パーティションのコンテンツを読み取ることができなくなります)。

しかし、起動中に次のメッセージが表示されてクラッシュします。

No filesystem could mount root

その後、カーネルパニックが発生します(上記の行が原因)。興味があれば、ここに.configファイルを置くことができます。

誰かが私の間違いを見ますか?

1
user3085931

UBIFSは、ソフトウェアが 消去されたビットまたはページへの書き込みブロック消去 とは別に処理するRAWフラッシュデバイス専用に設計されています。 UBIFSは、ハードウェア(または通常はファームウェア)がページまたはブロックの再マッピングを処理する(したがって、ウェアレベリングを処理する範囲で)ブロックデバイスでは機能しないため、ソフトウェアが書き込みを行うふりをすることができるシンプルなインターフェイスを提供します。セクターはそのセクターを上書きするだけです(磁気ストレージのように)。

SDカード、MMC、SSD、USBフラッシュドライブなどは、ハードウェアでブロックの再マッピングを処理し、ブロックデバイスインターフェイスを提供するため、UBIFSはこれらのデバイスでは機能しません。

UBIFSは、中間層としてUBIを使用するMTDデバイスで動作します。

詳細については、 BIFSドキュメント を参照してください。

BIFSドキュメント によると、MMC/SDなどのブロックデバイスではまったく機能しません。だから私はこれがエラーだと思います。

0
user3085931