qemu编译简单指南一个 :)
简单的qemu编译说明, 其它有关的网络和管理配置等 :)
qemu编译
登录官方网站直接下载源码包(例如文件名为qemu-2.8.0.tar.bz2)
解压文件
tar –jxvf qemu-2.8.0.tar.bz2
安装 依赖库
Ubuntu系统1
2
3
4
5
6
7
8sudo apt-get install -y zlib1g-dev
sudo apt-get install -y libglib2.0-dev
sudo apt-get install -y autoconf2.13
sudo apt-get install -y libtool
sudo apt-get install -y libgtk2.0-dev
以下组件可选, 针对更新的版本, 比如5.x, 6.x
sudo apt-get install ninja-build
sudo apt-get install libpixman-1-devCentos系统
1
2
3
4
5
6
7
8
9yum install zlib-devel.x86_64 -y
yum install gtk2-devel –y
yum install autoconf
yum install gettext
yum install flex
yum install bison
以下安装包可选
yum install ninja-build
yum install spice-server-devel编译安装
1
2
3
4cd qemu-2.8.0
./configure --enable-kvm --enable-debug --target-list=x86_64-softmmu
make -j 4 #注意, 此处的4与虚拟机或者物理机的逻辑处理器个数一样. 可以比物理的数量更小,不要超过.
sudo make install
kvm
Ubuntu系统 sudo apt install qemu-kvm
其它Linux系统 yum install qemu-kvm.x86_64
注意查看cat /proc/cpuinfo |grep -E "vmx|svm"
是否有结果, 如果没有, 记得启动vmware的cpu的虚拟化intel VT-x选项.
创建虚拟机
假设创建一个虚拟机硬盘为10G:qemu-img create -f qcow2 centos.img 10G
通过iso创建安装系统qemu-system-x86_64 -m 256 -hda centos.img -cdrom winxpsp2.iso -enable-kvm
如果默认没有虚拟机界面, 可以安装vncviewer查看
1 | sudo apt-get install tigervnc-viewer |
安装完成后, 启动qemu会提示连接 127.0.0.1:5900, 我们使用vncviewer ::5900
连接即可
使libvirt启动我们编译的qemu版本
如果使用libvirt创建过虚拟机, 那么可以在 /etc/libvirt/qemu/
找到虚拟机对应的xml文件. 修改下列参数:
1 | <emulator>/usr/bin/qemu-system-x86_64</emulator> |
改成自己编译的qemu文件目录. 比如/home/vv/qemu-6.2.0/build/qemu-system-x86_64
对于ubuntu, 还需要修改沙箱配置, 给libvirt配置访问权限.
先使用sudo aa-status
查看是否包含/usr/sbin/libvirtd
, 如果包含, 说明启用了apparmor.
修改以下文件/etc/apparmor.d/usr.sbin.libvirtd
, 在下列类似列后面添加以下内容:
1 | /usr/bin/kvm rmix, 这行默认就有 |
还有/etc/apparmor.d/abstractions/libvirt-qemu
:
1 | /usr/bin/kvm rmix, 这行默认就有 |
之后重新加载规则sudo systemctl reload apparmor
这样libvirt应该就可以正常启用它了.
如果没有启用apparmor还存在权限问题, 就把selinux暂时关闭:
setenforce 0
更多apparmor的语法规则, 参考 Apparmor 配置文件组件和语法
如果希望virt-manager能启用我们的qemu, 还需要为qemu添加两个编译组件:
1 | yum install qemu-device-usb-redirect.x86_64 usbredir.x86_64 usbredir-devel.x86_64 |
如果是ubuntu, 请使用
sudo apt install libspice-server-dev libusbredirparser-dev
.
并确保./configure --enable-kvm --enable-debug --target-list=x86_64-softmmu --enable-spice
输出以下内容:
1 | spice support: YES |
之后重新编译qemu.
然后在virt-manager的 Edit->Preferences->General
勾选 Enable XML editing
. 之后按照如下修改:
下一次启动虚拟机就可以生效了(使用virt-manager也需要设置沙箱权限).
参考: Changing libvirt emulator: Permission denied
其它使用和研究参考资料
配置tap前记得先安装 bridge-utils, uml-utilities
这个练习题既可以加深你对虚拟化漏洞的理解, 也可以提高你的利用技巧, 虚拟化入门必选
Scavenger: Misuse Error Handling Leading to Qemu/KVM Escape
CVE-2020-14364-Qemu逃逸漏洞分析及两种利用思路
Virtio and Vhost Architecture part1
Virtio and Vhost Architecture part2
错误处理
ERROR: glib-2.56 gthread-2.0 is required to compile QEMU
这个应该是没有装好glib相关的东西, 执行sudo apt install libglib2.0-dev
安装, 如果出现如下错误:
1 | The following packages have unmet dependencies: |
先安装libglib2.0-0, sudo apt install libglib2.0-0=2.64.6-1~ubuntu20.04.3
警告!!! 更改libglib2.0-0的版本可能导致ubuntu 20.04的桌面启动出问题, 重启后将进不了桌面.
Depends: zlib1g (= 1:1.2.11.dfsg-2ubuntu1) but 1:1.2.11.dfsg-2ubuntu1.2 is to be installed
如果安装zlib1g-dev失败出现如下错误:
1 | $ sudo apt install zlib1g-dev |
又提示依赖的版本不对, 用如下方法安装
1 | sudo apt install zlib1g=1:1.2.11.dfsg-2ubuntu1 |
再重新安装sudo apt install zlib1g-dev libglib2.0-dev