构建一个虚拟机监控程序,2:引导 Linux

主要观点:通过一系列 KVM API 和相关设置,让 hypervisor 引导 Linux 内核进入包含虚拟init的基本用户空间,涵盖长模式、分页、Linux 引导协议等主题,包括设置各种寄存器、页表等,还构建了一个简单的内核并进行测试,后续将覆盖 VirtIO 设备等内容。
关键信息

  • 详细介绍了 Linux 引导协议中内存布局等内容。
  • 阐述了分页的基本设置,包括页表结构、地址转换等。
  • 说明了段寄存器和长模式的设置要求及代码实现。
  • 编写了 64 位的 hello world 程序进行测试。
  • 实现了加载内核镜像的相关操作,包括修改设置头字段等。
  • 构建了用于测试的 tiny 内核,并添加了虚拟init程序。
    重要细节
  • 内核可从实模式、保护模式、长模式或直接从 UEFI 启动,文中选择长模式。
  • 分页设置中通过身份映射页满足内核需求,且提到不同层次页表的结构和作用。
  • 段寄存器设置包括代码段和数据段的相关属性及编码方式。
  • 加载内核镜像时需处理设置头字段,如 initramfs 地址等。
  • 构建 tiny 内核时需启用特定配置选项,且通过虚拟 initramfs 来执行 init 程序。
阅读 13
0 条评论