kvm启动虚拟机流程(8)
来源:互联网 发布:一淘和淘宝联盟同时返 编辑:程序博客网 时间:2024/06/03 22:41
分配内存、加载rom/bios
/* allocate ram and load rom/bios */
if (!xen_enabled()) {
pc_memory_init(system_memory,
kernel_filename, kernel_cmdline, initrd_filename,
below_4g_mem_size, above_4g_mem_size,
pci_enabled ? rom_memory : system_memory, &ram_memory);
}
gsi_state = g_malloc0(sizeof(*gsi_state));
qemu为gsi状态分配中断
gsi = qemu_allocate_irqs(gsi_handler, gsi_state, GSI_NUM_PINS);
为cpu中断分配内存
if (!xen_enabled()) {
cpu_irq = pc_allocate_cpu_irq();
i8259 = i8259_init(cpu_irq[0]);
} else {
i8259 = xen_interrupt_controller_init();
}
ioapic初始化
if (pci_enabled) {
ioapic_init(gsi_state);
}
vga初始化
pc_vga_init(pci_enabled? pci_bus: NULL);
虚拟机基本设备初始化
/* init basic PC hardware */
pc_basic_device_init(gsi, &rtc_state, &floppy, xen_enabled());
for(i = 0; i < nb_nics; i++) {
NICInfo *nd = &nd_table[i];
if (!pci_enabled || (nd->model && strcmp(nd->model, "ne2k_isa") == 0))
pc_init_ne2k_isa(nd);
else
网卡初始化
pci_nic_init_nofail(nd, "rtl8139", NULL);
}
if (pci_enabled) {
PCIDevice *dev;
if (xen_enabled()) {
dev = pci_piix3_xen_ide_init(pci_bus, hd, piix3_devfn + 1);
} else {
磁盘初始化
dev = pci_piix3_ide_init(pci_bus, hd, piix3_devfn + 1);
}
声卡初始化
audio_init(gsi, pci_enabled ? pci_bus : NULL);
- kvm启动虚拟机流程(8)
- kvm启动虚拟机流程(1)
- kvm启动虚拟机流程(2)
- kvm启动虚拟机流程(3)
- kvm启动虚拟机流程(4)
- kvm启动虚拟机流程(5)
- kvm启动虚拟机流程(6)
- kvm启动虚拟机流程(7)
- kvm启动虚拟机流程(9)
- kvm启动虚拟机流程(10)
- kvm创建虚拟机流程(1)
- kvm创建虚拟机流程(2)
- kvm创建虚拟机流程(3)
- KVM直接启动虚拟机
- kvm 虚拟机的启动
- KVM虚拟机生命周期流程概述
- kvm虚拟机热迁移流程概述
- Qemu创建KVM虚拟机内存初始化流程
- boost asio 学习1
- 三种方法在Infopath中实现数据有效性验证
- Big Data's New Use Cases: Transformation, Active Archive, and Exploration
- 【科研论文】新一代逆变电源智能监控系统研究
- delphi 动态调用DLL
- kvm启动虚拟机流程(8)
- 内网的IP地址
- TMS320x2833x, 2823x Boot Rom Reference Guide 部分选译
- 那些年容易犯错的知识点(回顾)
- 使用udp发送域名请求
- CodeBlock 快捷键大全
- C语言与汇编语言相互调用
- jquery常用方法
- kvm启动虚拟机流程(9)