&#34; fastboot如何启动<kernel>&#34;在内部工作?

时间:2016-01-08 00:31:01

标签: android linux-kernel boot fastboot

Fastboot具有以下方便feature(如果启动自定义图像失败,设备下次会神奇地启动默认图像,并且所有内容都会正常运行):

  

使用主机端内核映像启动

     

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

     

fastboot boot&lt;内核&gt; [&lt; ramdisk&gt; ]

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

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

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

顺便问一下:因为我正在开发的应用程序,我问这个问题;我想&#34;无风险&#34;直接从设备启动一个自定义内核,在那里存储它,例如在SD卡上。

1 个答案:

答案 0 :(得分:8)

  

在重启设备之前,是否将内核复制到特殊启动分区?

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

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

  

有谁知道它内部的运作方式?

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

  顺便问一下:因为我正在开发的应用程序,我问这个问题;我想“冒险”直接从设备启动定制内核,在那里存储例如:在SD卡上

你可能不得不使用其他一些bootloader /方法而不是这个fastboot。