5

Fastboot 有以下方便的功能(如果启动自定义镜像失败,设备下次会神奇地启动默认镜像,一切都会好起来的):

使用主机端内核映像引导

此命令允许您下载内核映像(和可选的根文件系统映像)并使用它们启动手机,而不是在启动闪存分区中使用内核和 rootfs。在开发内核或修改 rootfs 时非常有用。

fastboot boot <内核> [<ramdisk>]

有谁知道它在内部是如何工作的?内核是否被复制到一个特殊的引导分区在重新启动设备之前? (更新:正如答案指出的那样,没有重启,因为fastboot是启动过程中的一个步骤,这基本上使我的问题毫无意义。)我正在查看fastboot的源代码,但它似乎只包含发生的事情在主机端,而不是在设备上。

我的意思是,闪烁功能的工作原理非常简单,我可以通过将带有自定义内核的引导映像复制到boot分区来模仿它,例如,通过:

dd if='<my_boot.img>' of='/dev/block/platform/msm_sdcc.1/by-name/boot'

顺便说一句:我问这个问题是因为我正在开发一个应用程序;我想“无风险”直接设备启动自定义内核,它存储在例如 SD 卡上。

4

1 回答 1

9

在重新启动设备之前,内核是否被复制到一个特殊的引导分区?

不,不会对任何分区进行修改。
引导内核意味着从存储设备加载(即读入内存)内核映像。这种快速启动类似于网络启动,例如内核映像是使用 TFTP 通过以太网链路从服务器/主机加载的。如果唯一的目的是使用内核映像引导系统,那么根本没有理由将内核映像也写入分区,尤其是在没有明确指定的情况下。

此操作的可选根文件系统明确指定为 ramdisk 映像,它也不需要写入或存储在分区中。

有谁知道它在内部是如何工作的?

fastboot 程序是在您重新启动设备后执行的备用引导加载程序。
内核通过 USB 从主机加载到内存中。可选的 rootfs(一个 ramdisk 或者可能是一个 initramfs 映像)也可以通过 USB 从主机加载到内存中。加载后,就可以开始普通的内核启动了。

顺便说一句:我问这个问题是因为我正在开发一个应用程序;我想“无风险”直接从设备启动自定义内核,它存储在例如 SD 卡上

除了这个 fastboot 之外,您可能必须使用其他一些引导加载程序/方法。

于 2016-01-08T03:45:14.003 回答