これは大きな問題ではないと思いますが、それでも何が問題なのかわかりません。
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ファイルを置くことができます。
誰かが私の間違いを見ますか?
UBIFSは、ソフトウェアが 消去されたビットまたはページへの書き込み を ブロック消去 とは別に処理するRAWフラッシュデバイス専用に設計されています。 UBIFSは、ハードウェア(または通常はファームウェア)がページまたはブロックの再マッピングを処理する(したがって、ウェアレベリングを処理する範囲で)ブロックデバイスでは機能しないため、ソフトウェアが書き込みを行うふりをすることができるシンプルなインターフェイスを提供します。セクターはそのセクターを上書きするだけです(磁気ストレージのように)。
SDカード、MMC、SSD、USBフラッシュドライブなどは、ハードウェアでブロックの再マッピングを処理し、ブロックデバイスインターフェイスを提供するため、UBIFSはこれらのデバイスでは機能しません。
UBIFSは、中間層としてUBIを使用するMTDデバイスで動作します。
詳細については、 BIFSドキュメント を参照してください。
BIFSドキュメント によると、MMC/SDなどのブロックデバイスではまったく機能しません。だから私はこれがエラーだと思います。