SD カードから起動するために Android のブート シーケンスを変更するにはどうすればよいですか?

SD カードから起動するために Android のブート シーケンスを変更するにはどうすればよいですか?

SD カードから Android を起動する方法を調べていました。手順が記載されている投稿は次のとおりです。

勝利!

私は sdbags の標準 zip (4.3) を入手し、自分のコンピュータで解凍しました。unmkbootimg を使用して、ROM の boot.img から initramfs.gz と kernel.gz を抽出しました。initramfs を解凍して un-cpio し、macallan.fstab を変更して、/data の場合は /dev/block/mmcblk1p1、/system の場合は p2、/cache の場合は p3 を参照するようにしました。また、init.macallan.rc を変更して、EMMC 上にファイルシステムを作成しようとしないようにしました。EMMC にはまったく触れないようにしたいのです。

次に、initramfs.gz を再構築しました。高品質のクラス 10 microSD を購入し、コンピューター上で 3 つのプライマリ パーティション (/data 用、/system 用、/cache 用) に分割しました (/system と /cache 用にそれぞれ約 2GB と 1GB)。3 つのパーティションすべてに ext4 ファイル システムを作成し、p2 をマウントし、ROM をコピーして、updater-script をガイドとして使用して手動でインストールしました。次に、SD カードをアンマウントして、TF701t に挿入しました。

起動するには、タブレットを fastboot モードにしました。カーネルと RAM ディスクを「fastboot boot」で起動しました。リカバリからの kexec は必要ありません。内部 EMMC にまったく依存せずにこれを行うことができます。起動には少し時間がかかりましたが、1 回目の試行で起動しました。アプリ ドロワーの表示は少し遅かったですが、タブレットをとにかく使用できることに満足しています。このプロセス全体は、予想していたよりもはるかに簡単でした。この方法で必要な ROM を起動できると確信しています。Bluetooth キーボードのドライバーの問題があるため、ストックのみを使用しています。

それでも、cromiのROM2SDブランチのメンテナンスに挑戦してみようと思います

皆様のご協力に感謝いたします!

その後、さらに詳しく説明しましたここ:

質問への回答ですが、わかりません。私の方法は、ROM の /system および /data がどのデバイス/パーティションにあるかという認識を変更したため、起動に有効です。デバイスが、どのパーティションに無線ファームウェアがあるかという認識をどこに保持しているかはわかりません。initramfs のどこかにある場合は、私が変更したのと同じ方法で変更し、外部 SD から無線をロードするように指示できます。ROM が内部 SD 上の無線を探すようにハードコードされている場合は、困ったことになるかもしれません。

興味のある方のために、initramfs について簡単に説明します。initramfs (initrd、initramdisk など) は、Linux システムを実行するために必要な最低限の要素を保持する圧縮された小型 Linux ファイルシステムです。initrd の役割は、実際の Linux インストールを保持するファイルシステムがどこにあるかを判断し、それらをマウントし、その Linux システムに制御を渡すことです。

Linux システムの起動に initrd を使用する必要は必ずしもありませんが、ドライバーのロード、ファイルシステムの準備などが可能になるため、非常に簡単になります。TF701t の標準 ROM (およびすべての Android デバイスの ROM のほとんど、またはすべて) は、initrd を使用して /system、/data、およびその他の必要なパーティションをマウントします。私は、内部 SD ではなく外部 SD からそれらをマウントするように指示しているだけです。

無線パーティションがどのように機能するかはわかりません。パーティション上の単なる生のファームウェア イメージですか、それともファームウェア バイナリ ファイルを含む ext4 (またはその他の) ファイルシステムですか。後者の場合、initrd は、Android に制御を渡す前に、無線ファームウェアを他のすべてのものとともにマウントする可能性があるため、外部カードのパーティションに変更できる可能性があります。

よくわかりませんが、これは Linux OS (inramfs.gz、kernel.gz、および一般的な起動プロセス) と同様のものを扱っているようなので、もう少し詳しく説明してもらえることを期待していました。

答え1

SD カードから起動する標準的な方法はよくわかりませんが、それがどれだけ簡単かは、使用している Android デバイスによって大きく異なります。

たとえば、Nexus デバイスをお持ちの場合は、Play ストアから MultiROM をダウンロードするだけで準備完了です。通常はそれほど簡単ではありません。現在、Mediatek MT6575 ベースのデバイスを SD カードから起動しようとしていますが、内部の eMMC メモリが死んでおり、まだうまくいっていないため、現時点では「壊れている」状態だと思います。


ここで私が言おうとしているのは、デバイスの種類は多岐にわたり、それぞれパーティション レイアウトやカーネルなどが異なるため、すべてのデバイスで機能するステップバイステップのガイドは存在しないということです。

いくつかの異なるデバイスで SD から起動する方法の例を示します。これにより、必要な手順がわかるようになります。また、お持ちのデバイスを教えていただければ、そのデバイスで機能する方法を見つけられるかもしれません。

SDカードからAndroidを起動するwiki- これは「sunxi」Android タブレットのサイトにありますが、SD カード イメージが sunxi タブレットでのみ機能する場合でも、リカバリ パーティションとブート パーティションの編集に関する情報が含まれているため、役立ちます。

GS3ではeMMCの代わりにSDを使用する- SD カードをパーティション分割し、boot.img を編集する方法を手順ごとに説明します。この方法を MT6575 で試しましたが、fstab の情報を変更するだけでは不十分で、デバイスでは依然として eMMC から起動しようとしていましたが、GS3 をお持ちの場合はこれが理想的です。

MediaTek デバイスのマルチブート- 内部 eMMC に 1 つの ROM を配置し、SD カードに 2 番目の ROM を配置する方法。大まかな手順を説明します。MediaTek デバイスをお持ちの場合は機能する可能性があります。

ROMを変換してSDカードから起動する- Nokia X2 を念頭に置いて書かれていますが、現在この方法を実行しています。両方のシステム パーティションを一度にマウントします。SD システム パーティションのマウント ポイントは /system-ext です。

今のところは以上です。SD から起動できた場合は、使用した方法とデバイスをコメントで教えてください。よろしくお願いします。 :)

関連情報