QEMU/seaBIOS启动流程分析

本文深入分析QEMU的启动流程,从machine_init开始,详述如何注册QEMUMachine,加载BIOS文件到虚拟内存,并介绍SeaBIOS的启动过程,包括POST阶段、系统资源初始化、硬件配置、外设初始化,最终引导操作系统。
摘要由CSDN通过智能技术生成

1 QEMU函数执行流程

  machine_init(pc_machine_init) –> pc_machine_init(void) –> 注册QEMUMachine结构体变量pc_i440fx_machine_v2_3 –> pc_init_pci –> pc_init1 –> pc_memory_init –> pc_system_firmware_init –> old_pc_system_rom_init –> 检查bios文件不为空并且大小是65536的整数倍 –> memory_region_init_ram初始化一定大小的虚拟机物理内存 –> vmstate_register_ram_global –> memory_region_set_readonly –> rom_add_file_fixed将bios文件加载到虚拟机物理内存(uint32_t)(-bios_size)(物理内存最高的地方)处 –> memory_region_init_alias创建isa_bios作为bios的别名使用,但是最多映射bios的最后128Kb –> memory_region_add_subregion_overlap将isa_bios映射到ISA空间 –> memory_region_set_readonly设置ISA空间为只读 –> memory_region_add_subregion将bios映射到ROM内存的最高处。

2 seaBIOS背景知识

  SeaBIOS也像正常的BIOS一样,在虚拟机上电的时候,会被加载到地址空间0xFFFFFFF0处,并且该处是一条跳转指令,虚拟机的虚拟CPU会去执行SeaBIOS的代码,完成虚拟硬件的初始化,中断服务函数的设置,ACPI表、SMBIOS表、E820表等的创建,最后引导启动OS。
  SeaBIOS程序的各种

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值