QEMU 下载与编译¶
本文介绍如何从源码编译 QEMU。
获取 QEMU 源码¶
我们可以前往 qemu 的官网下载对应版本的源码:
$ wget https://download.qemu.org/qemu-7.0.0.tar.xz
$ tar -xf qemu-7.0.0.tar.xz
也可以直接从 GitHub 上获取:
$ git clone git@github.com:qemu/qemu.git
编译 QEMU¶
首先安装一些必备的依赖:
$ sudo apt -y install ninja-build build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libpixman-1-dev libfdt-dev
接下来创建 build 目录并配置对应的编译选项:
$ mkdir build && cd build
build$ ../qemu-7.0.0/configure --enable-kvm --target-list=x86_64-softmmu --enable-debug
这里我们手动指定了这几个编译选项:
--enable-kvm
:开启 kvm 支持。--target-list=<架构名>
:指定要编译的 CPU 架构,这里我们指定为x86_64-softmmu
即表示我们要编译 x86 架构的 64位 CPU。--enable-debug
:能够对 Qemu 进行调试。
接下来直接 make
即可:
build$ make -j$(nproc)
完成编译之后在当前目录下可以看到一个新的可执行文件 qemu-system_x86-64
,这个就是 Qemu 的本体了。
如果想要从命令行启动我们自行编译的 QEMU,则可以键入 make install
命令,其会自动安装到 /bin
目录下:
build$ sudo make install
调试 QEMU¶
QEMU 允许我们通过 -s
或是 -gdb tcp::1234
这样的附加参数来调试虚拟机(比如说调试 Linux kernel),但有的时候我们想要直接调试 QEMU 本体(比如说调试一些自己写的模拟设备),这个时候就需要我们将 Host 上的 QEMU 进程作为待调试对象。
由于 QEMU 本质上也是运行在宿主机上的一个进程,因此我们只需要直接找到其对应的 pid 便能直接使用 gdb attach
进行调试。