QEMU搭建虚拟机

本文详细介绍如何使用QEMU在Linux系统上搭建虚拟机,包括QEMU的安装、虚拟机创建及启动过程,并介绍了如何配置虚拟机网络及SSH登录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装QEMU


这里我以Linux系统为例。安装QEMU有两种方式,一是通过包管理工具如yum集成的安装包进行安装,二是通过QEMU的源代码进行安装。

# 通过yum安装
yum install qemu-kvm

# 通过源代码进行安装
# 可以通过wget或者curl工具拉取源代码,也可以直接到QEMU官网下载
wget https://download.qemu.org/qemu-4.2.1.tar.xz
curl -O https://download.qemu.org/qemu-4.2.1.tar.xz

tar xvJf qemu-4.2.1.tar.xz # 解压压缩包
cd qemu-4.2.1 # 进入qemu目录
./configure # 执行configuer脚本配置makefile文件
make -j 16 # 编译,根据各自系统进行并行编译加速
make install # 最后安装qemu

关于QEMU的版本根据个人需要选择,版本越高,依赖的工具版本越高。所以在执行configure脚本或者make时可能会出现报错缺少xxx工具、xxx工具版本太低,不用惊慌,根据提示依次下载安装相关依赖工具即可。如果不知道提示工具的安装包叫什么名字,我这里提供一点经验:

# 首先查询你的包管理工具里有没有
yum list installed | grep 依赖工具关键字 # 查询是否已经安装了
yum list available | grep 依赖工具关键字 # 查询你的yum源里有没有这个工具
# 如果有
yum install 安装包
# 如果没有,那就上网查吧,在线下载
# 还可以提醒的就是如果安装了还不行,那就安装带有dev关键字的安装包再试试

安装完成之后,在你的系统上 /usr/bin/ 或者 /usr/local/bin/ 路径下会出现一大堆 qemu 开头的工具包,这些就是我们搭建虚拟机需要用到的工具,比如x86系统主要使用 qemu-system-x86_64 和 qemu-img 这两个工具来搭建虚拟机。如果找不到你的 qemu 工具在哪,输入以下命令查找或者直接输入 qemu + 按两次 tap 键就出来了。

# 查找qemu开头工具的位置路径
where qemu-xxx
# 没有where命令
which qemu-xxx
# 没有which命令
type qemu-xxx
# type也没有,先安装一下再说,不过好像有个BUG,前提是你得知道工具包叫啥名字

2、创建虚拟机


QEMU安装完成之后,就可以开始搭建虚拟机了。首先我们需要准备两个镜像文件,一个是你需要安装的操作系统的光盘镜像文件(.iso文件),一个是充当虚拟机硬盘的的镜像文件(.qcow2文件)。前者根据个人需要准备,后者通过qemu-img工具来创建。

qemu-img create -f qcow2 xxx.img 16G
# -f指定镜像文件格式,有好几种格式,具体区别自行了解
# xxx.img文件名字
# 16G 镜像文件的最大大小,用来确保能安装下你的操作系统

镜像文件创建完之后是空的,只有几K大小,在你安装完操作系统之后才会被填充。镜像文件都准备好之后就可以开始创建虚拟机啦。

qemu-system-x86_64 -enable-kvm -name xxx -m 20480 -smp 44,cores=22,threads=2,sockets=1 -cpu host -vnc :1 -drive file=xxx.iso,media=cdrom -drive file=xxx.qcow2,media=disk -boot order=dc,once=d,menu=on
# 命令有点长,稍微解释一下各个参数
# -enable-kvm:启用KVM扩展,允许QEMU通过硬件加速来运行虚拟机,提高性能和效率。
# -name:虚拟机的名字
# -m:给虚拟机分配的内存大小,默认单位为MB
# -smp:给虚拟分配的CPU数量,后面的cores、threads、sockets描述的是CPU的拓扑结构
# -cpu:虚拟机的CPU模型,host表示使用宿主机的CPU模型
# -vnc:启用vnc服务器并指定端口号,端口号=5900+n,这个主要是用来启动一个图形界面好让我们安装操作系统,像在VMware等软件上创建虚拟机一样
# drive:指定虚拟机的磁盘驱动器,file接的是镜像文件的路径,media接的是镜像文件的介质类型,disk硬盘,cdrom光盘
# -boot:设定启动设备的引导次序,order设定顺序,d是光盘,c是硬盘,once表示下一次启动使用的设备,menu=on|off表示是否启动显示菜单

在你的宿主机终端上执行完上述命令之后,再使用VNC客户端比如MobaXterm连接VNC服务器,服务器的地址是宿主机IP+你设定的VNC端口。MobaXterm的连接方式如下。

连接VNC

连接的时候可能会提示代理有问题如果你的主机开有代理的话,关掉就行。进入图形操作界面之后就可以安装操作系统了,这里就不演示了,按照步骤和提示进行。另外提醒一下这里的内存大小和CPU拓扑结构最好是提前想好,不然到用了的时候可能会很麻烦。还有就是安装完操作系统后它可能会提示你需要重启系统,如果重启后又进入安装步骤,直接退出安装步骤即可(退出VNC连接)。

3、启动虚拟机


创建完虚拟机后,我们就可以来正常启动虚拟机了,启动的命令如下:

qemu-system-x86_64 -enable-kvm -net nic,model=virtio,macaddr=52:54:00:12:34:56 -net bridge,br=br0 -hda xxx.qcow2 -m 20480 -smp 44,cores=22,threads=2,sockets=1 -vnc :1 -monitor stdio
# 这里的命令也有点长,简单解释一下参数
# -net nic,model=virtio,macaddr=52:54:00:12:34:56
# 上面的意思是为虚拟机添加一个基于VirtIO模型的虚拟网卡,并指定MAC地址,
# 默认是52:54:00:12:34:56,指定MAC地址的原因是可能会创建多个虚拟机实例,
# 以免MAC地址冲突。
# -net bridge,br=br0,这里的意思是设定虚拟机的网络模式为桥接模式,并将
# 虚拟机的网络接口连接到网桥br0上
# -hda,指定虚拟机的主硬盘文件,一般就是你之前创建虚拟机时创建的硬盘镜像文件
# -monitor,这里是指启动QEMU的监控控制台,与运行的虚拟机进行交互,stdio
# 表示在标准输入/输出中启动监控控制台。

当然QEMU的网络模式有多种,不过其他那几种都不咋好用,桥接模式最好用,所以这里只介绍怎么搭建桥接模式(在宿主机上创建):

# 首先是安装一下搭建网桥的工具,如果你系统上本来就有,当我没说
yum install bridge-utils
brctl addbr br0  #创建一个网桥,名字通常叫br0
brctl addif br0 eth0 #把宿主机上的网卡加入网桥
vim /usr/local/etc/qemu/bridge.conf
allow br0  #给配置文件加上这么一行
brctl show  #检查网桥是否配置成功

# 如果你的宿主机上有多块网卡并且正好有一块空闲的网卡,把上面的eth0换成你那块空闲的就行了,不用配置啥IP什么的
# 如果没有,那可能还要继续下面的操作

# 把你宿主机上能上网的网卡IP清掉
ip addr del 192.168.xxx.xxx/24 dev eth0
# 再把IP加到网桥上去
ip addr add 192.168.xxx.xxx/24 dev br0
# 先查询一下
ip addr
# 如果br0没UP起来
ifcoonfig br0 up
# 再不济,重启网络或者重启宿主机
systemctl restart network / reboot # 当然操作有风险,谨慎操作,确保你有后路

# 之后在查询 ip a,这时候你的网桥br0应该拿到IP并且UP起来了,然后你原来的
# 物理网卡就没有IP了,并且多了一个master br0的字样,表示它在br0网桥下

记住顺序是先创建网桥再启动虚拟机哈,启动虚拟机后我们还要为虚拟机配置网络,首先仍然是先通过VNC连接进入虚拟机:

# 进入虚拟机先 ip a 查询网卡信息
vim /etc/sysconfig/network-scripts/ifcfg-ens #修改网卡配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens
UUID=f1d21397-df81-3dd9-9fc1-d4a4314c910b
ONBOOT=yes
DEVICE=ens
IPADDR=192.168.1.xxx
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

# 添加IP、网关、掩码等信息,注意要与网桥在同一网段
# 修改完systemctl restart network或者重启虚拟机就好了

除了配置网络,我们还可以为虚拟机配置SSH登录,避免每次都通过VNC登录不是,主要VNC有点慢。

vim /etc/ssh/sshd_config #修改ssh登录的配置文件
PermitRootLogin yes #把文件里的这一行改为yes
PasswordAuthentication yes #这一行也改完yes
ListenAddress 192.168.1.xxx #在文件最后加上你宿主机的监听IP

systemctl restart sshd #修改完成重启sshd服务
netstat -tuln # 查看虚拟机有没有在监听IP:22端口

# 可能还需要把防火墙关掉
systemctl status firewalld # 查询防火墙状态
systemctl stop firewalld # 如果是active状态就关掉
systemctl disable firewalld # 禁用防火墙

# 配置完成后重启虚拟机
# 在宿主机上的监控模式输入命令重启就行
#启动虚拟机后,宿主机控制台会出现如下信息
QEMU 4.2.1 monitor - type 'help' for more information
(qemu) system_reset  #输入重启命令

# 监控模式下还有很多命令比如info命令用来查询虚拟机的各种状态,quit命令退出
# 停止虚拟机,help info 可以查询info命令的具体用法

到这里虚拟机应该就能直接通过xshell等工具通过ssh登录了,并且能够与宿主机互相通信。
当然我是基于我的特定环境作的分享,如果出现其他问题请自行搜索网络上的其他文章哈。在这里作者也有一点心得要分享,就是实践过程中要大胆尝试,我就是太谨慎了,总是想找到一篇最符合情境的指导来进行操作,最后发现其实都大差不差,导致浪费太多时间。希望这篇文章能给你一点点的帮助~

4、参考资料

  1. QEMU官网

  2. QEMU维基


### 如何获取 DeepSeek 免费 Token 对于希望获取 DeepSeek 免费 Token 的用户来说,存在多个途径来实现这一目标。 当前有特定时间段内的优惠活动可供利用。例如,在注册 DeepSeek 账户时,新用户可以获得价值10元人民币的免费 Token,这大约等于一千万元的 Token 数量[^1]。此外,针对接入 DeepSeek V3 版本的服务,也有过提供五百万元 Token 的限时优惠直至指定日期结束的通知[^2]。而更进一步地,某些情况下服务商为了表达对客户的感激之情以及促进未来的合作关系,会在一定期限内给予更高额度如五亿 Tokens 的免费使用权[^4]。 需要注意的是这些优惠政策可能会随时间变化,并且具体条款可能有所调整。因此建议访问官方渠道确认最新的促销信息并按照指引完成相应操作以获得免费资源。 #### 获取步骤概述 虽然这里不使用诸如“首先”这样的引导词,但以下是概括性的描述: - 访问官方网站或应用平台创建账户; - 阅读并同意服务协议及相关政策说明; - 完成身份验证流程(如果必要); - 查看可用的奖励计划详情页了解最新福利措施; - 根据页面提示领取相应的免费 Token 或参与其他形式的激励项目; ```python # 示例代码用于展示如何通过API请求获取Token(假设场景),实际操作需参照官方文档指导。 import requests def get_free_token(api_url, user_info): response = requests.post(api_url, json=user_info) if response.status_code == 200: token_data = response.json() print(f"成功获取到 {token_data['amount']} tokens.") else: print("未能成功获取Token.") user_details = {"email": "example@example.com", "password": "securePassword"} get_free_token("https://api.deepseek.example/token/free", user_details) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

# 不想写代码的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值