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

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

2024-5-9 08:54
3730

背景:

生活所迫,需要学习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源码 (f30K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6I4k6h3#2#2i4K6u0r3M7h3g2E0N6g2)9J5z5b7`.`.
 
#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

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-5-9 17:17 被编程两年半编辑 ,原因:
收藏
免费 2
支持
分享
最新回复 (5)
雪    币: 484
活跃值: (1211)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
请问楼主,在win提供的WSL2下的ubuntu24.04能这样运行吗
2025-4-24 21:44
0
雪    币: 280
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3

1

最后于 2025-5-12 09:21 被编程两年半编辑 ,原因:
2025-5-12 09:21
0
雪    币: 280
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
mb_wdzhnevo 请问楼主,在win提供的WSL2下的ubuntu24.04能这样运行吗
当然可以 ,你用vmware运行ubuntu24.04也可以
2025-5-12 09:21
0
雪    币: 5049
活跃值: (7720)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
niu b plus,有木有模拟android系统的
2025-5-12 09:50
0
雪    币: 160
活跃值: (1763)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
写得不错,希望把这个系列讲完
2025-5-12 10:17
0
游客
登录 | 注册 方可回帖
返回