查看“QEMU”的源代码
←
QEMU
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Emulators}} QEMU是一个免费的开源模拟器,可执行硬件虚拟化。 它广泛用于各种主机操作系统,并且在操作系统开发中需要最少的配置。 它能够模拟各种各样的系统,包括 [[ARM]] 、 [[x86]] 和 [[risc-v]] 等等。 有关更全面的目标清单,请参阅 [https://qemu.weilnetz.de/doc/qemu-doc.html 正式文件]。 ==特性== * 支持多个主机,多个目标。 * 两种操作模式: 完整的系统仿真 (对操作系统开发感兴趣) 和Linux用户进程仿真 (想要仿真应用程序的人会感兴趣)。 * 使用 “just in time” 代码编译技术 (允许重用以前的代码解释)。这使得它比流行的替代模拟器 [[Bochs]] 更快。 * 提供原生的 [[GDB]] 支持。 QEMU可以附加到 [[GDB]]/[[DDD]] 来调试客户操作系统。 有关更多信息,请参阅下面的 [[QEMU#GDB-Stub|GDB-Stub]] 部分。 * 支持 [[VBE]] 2.0. ===VBE 支持=== 通过在 [[GRUB]] 命令行中键入 '<tt>vbeprobe</tt>' 来检查 [[VBE]] 支持。 测试返回: {| {{wikitable}} |- |0x101 |Packed pixel |640x480x8 |- |0x110 |Direct Color |640x480x15 |- |0x111 |Direct Color |640x480x16 |- |0x112 |Direct Color |640x480x24 |- |0x103 |Packed pixel |800x600x8 |- |0x113 |Direct Color |800x600x15 |- |0x114 |Direct Color |800x600x16 |- |0x115 |Direct Color |800x600x24 |- |0x105 |Packed pixel |1024x768x8 |- |0x116 |Direct Color |1024x768x15 |- |0x117 |Direct Color |1024x768x16 |- |0x118 |Direct Color |1024x768x24 |- |0x107 |Packed pixel |1024x768x8 |- |0x119 |Direct Color |1024x768x15 |- |0x11A |Direct Color |1024x768x16 |} ==支持的体系结构== * [[:Category:X86|x86]] * [[X86-64|x86_64]] * [[:Category:ARM|ARM]] * [[ARM64]] * [[LatticeMico32]] * [[M68k_Overview|Motorola 68000]] * [[MicroBlaze]] * [[MIPS]] * [[MIPS64]] * [[Moxie]] * [[PowerPC]] * [[PowerPC64]] * [[RISC-V]] * [[IBM System/390]] * [[SuperH]] * [[:Category:Sparc|SPARC]] * [[SPARC64]] * [[TriCore]] * [[Unicore]] * [[Xtensa]] ==支持的设备== * [[Ne2000]] network card * [[Intel_Ethernet_i217|e1000]] network cards * [[RTL8139]] network card * [[AMD_PCNET|AMD PCnet]] network cards * [[PC_Speaker|PC Speaker]] * [[Sound_Blaster_16|Sound Blaster 16]] sound cards * [[AC97]] * [[Intel_High_Definition_Audio|Intel High Definition Audio]] * [[Virtio]] devices * PCI SVGA card (Cirrus Logic 5446) * PCI support (With BIOS32). ==用法== QEMU不需要使用像Bochs这样的配置脚本。下面可以看到QEMU的示例用法: <source lang="bash"> qemu-system-i386 \ -accel tcg,thread=single \ -cpu core2duo \ -m 128 \ -no-reboot \ -drive format=raw,media=cdrom,file=myos.iso \ -serial stdio \ -smp 1 \ -usb \ -vga std </source> 在非UNIX系统上运行QEMU时,可能需要使用 <tt>-L</tt> 命令行选项来指示QEMU在哪里可以找到BIOS映像。 <tt>-m 128</tt> 参数指示QEMU创建具有128MB RAM的guest系统。 <tt>-drive format=raw,media=cdrom,file=myos.iso</tt> 参数指示QEMU在我们的guest系统中创建驱动器。 在这种情况下,创建的驱动器是CDROM驱动器,其加载介质为 <tt>myos.iso</tt>。 如果guest系统中需要多个驱动器,则可以使用 <tt>-boot</tt> 选项来定义系统检查可引导介质的顺序。 上面使用的 <tt>-serial stdio</tt> 参数指示QEMU将串行输入和输出重定向到主机系统的 <tt>stdio</tt> 流。 这对于调试目的特别有用。 为了帮助追踪triple fault三重故障的根源,<tt>-d int</tt> 选项可用于显示有关发生的中断的其他调试信息。 此外,还可以使用 <tt>-no-shutdown</tt> 和 <tt>-no-reboot</tt> 选项。 这些指示虚拟机在错误时停止,而不是重新启动或关闭,从而允许操作员在三重故障后检查计算机的状态。 其他有用的命令行选项在 [[QEMU#Useful_QEMU_command-line_options | 有用的QEMU命令行选项]] 部分中列出。 键盘快捷键 <tt>CTRL-ALT-{1,2,3}</tt> 可在仿真器内部使用,以交换输入/输出仿真屏幕,QEMU控制台和串行控制台。 可以从系统控制台发出其他调试命令,例如更改磁盘映像和执行内存转储等。 ===QEMU控制台=== QEMU的内部控制台可以通过QEMU内的组合键 <tt>CTRL-ALT-3</tt> 访问。 与 [[Bochs]] 不同,QEMU不提供直接与其内部控制台通信的 [[端口IO | IO端口]]。 输出到内部控制台可以通过串行输出的重定向来完成。 使用以下命令行选项将把COM1的输出重定向到QEMU控制台: <source lang = "bash"> -串行文件: CON </source> ===QEMU监视器=== {{Main|Qemu Monitor}} QEMU具有自己的内部 “监视器” 控制台,用于调试guest操作系统。 通过各种命令,监视器允许您检查正在运行的来宾OS,更改可移动介质和USB设备,拍摄屏幕截图和音频抓取以及控制虚拟机的各个方面。 可以通过QEMU内的组合键 <tt>CTRL-ALT-2</tt> 访问监视器。 调用QEMU时,可以使用以下命令行选项将QEMU的监视器输出重定向到stdio: <source lang = “bash”> -monitor stdio </source> 一些有用的命令: ; xp : eXamine Physical memory. Much like GDB's <tt>x</tt> command, but with no address translation. ; cpu n : switch to CPU n. Note that GDB's threads are numbered from 1, but QEMU's CPUs are numbered from 0. ; info registers : dump register state ; info tlb : Show virtual memory translation state. ; info mem : Show the page table mappings in a compact form. ; help : List all commands -- keep in mind that there may be more commands available than those mentioned in the [http://www.qemu.org/qemu-doc.html#SEC12 QEMU documentation]. QEMU监视器功能的完整列表可在 [https://qemu.weilnetz.de/doc/qemu-doc.html#pcsys_005fmonitor 官方文档] 以及 [https://en.wikibooks.org/wiki/QEMU/Monitor 在此处] 找到。 ==有用的QEMU命令行选项== ”下面显示了QEMU的命令行选项列表,这些选项对操作系统开发具有特殊意义。 有关选项的完整列表,请参阅 [https://qemu.weilnetz.de/doc/qemu-doc.html QEMU官方文档]。'' {| {{wikitable}} |- ! Option ! Description |- | <tt>-no-reboot</tt> | 防止QEMU在发生 [[三重故障]] 时重新启动。 |- | <tt>-no-shutdown</tt> | 不要在guest关闭时退出QEMU,而是只停止仿真。 |- | <tt>-d</tt> | 启用额外调试信息的打印。 Arguments for this option include <tt>cpu_reset, int, guest_errors</tt> ( among others ). 当设置 [[IDT]] 以实时查看中断执行时,这可能非常有用。 |- | <tt>-gdb</tt> or <tt>-s</tt> | 在GDB Stub模式下启动QEMU。 这导致QEMU接受来自 [[GDB]] 客户端的传入连接。 有关更多信息,请参见下文或参考 [https://wiki.qemu.org/Documentation/Debugging 官方文档]。 |- | <tt>-S</tt> | 导致guestCPU在启动时不开始执行。 这对于调试非常有用,因为它会在暂停状态下启动guest。 用户必须使用控制台 (或GDB) 中的 <tt>continue</tt> 命令在guest系统上启动执行。 |} ==GDB-Stub== 使用 <tt>-gdb</tt> 或 <tt>-s <dev></tt> 命令行选项启动QEMU将指示QEMU侦听传入的 [[GDB]] 连接。 默认情况下,QEMU将在 <tt>localhost:1234</tt> 上通过HTTP侦听连接,但是该选项将接受其他连接的参数。 将此开关与 <tt>-S</tt> 选项一起使用很有用,这会导致QEMU在暂停状态下启动。 这将允许额外的时间来连接GDB客户端,以启动模拟需要在GDB或QEMU控制台中发出 <tt>continue</tt> 命令。 为方便起见,还可以创建一个包含命令的文件,供GDB自动执行。 GDB将读取并执行当前工作目录中名称为 <tt>.gdbinit</tt> 的文件的内容。 或者,可以通过使用 <tt>-command = file</tt> 命令行参数来指定不同的文件。下面可以看到一个示例文件: <source lang="gdb"> file <my-kernel-binary> target remote localhost:1234 # Inspect page tables x /8wg &page_tables_start </source> 这将自动将内核二进制文件的符号文件加载到调试器中,然后打开与QEMU的远程连接。<br/> 确保使用包含调试符号的内核进行编译。这可以通过使用GCC选项 <tt>-g</tt> 来实现。 如果发现调试器找不到本地变量,请尝试在编译过程中使用 <tt>-fno-omit-frame-pointer</tt> 选项,或禁用优化。 运行SMP内核时,<tt>info threads</tt> 和 <tt>thread</tt> 命令可用于提供有用的信息。 也可以使用GDB中的 <tt>monitor</tt> 命令使用QEMU监视器及其命令。 有关可用命令及其描述的列表,请使用 <tt>monitor help</tt> 命令。 ==获取详细日志== 通过取消注释QEMU源文件中的某些预处理器指令,可以将其他调试信息输出到stdot。 QEMU源代码中的某些文件具有以下形式的注释行: <source lang="c"> // #define DEBUG_* </source> 使用定义的预处理器变量从源代码重新编译QEMU将导致来自适用文件的其他调试信息被打印到stdoout。 ==另见== ===文章=== *[[QEMU and GDB in long mode]] *[[QEMU_fw_cfg]] Pass strings and files into the VM from the QEMU command line ===外部链接=== *[http://www.qemu.org/ QEMU homepage] *[http://qemu-forum.ipi.fi/ QEMU forum] *[https://en.wikibooks.org/wiki/QEMU QEMU Wikibook] *[https://wiki.archlinux.org/index.php/QEMU#Creating_a_hard_disk_image QEMU at ArchWiki] [[Category:Emulators]] [[de:QEMU]]
本页使用的模板:
模板:Emulators
(
查看源代码
)
模板:If
(
查看源代码
)
模板:Main
(
查看源代码
)
模板:Show1
(
查看源代码
)
模板:SmallNavBox
(
查看源代码
)
模板:Wikitable
(
查看源代码
)
返回至“
QEMU
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息