eMMCでext4パーティションをマウントしようとすると、「無効なパラメータ」エラーが発生します。

eMMCでext4パーティションをマウントしようとすると、「無効なパラメータ」エラーが発生します。

デバイスを生成するためにQt 5.5を使用して、Intel Atom(Baytrail)ベースのAndroidタブレットにカスタムLinuxインストールを設定しようとしています。ビルドシステムはYoctoプロジェクトに基づいており、組み込みLinuxイメージを構築します。タブレット(元のAndroidタブレット)でこのイメージを実行するには、ブートパーティションをカーネル、initramfs、および初期ブートスクリプトを含むイメージに置き換え、システムパーティションをフルイメージに置き換えてから、Intel製作ツールを使用してフラッシュしました。デバイスに。

これまで、initramfsを使用してデバイスを新しいカーネルで起動し、initスクリプトを実行しました。内蔵フラッシュメモリにプライマリパーティションをマウントしようとすると問題が発生します。 「無効なパラメーター」が原因でシステム・パーティションをマウントするコマンドが失敗します。

cat proc / filesystemsはext4がサポートされていることを示し、parted -lはEFIブートパーティションを除いて内部MMCのパーティションがすべてext4であることを示します。 ext4パーティションはマウントできませんが、EFIパーティションはマウントできるため、MMC全体にアクセスできる必要があるとします。

fdisk -lを実行すると、最初のパーティション(EFIブートパーティション)のみが表示されます。これは、fsdiskがGPTをサポートしていないためです。

ext4パーティションをマウントできない理由を知っている人はいますか?すべて/ devにリストされています。

mmcblk0 mmcblk0p1 mmcblk0p2 mmcblk0p3 mmcblk0p4 mmcblk0p5 mmcblk0p6 mmcblk0p7

mmcblk0p1 はマウント可能で、EFI ブートパーティションです。

申し訳ありません。実際の出力を公開できないため、すべてメモリから取得されます。しかし、この記事を書き始めると、デバイスのバッテリーが放電されます。再充電した後、必要に応じてコマンドから実際の出力を取得できるはずです。

修正する

そのため、Busyboxを再コンパイルし、fdiskでGPTサポートを有効にし、fdiskにパーティションを一覧表示しました。また、デバイスにTestDiskがインストールされており、TestDiskを使用してファイルシステムを参照できます。 /dev/mmcblk0p(2 - 7) 以下にリストされているパーティションをマウントする試みはまだ機能しませんが、fdisk -l から開始セクタをインポートし、ループデバイス(スタートセクタ * セクタサイズ)を設定してパーティションを正常にマウントできます。あります。 ) /dev/loop0 /dev/mmcblk0、最後に /dev/loop0 をマウントします。 /dev/mmcblk0p2などをマウントするのではなく、なぜこの方法を実行する必要がありますか?

ベストアンサー1

問題は、すべてのパーティションが/ devの下にリストされていないことです。 eMMCには15個のパーティションがありますが、1〜7個しかリストされていません。私の考えでは、1 - 7はext4パーティションにすぎず、他のパーティション(ext4でフォーマットされていない)はそこには表示されません。したがって、ext4パーティションをマウントすると考えると、他のパーティションをマウントしようとしますが、それを行うことができず、エラーが発生します。問題はカーネル構成、特にCONFIG_MMC_BLOCK_MINORSに起因します。デフォルトは8なので、最初の数個のパーティションのみが表示されます。値20でカーネルを再コンパイルしましたが、残りのパーティションは/ dev / mmcblk0p8、9、10などの下に表示され、正しくマウントできます。

おすすめ記事