首页
社区
课程
招聘
【qemu虚拟化随笔一】实验环境搭建
发表于: 2024-5-9 08:54 2437

【qemu虚拟化随笔一】实验环境搭建

2024-5-9 08:54
2437

背景:

生活所迫,需要学习qemu相关的知识,这里就记录一下学习的笔记吧。

qemu:

开源硬件虚拟化软件,可以在不同的主机平台上运行虚拟机,采用全系统仿真,可以模拟完整的计算机系统,包括处理器、内存、存储和外围设备。

kvm:

与QEMU不同,KVM作为Linux的一个内核模块。它利用Intel VT或AMD-V等硬件扩展来实现高效的硬件辅助虚拟化。

qemu-kvm框架:

目前的一种主流虚拟化解决方案。Qemu将KVM整合进来,通过ioctl调用/dev/kvm接口,将有关CPU指令的部分交由内核模块来做。 kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备。 qemu模拟IO设备(网卡,磁盘等),kvm加上qemu之后就能实现真正意义上服务器虚拟化。

环境搭建:

ubuntu24.04 + qemu7.0 + win7

  • 编译安装qemu:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 安装qemu编译依赖库
sudo apt-get install libglib2.0-dev
sudo apt-get install libpixman-1-dev
sudo apt-get install libfdt-dev
sudo apt-get install ninja-build
sudo apt-get install python3-venv
sudo apt-get install libgtk-3-dev
 
#2. github克隆qemu源码 (https://github.com/qemu/qemu)
 
#3. 编译qemu
mkdir build
cd build/
../configure --enable-gtk
make -j8
 
#4. 安装qemu
sudo make install
  • 准备一个 Windows 磁盘用于安装系统
1
2
# qcow2 是 QEMU 上常用的磁盘格式,支持同时读写
qemu-img create -f qcow2 windows7.qcow2 40G

如图所示,把需要的东西都准备好
图片描述

qemu启动时需要加大量的运行参数,这里编写一个启动脚本,方便启动qemu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
declare options=''
 
# 设置虚拟机名称
options="${options} -name 'windows7'"
 
# 分配 2GB 内存
options="${options} -m 2G"
 
# 启用 KVM 硬件加速
options="${options} -accel kvm"
 
# 使用默认 CPU 模型
options="${options} -cpu qemu64"
 
# 设置启动顺序为光驱
options="${options} -boot order=d"
 
# 使用 VirtIO 作为图形设备
options="${options} -vga virtio"
 
# 使用宿主时钟作为实时时钟
options="${options} -rtc base=localtime"
 
# 配置 CPU 拓扑
options="${options} -smp 1,sockets=1,cores=1,threads=1,maxcpus=1"
 
# 附加 Windows 7 ISO 作为光驱
options="${options} -drive file=/home/xxxxx/work/iso/win7.iso,media=cdrom"
 
# 附加 VirtIO 驱动 ISO 作为光驱
options="${options} -drive file=/home/xxxxx/work/virtio/virtio-win-0.1.240.iso,media=cdrom"
 
# 附加 Windows 7 虚拟硬盘
options="${options} -drive file=/home/xxxxx/work/os/win7.qcow2,format=qcow2,if=virtio"
 
# 启用 USB 支持
options="${options} -device usb-ehci"
 
# 添加 USB 鼠标设备
options="${options} -device usb-tablet"
 
# 添加 VirtIO 网络设备
options="${options} -device virtio-net-pci"
 
# 设置 CPU 亲和性为核心 0 到 3
# 用lscpu可以看一下自己的cpu颗粒数,不一定是0到3
/bin/taskset -c 0-3 qemu-system-x86_64 ${options}
 
# 清除 options 变量
unset options

注意:脚本中路径含有xxxxx,需要替换成你自己的真实路径
​最后运行上面的脚本,最后win7虚拟机就成功运行了。看效果如下:
图片描述
给虚拟机系统打快照:

1
2
3
4
5
6
#打快照
qemu-img snapshot -c 自定义快照名称 windows7.qcow2
#查看快照
qemu-img snapshot -l windows7.qcow2
#恢复快照
qemu-img snapshot -a 快照的ID windows7.qcow2

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2024-5-9 17:17 被编程两年半编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//