QEMU搭建虚拟机

QEMU搭建虚拟机本文详细介绍了如何在 Linux 系统上通过包管理工具和源代码安装 QEMU 包括 KVM 启用 虚拟机创建过程 包括创建镜像 配置启动参数和网络设置 以及如何通过 SSH 直接访问虚拟机

大家好,欢迎来到IT知识分享网。

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命令的具体用法 

4、参考资料

  1. QEMU官网
  2. QEMU维基

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112207.html

(0)
上一篇 2026-01-19 22:33
下一篇 2025-10-04 08:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信