我一直在研究如何从 SD 卡启动 Android。这是带有说明的帖子:
胜利!
我获取了 sdbags 的库存 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 系统并不是绝对必要的,但它使它变得更加容易,因为您可以加载驱动程序、准备文件系统等。 TF701t 的库存 ROM(我假设大多数(如果不是全部)适用于所有 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启动,请发表评论说明你使用的方法和设备,谢谢。 :)