配置bios支持虚拟化
2、检查系统是否支持虚拟化
3、安装虚拟化相关组件,并启动
bash
yum install -y qemu virt-install virt-manager libvirt-daemon-qemu edk2-aarch64.noarch virt-viewer
systemctl start libvirtd
systemctl enable libvirtd
4、创建桥接网络接口并配置网桥
为了使虚拟机可以与外部进行网络通信,需要为虚拟机配置网络环境。KVM虚拟化支持Linux网桥、Open vSwitch网桥等多种类型的网桥。如图所示,数据传输路径为"虚拟机 -> 虚拟网卡设备 -> Linux网桥或Open vSwitch网桥 -> 物理网卡"。创建网桥,除了为虚拟机配置虚拟网卡设备外,为主机创建网桥是连接虚拟化网络的关键。
本节给出搭建Linux网桥和Open vSwitch网桥的方法,使虚拟机连接到网络,用户可以根据情况选择搭建网桥的类
搭建Linux网桥
以物理网卡eth0绑定到Linux网桥br0的操作为例,使用root用户执行如下命令搭建Linux网桥:
确保已安装 bridge-utils,用于管理网络桥接
bash
yum -y install bridge-utils
配置物理接口 enp125s0f1
bash
cp /etc/sysconfig/network-scripts/ifcfg-enp125s0f0 .
echo 'DEVICE=enp125s0f0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br0'>/etc/sysconfig/network-scripts/ifcfg-enp125s0f0
配置桥接接口 br0
bash
echo 'DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.8.60
NETMASK=255.255.255.0
GATEWAY=192.168.8.1
DNS1=114.114.114.114
DNS2=8.8.8.8'>/etc/sysconfig/network-scripts/ifcfg-br0
重启网卡
bash
sudo systemctl restart NetworkManager
4、创建虚拟化磁盘
bash
[root@localhost ~]# ls /mnt/
[root@localhost ~]# mkdir -p /mnt/data/vm/images/
[root@localhost ~]# virsh pool-define-as vmPool --type dir --target /mnt/data/vm/images/
定义池 vmPool
[root@localhost ~]# virsh pool-build vmPool
构建池 vmPool
[root@localhost ~]# virsh pool-start vmPool
池 vmPool 已启动
[root@localhost ~]# virsh pool-autostart vmPool
池 vmPool 标记为自动启动
5、准备虚拟机配置文件
创建虚拟机需要虚拟机配置文件。假设配置文件为 master.xml ,以虚拟机 hostname 为 k8smaster0 的节点为例,参考配置如下:
bash
vim /mnt/data/vm/xml/master0.xml
关键修改项(确保每个虚拟机唯一):
由于虚拟机相关配置必须唯一,新增虚拟机需要适配修改如下内容,保证虚拟机的唯一性:
● name:虚拟机 hostname,建议尽量小写。例中为 k8smaster0
● nvram:nvram的句柄文件路径,需要全局唯一。例中为 /var/lib/libvirt/qemu/nvram/k8smaster0.fd
● disk 的 source file:虚拟机磁盘文件路径。例中为 /mnt/vm/images/master0.img
● interface 的 mac address:interface 的 mac 地址。例中为 52:54:00:00:00:80 要每台都不一样吧
● 37 行:切换成桥接模式,关联桥接网卡
bash
<domain type='kvm'>
<name>k8smaster0</name>
<memory unit='GiB'>8</memory>
<vcpu>8</vcpu>
<os>
<type arch='aarch64' machine='virt'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw</loader>
<nvram>/var/lib/libvirt/qemu/nvram/k8smaster0.fd</nvram>
</os>
<features>
<acpi/>
<gic version='3'/>
</features>
<cpu mode='host-passthrough'>
<topology sockets='2' cores='4' threads='1'/>
</cpu>
<iothreads>1</iothreads>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' iothread="1"/>
<source file='/mnt/data/vm/images/master0.img'/>
<target dev='vda' bus='virtio'/>
<boot order='1'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/mnt/data/vm/iso/openEuler-24.03-LTS-SP2-aarch64-dvd.iso'/>
<readonly/>
<target dev='sdb' bus='scsi'/>
<boot order='2'/>
</disk>
<interface type='bridge'>
<mac address='52:54:00:00:00:80'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
<console type='pty'/>
<video>
<model type='virtio'/>
</video>
<controller type='scsi' index='0' model='virtio-scsi'/>
<controller type='usb' model='ehci'/>
<input type='tablet' bus='usb'/>
<input type='keyboard' bus='usb'/>
<graphics type='vnc' listen='0.0.0.0'/>
</devices>
<seclabel type='dynamic' model='dac' relabel='yes'/>
</domain>
6、创建并启动虚拟机
bash
virsh define master0.xml
virsh list --all
virsh start master0
获取vnc端口号
bash
ss -anpt|grep qemu-kvm
五、VNC连接创建好的虚拟机并安装系统

因为 centos7 默认网卡发生改变,我们需要修改内核参数,使用 eth0 作为网卡
配置虚拟机静态IP
bash
echo 'TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=enp3s0
UUID=91f1574f-e9f1-413a-8a92-52a25dc4005d
DEVICE=enp3s0
ONBOOT=yes
IPADDR=192.168.8.61
NETMASK=255.255.255.0
GATEWAY=192.168.8.1'>/etc/sysconfig/network-scripts/ifcfg-enp3s0
