如何修改 Android 啟動順序以便從 SD 卡啟動?

如何修改 Android 啟動順序以便從 SD 卡啟動?

我一直在研究如何從 SD 卡啟動 Android。這是帶有說明的帖子:

勝利!

我取得了 sdbags 的 stock zip (4.3) 並將其解壓縮到我的電腦上。我使用unmkbootimg從ROM中的boot.img中提取initramfs.gz和kernel.gz。我解壓縮了 initramfs 並取消了 cpio,然後修改了 macallan.fstab 以引用 /dev/block/mmcblk1p1(代表 /data)、p2(代表 /system)和 p3(代表 /cache)。我還修改了 init.macallan.rc 以避免讓它嘗試在 EMMC 上建立檔案系統——我希望它根本不要嘗試接觸 EMMC。

接下來我重建了 initramfs.gz。我買了一個品質好的class 10 microsd,並在我的電腦上將其分區為3個主分區,一個用於/data,一個用於/system,一個用於/cache(大約2GB和1GB用於/system和/cache)。我在所有 3 個分區上建立了 ext4 檔案系統,安裝了 p2,然後複製了 ROM,並使用更新程式腳本作為指導手動安裝了它。然後我卸載 SD 卡並將其插入我的 TF701t。

為了啟動它,我將平板電腦置於快速啟動模式。我使用“fastboot boot”啟動了核心和 ramdisk——恢復時不需要 kexec。我可以在不依賴內部 EMMC 的情況下完成此操作。啟動需要一段時間,但第一次嘗試就啟動了。應用程式抽屜的出現有點慢,但我很高興能夠使用我的平板電腦!整個過程比我預期的要容易得多,而且我非常有信心我可以這樣做來啟動我想要的任何 ROM。由於藍牙鍵盤的驅動程式問題,我只使用庫存。

儘管如此,我仍然願意嘗試維護 cromi 的 ROM2SD 分支

感謝大家的幫忙!

然後還有更多的闡述這裡:

回答你的問題,我不知道。我的方法適用於啟動,因為我改變了 ROM 關於設備/分區/系統和/資料所在的想法。我不知道您的設備在哪裡保存了哪個分區保存無線電韌體的想法。如果它位於 initramfs 中的某個位置,那麼您可以按照我修改我的方法相同的方式對其進行修改,並告訴它從外部 SD 加載無線電。如果 ROM 被硬編碼為在內部 SD 上尋找無線電,那麼您可能會被搞砸。

對於那些好奇的人來說,關於 initramfs 的簡要說明:initramfs(initrd、initramdisk 等)是一個壓縮的微型 Linux 檔案系統,其中包含運行 Linux 系統所需的基本要素。 initrd 的工作是找出保存實際 Linux 安裝的檔案系統的位置,安裝它們,並將控制權移交給該 Linux 系統。

使用 initrd 來引導 Linux 系統並不是絕對必要的,但它使它變得更加容易,因為您可以載入驅動程式、準備檔案系統等。 Android 裝置的ROM)使用initrd 來掛載/system、/data 和任何其他必要的分區。我只是告訴它從我的外部 SD 而不是內部安裝這些。

我不知道無線電分區是如何運作的。它只是分割區上的原始韌體映像,還是帶有韌體二進位檔案的 ext4(或其他)檔案系統?後一種情況可能意味著 initrd 在將控制權移交給 android 之前安裝了無線電韌體以及它所做的所有其他操作,因此這可能意味著您可以將其更改為外部卡上的分割區。

我不太明白,我希望得到一些詳細說明,因為這似乎處理與 Linux 作業系統類似的事情(inramfs.gz、kernel.gz 和一般的啟動過程)。

答案1

我真的不知道從 SD 卡啟動的標準方法,它是否容易主要取決於您使用的 Android 設備:

例如,如果您有 Nexus 設備,您只需從 Play 商店下載 MultiROM 就可以了。通常事情從來沒有那麼簡單;我目前正在嘗試讓我的基於 Mediatek MT6575 的裝置從 SD 卡啟動,因為內部 eMMC 記憶體已耗盡,並且尚未對其進行管理,所以我猜現在它已「變磚」。


我在這裡想說的是,沒有適用於所有設備的分步指南,因為設備種類繁多,每個設備都有不同的分區佈局、內核等。

我將提供一些關於如何為幾種不同設備從 SD 啟動的範例,希望您能夠了解其中涉及的內容,而且如果您說您擁有什麼設備,我可能已經遇到過該設備的工作方法。

從 SdCard wiki 啟動 Android- 這是「sunxi」android 平板電腦的網站,但資訊很有幫助,因為它包含有關編輯恢復和啟動分區的信息,即使 SD 卡映像僅適用於 sunxi 平板電腦。

在 GS3 上使用 SD 取代 eMMC- 逐步介紹如何對 SD 卡進行分區和編輯 boot.img。我已經在我的 MT6575 上嘗試過這種方法,但僅更改 fstab 上的信息還不夠,它仍在嘗試從我的設備的 eMMC 啟動,但如果您有 GS3,這是理想的選擇。

MediaTek 設備的多重啟動- 如何在內部 eMMC 上擁有 1 個 ROM,在 SD 卡上擁有第 2 個 ROM。給出了粗略的步驟,如果您有聯發科技設備,可能會起作用。

將 ROM 轉換為從 SD 卡啟動- 編寫時考慮的是諾基亞 X2,但我現在正在使用這種方法,同時安裝兩個系統分區,SD 系統分區的安裝點是 /system-ext

目前我所掌握的就是這些,如果你能從SD啟動,請發表評論說明你使用的方法和設備,謝謝。 :)

相關內容