一旦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文件。
如果该社区中的任何人知道或有任何想法,请向我解释或指出正确的道路。
谢谢。
问候 瓦姆西·夏加里
答案 0 :(得分:2)
在bootm,booti,bootz之后,将控制权转移到内核,以前由U-Boot使用的内存将由操作系统重用。由于U-Boot不再在内存中,因此无法得知操作系统状态。
如果使用bootefi命令,则在操作系统启动时,UEFI运行时服务的U-Boot实现将保留在内存中。 UEFI服务可以由操作系统调用。这些包括与变量有关的服务。 UEFI变量的一种用途是引导顺序的定义。
不幸的是,UEFI变量尚未在U-Boot中完全实现(自v2018.07版本开始)。退出引导服务后,当前无法访问它们。