大きな問題ではないようですが、まだ何が問題なのかはわかりません。
私はBuildroot 2013.11を使用してSDカードから起動する組み込みLinux(2.6.39)ARM9システム用のイメージを構築しています。別のファイルシステム形式を試しましたが、一部は起動しません。
私は会社員のために何をしましたか?:例:rootfs.cramfsが動作しており、Linux menuconfigで私が選択しました。
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
UBIFSは、ソフトウェアが処理するネイティブフラッシュデバイス用に設計されています。消去されたビットまたはページ書き込みとは違うブロックをクリア。 UBIFSはブロックデバイスでは動作しません。ハードウェア(または一般にファームウェア)は、ソフトウェアが書くふりをする単純なインターフェースを提供するために、ページまたはブロックの再マッピング(したがってある程度摩耗平準化)を処理します。セクタはセクタのみを覆います(磁気リポジトリと同様)。
SDカード、MMC、SSD、USBフラッシュドライブなどは、ハードウェアでブロックの再マッピングを処理し、ブロックデバイスインタフェースを提供するため、UBIFSはこれらのデバイスでは機能しません。
UBIFS は、中間層として UBI を使用して MTD デバイスで動作します。
よりUBIFSドキュメント詳細については。
答え2
~によるとUBIFSドキュメントMMC / SDなどのブロックデバイスでは機能しません。だからそれがエラーだと思います。