记录一下自己是如何完成qemu环境配置的,以及在配置环境时遇到的问题及解决方案
环境版本说明
ubuntu20.04
VMware虚拟机
qemu安装
参考文章:Ubuntu 22.04 安装 QEMU 流程 - arcsin2 的个人博客
拉取并解压
我用 wget 拉取时比较慢,直接复制链接下载完再复制到虚拟机里
1 | wget https://download.qemu.org/qemu-7.2.0.tar.xz |
安装依赖
1 | sudo apt-get install ninja-build |
安装libslirp-dev,这个我还不了解是什么,后续深入了解后再补充,没安装的话有些题目启动会报错,一定要在./configure前安装好,不然就得像我一样编译两次(哭了)
1 | sudo apt-get install libslirp-dev |
没安装的话报错如下
说缺少了user网络后端的支持
1 | qemu-system-x86_64: -netdev user,id=t0,: network backend 'user' is not compiled into this binary |
预处理
本来是没有后面那个 –enable-slirp 的,加上这个是因为安装了 libslirp-dev
1 | ./configure --enable-slirp |
编译
此过程大概需要编译30分钟
1 | make |
安装
1 | sudo make install |
验证
输入 qemu- 后按两次 Tab
1 | qemu-[Tab][Tab] |
输出如下选择即安装成功
运行sh启动脚本时遇到的错误
报错1
缺少了libaio.so.1文件
1 | ./qemu-system-x86_64: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory |
解决方案
1 | sudo apt-get install libaio1 |
报错2
缺少了libcurl3,我本机的是libcurl4,很多程序都依赖于libcurl4,而且你只能从libcurl3或libcurl4中选择一个进行安装(有种强制爱的感觉),如果换成了libcurl3,虚拟机大概率是会崩的,不过还是有解决办法的
1 | ./qemu-system-x86_64: /lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by ./qemu-system-x86_64) |
解决方案
你可以在这里找到如何同时安装libcurl3和libcurl4的方法:
software installation - How to have both libcurl3 and libcurl4 installed at same time? - Ask Ubuntu
我这里简述一下
先查看一下版本
1 | apt-cache policy libcurl4 |
输出如下
因为我已经安装好了libcurl3和libcurl4的包,所以我Installed那里显示的就不是什么7.81.0之类的
在输出中可以看到有一个名为 7.68.0-1ubuntu2.5ppa1 的包,我们只需安装这个包,就可以同时拥有libcurl3和libcurl4的环境
直接执行下面的命令,不需要去删除libcurl4
1 | sudo apt install libcurl4=7.68.0-1ubuntu2.5ppa1 |
报错3
说无法访问kernel模块,该文件不存在
1 | Could not access KVM kernel module: No such file or directory |
解决方案
在虚拟机设置中打开 “虚拟化 Inter VT-x/EPT 或 AMD-V/RVI(V)” 即可
启动设备测试
我这里用的是 [HITB GSEC2017]BABYQEMU 这道题
bash中运行启动脚本
1 | ./launch.sh |
得到如下结果,说明设备已经启动成功,可以开始pwn啦