qemu介绍
QEMU(Quick Emulator)是一款开源的虚拟化软件,它可以模拟多种硬件架构和设备,允许在一个宿主机上运行不同体系结构的操作系统和应用程序。以下是对QEMU的一些介绍:
虚拟化功能:QEMU是一个全系统虚拟化工具,可以模拟多种硬件架构(如x86、ARM、MIPS等),并提供虚拟机来运行不同操作系统,包括Windows、Linux、BSD等。
硬件模拟:QEMU可以模拟多种硬件设备,包括处理器、内存、磁盘、网络接口卡、图形适配器等。这使得它可以为虚拟机提供接近真实硬件环境的模拟。
用户态和系统态模式:QEMU可以以用户态模式运行,其中虚拟机直接在用户空间运行,提供快速的虚拟化体验。它还可以以系统态模式运行,其中虚拟机利用KVM(Kernel-based Virtual Machine)等内核模块,实现更高性能的虚拟化。
网络支持:QEMU提供网络模拟功能,可以创建虚拟网络,使虚拟机之间可以进行通信,并与宿主机进行网络通信。
快照和回滚:QEMU支持创建虚拟机的快照,可以捕捉虚拟机的当前状态,并在需要时回滚到先前的状态。这对于测试、调试和恢复虚拟机非常有用。
命令行和图形界面:QEMU可以通过命令行界面(CLI)进行配置和管理,也可以使用图形用户界面(GUI)工具(如Virtual Machine Manager)进行操作。
插件和扩展:QEMU支持插件和扩展,可以通过添加额外的模块来扩展其功能,例如通过添加新的硬件设备模拟器。
QEMU在虚拟化、仿真和开发领域具有广泛的应用,它是许多其他虚拟化平台和工具的基础,如KVM、VirtualBox等。它是一个强大而灵活的工具,用于构建和管理虚拟化环境,并提供了许多功能和选项来满足不同需求。
ubuntu上qemu安装
sudo apt update
sudo apt install qemu
查看qemu是否安装成功
qemu-system-x86_64 --version
qemu的源码安装
wget https://download.qemu.org/qemu-<version>.tar.xz
tar xvJf qemu-<version>.tar.xz
cd qemu-<version>
./configure
make
sudo make install
实例安装:
wget https://download.qemu.org/qemu-4.2.0.tar.xz
tar xvJf qemu-4.2.0.tar.xz
cd qemu-4.2.0
./configure
make
qemu源码结构
Qemu 软件虚拟化实现的思路是采用二进制指令翻译技术,主要是提取 guest 代码,然后将其翻译成 TCG 中间代码,最后再将中间代码翻译成 host 指定架构的代码,如 x86 体系就翻译成其支持的代码形式,ARM等架构同理。
从宏观上看,源码结构主要包含以下几个部分:
/vl.c:最主要的模拟循环,虚拟机环境初始化,和 CPU 的执行。
/target-arch/translate.c:将 guest 代码翻译成不同架构的 TCG 操作码。
/tcg/tcg.c:主要的 TCG 代码。
/tcg/arch/tcg-target.c:将 TCG 代码转化生成主机代码。
/cpu-exec.c:主要寻找下一个二进制翻译代码块,如果没有找到就请求得到下一个代码块,并且操作生成的代码块。
涉及的主要几个函数如下: