【问题标题】:Is Zircon Boot Image (ZBI) essential for bootin the Zircon kernel?Zircon 引导映像 (ZBI) 是引导 Zircon 内核所必需的吗?
【发布时间】:2021-10-04 17:01:45
【问题描述】:

Zircon 内核的kernel entrypoint 调用platform_early_init() 从.S 文件中获取zbi_paddr,然后传递给pdev_init

void* zbi_vaddr = paddr_to_physmap(zbi_paddr);
zbi_header_t* header = (zbi_header_t*)zbi_vaddr;
ramdisk_base = header;
zbi_root = reinterpret_cast<zbi_header_t*>(ramdisk_base);
pdev_init(zbi_root);

pdev_init 负责启动像 uart 这样的驱动程序。

它看起来像驱动程序通过pdev_run_hooks(在同一个文件上),它遍历zbi文件并找到每个驱动程序信息。

所以看起来 ZBI 对引导至关重要?

我问是因为我编译了锆石内核得到了

lz@vm:~/fuchsia/out/default/kernel_arm64$ ls gen
image.build-id.stamp kernel.zbi toolchain.ninja zircon.elf.build-id.stamp zircon.elf.map 图像 image.map
obj zircon.elf zircon.elf-gdb.py

如您所见,它会生成zircon.elf,理论上可以运行,但我认为 ZBI 信息对于引导至关重要,否则会出现恐慌。我说的对吗?

【问题讨论】:

    标签: c kernel bootloader boot fuchsia


    【解决方案1】:

    Zircon 期望引导加载程序传递一个它可以解析的 Zircon 引导映像 (ZBI) 对象。

    该镜像包含很多对系统启动有用的信息,例如,它包含物理内存范围、内核命令行、cpu 拓扑信息、外围设备信息,甚至是用于引导用户空间的只读文件系统。

    您可以在"Zircon Kernel to userspace bootstrapping" documentation 中阅读更多信息。 ZBI 格式在zircon/system/public/zircon/boot/image.h 中描述。

    在 u-boot repo 的 vim2 分支中,you can see how the bootloader assembles and appends zbi 项目在引导到 zircon 之前。

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 2023-03-26
      • 2010-11-30
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2011-03-23
      • 2014-10-01
      相关资源
      最近更新 更多