uboot是否可以通过任何方式了解内核引导状态

时间:2018-07-12 18:10:07

标签: linux-kernel kernel embedded-linux u-boot

一旦Uboot将Linux内核映像(ZImage)加载到ram上,它就会调用它(可以使用bootz,bootm或其他基于内核映像类型的命令),然后控制进入引导内核。是否会告知uboot内核引导结果?,意味着内核引导是完全完成还是由于错误而停留在中间?

我在uboot src代码中查看了do_bootz,do_bootm_states和boot_selected_os api,以查看是否有任何方法可以了解最终的内核引导结果,但是我无法弄清楚。

详细信息: U-boot版本:2017.03-rc2 可以在以下位置找到api:cmd / bootz.c和bootm.c文件。

如果该社区中的任何人知道或有任何想法,请向我解释或指出正确的道路。

谢谢。

问候 瓦姆西·夏加里

1 个答案:

答案 0 :(得分:2)

在bootm,booti,bootz之后,将控制权转移到内核,以前由U-Boot使用的内存将由操作系统重用。由于U-Boot不再在内存中,因此无法得知操作系统状态。

如果使用bootefi命令,则在操作系统启动时,UEFI运行时服务的U-Boot实现将保留在内存中。 UEFI服务可以由操作系统调用。这些包括与变量有关的服务。 UEFI变量的一种用途是引导顺序的定义。

不幸的是,UEFI变量尚未在U-Boot中完全实现(自v2018.07版本开始)。退出引导服务后,当前无法访问它们。