# 睿抗大赛 **Repository Path**: chencaijie/caip ## Basic Information - **Project Name**: 睿抗大赛 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-11 - **Last Updated**: 2024-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 环境搭建 使用`openEuler`作为宿主机操作系统 ## 准备镜像 下载`openEuler`镜像 镜像版本为:`openEuler 24.03 LTS` 类型:`openEuler-24.03-LTS-everything-x86_64-dvd.iso` 大小:21.6G SHA256完整性验证: ```txt 220c84d1f548424c3bfb710aef4716009fa9039d80900313f5595a207d8aa17a ``` 官网网站:https://www.openeuler.org/zh/download/?version=openEuler%2024.03%20LTS 此网站在国外,如下载速度过慢可以使用下面的华为开源镜像下载 华为开源镜像站下载:https://mirrors.huaweicloud.com/openeuler/openEuler-24.03-LTS/ISO/x86_64/ ## 安装主机 使用VMware安装主机 新增虚拟机: ![image-20241211092338562](样题操作文档.assets/image-20241211092338562.png) ![image-20241211092357713](样题操作文档.assets/image-20241211092357713.png) ![image-20241211092413909](样题操作文档.assets/image-20241211092413909.png) ![image-20241211092439003](样题操作文档.assets/image-20241211092439003.png) ![image-20241211092544153](样题操作文档.assets/image-20241211092544153.png) ![image-20241211092606014](样题操作文档.assets/image-20241211092606014.png) ![image-20241211092623223](样题操作文档.assets/image-20241211092623223.png) ![image-20241211092700839](样题操作文档.assets/image-20241211092700839.png) ![image-20241211092721827](样题操作文档.assets/image-20241211092721827.png) ![image-20241211092806483](样题操作文档.assets/image-20241211092806483.png) ![image-20241211092833984](样题操作文档.assets/image-20241211092833984.png) ![image-20241211092853177](样题操作文档.assets/image-20241211092853177.png) > 内存和硬盘尽量给大些,后续需要在该主机上安装虚拟机 **将镜像接入主机** ![image-20241211093028026](样题操作文档.assets/image-20241211093028026.png) ![image-20241211104546911](样题操作文档.assets/image-20241211104546911.png) > 一定要将虚拟化引擎开启 **开启主机** 选择第一项安装系统 ![image-20241211093201516](样题操作文档.assets/image-20241211093201516.png) ![image-20241211093347841](样题操作文档.assets/image-20241211093347841.png) 选择服务器安装 ![image-20241211093450332](样题操作文档.assets/image-20241211093450332.png) 选择启用root账户并设置密码 ![image-20241211093604591](样题操作文档.assets/image-20241211093604591.png) 设置网络和主机名 ![image-20241211093801704](样题操作文档.assets/image-20241211093801704.png) 等待安装完成重启系统即可 ![image-20241211093900556](样题操作文档.assets/image-20241211093900556.png) 重启后即可使用了 ![image-20241211094303908](样题操作文档.assets/image-20241211094303908.png) 关闭主机防火墙`SELINUX`,重启主机 ```bash [root@openEuler ~]# systemctl stop firewalld.service [root@openEuler ~]# systemctl disable firewalld.service Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service". Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". [root@openEuler ~]# vim /etc/selinux/config 7 SELINUX=disabled [root@openEuler ~]# setenforce 0 [root@openEuler ~]# getenforce Permissive [root@openEuler ~]# reboot ``` > 后续操作建议使用ssh连接到主机进行操作 # 实验项目二:`KVM`虚拟化环境部署 ## 任务2-1:使用系统镜像制作yum源 ### 挂载镜像 ```bash [root@openEuler ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 59G 0 part ├─openeuler-root 253:0 0 35.6G 0 lvm / ├─openeuler-swap 253:1 0 6G 0 lvm [SWAP] └─openeuler-home 253:2 0 17.4G 0 lvm /home sr0 11:0 1 21.6G 0 rom [root@openEuler ~]# mkdir /mnt/iso [root@openEuler ~]# mount /dev/sr0 /mnt/iso/ mount: /mnt/iso: WARNING: source write-protected, mounted read-only. [root@openEuler ~]# df -h 文件系统 大小 已用 可用 已用% 挂载点 /dev/mapper/openeuler-root 35G 2.3G 31G 7% / devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 7.6G 0 7.6G 0% /dev/shm tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup tmpfs 3.1G 9.1M 3.1G 1% /run tmpfs 7.6G 0 7.6G 0% /tmp /dev/sda2 974M 213M 694M 24% /boot /dev/mapper/openeuler-home 17G 24K 17G 1% /home /dev/sr0 22G 22G 0 100% /mnt/iso [root@openEuler ~]# [root@openEuler ~]# cd /mnt/iso/ [root@openEuler iso]# ls docs EFI images isolinux ks Packages repodata RPM-GPG-KEY-openEuler TRANS.TBL [root@openEuler iso]# ``` ### 编写仓库文件 ```bash [root@openEuler iso]# cd /etc/yum.repos.d/ [root@openEuler yum.repos.d]# mv openEuler.repo openEuler.repo.bak [root@openEuler yum.repos.d]# ls openEuler.repo.bak [root@openEuler yum.repos.d]# cat << EFO > BaseOS.repo > [BaseOS] > name=BaseOS > baseurl=file:///mnt/iso > enabled=1 > gpgcheck=0 > EFO [root@openEuler yum.repos.d]# yum clean all 0 files removed [root@openEuler yum.repos.d]# yum makecache BaseOS 296 MB/s | 16 MB 00:00 Last metadata expiration check: 0:00:02 ago on 2024年12月11日 星期三 10时07分07秒. Metadata cache created. [root@openEuler yum.repos.d]# yum repolist repo id repo name BaseOS BaseOS [root@openEuler yum.repos.d]# ``` > 原有仓库文件一定要进行备份 > > 可使用yum list available列出所有软件包 ## 任务2-2:安装KVM基础组件 安装命令 ```bash [root@openEuler ~]# yum install -y qemu-kvm libvirt virt-install bridge-utils [root@openEuler ~]# ``` > 软件包说明: > > **`kvm`**:核心内核模块,为 Linux 内核提供虚拟化功能 > > `qemu`: ,负责处理虚拟机的硬件仿真和设备模型 > > `libvirt`: 提供`API`接口,处理运行的命令 **查看CPU是否支持硬件虚拟化** ```bash [root@openEuler ~]# cat /proc/cpuinfo | grep -E "vmx|svm" ``` > 如果输出包含 `vmx`(对于 Intel CPU)或 `svm`(对于 AMD CPU),这表明 CPU 支持硬件虚拟化。 查看`KVM`内核模块是否加载了 ```bash [root@openEuler ~]# lsmod | grep kvm kvm_amd 192512 0 ccp 151552 1 kvm_amd kvm 1380352 1 kvm_amd irqbypass 12288 1 kvm [root@openEuler ~]# ``` > 如果返回结果中包含 `kvm`、`kvm_intel` 或 `kvm_amd`,则表示 KVM 模块已成功加载 启用`libvirtd`守护进程 ```bash [root@openEuler ~]# systemctl start libvirtd [root@openEuler ~]# systemctl enable libvirtd [root@openEuler ~]# systemctl status libvirtd ● libvirtd.service - libvirt legacy monolithic daemon Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; preset: enabled) Active: active (running) since Wed 2024-12-11 10:53:44 CST; 10s ago TriggeredBy: ● libvirtd-admin.socket ● libvirtd-ro.socket ● libvirtd.socket Docs: man:libvirtd(8) https://libvirt.org/ Main PID: 2117 (libvirtd) Tasks: 22 (limit: 32768) Memory: 47.2M () CGroup: /system.slice/libvirtd.service ├─1764 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec> ├─1766 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec> └─2117 /usr/sbin/libvirtd --timeout 120 12月 11 10:53:44 openEuler systemd[1]: Starting libvirt legacy monolithic daemon... 12月 11 10:53:44 openEuler systemd[1]: Started libvirt legacy monolithic daemon. 12月 11 10:53:44 openEuler dnsmasq[1764]: read /etc/hosts - 8 names 12月 11 10:53:44 openEuler dnsmasq[1764]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 names 12月 11 10:53:44 openEuler dnsmasq-dhcp[1764]: read /var/lib/libvirt/dnsmasq/default.hostsfile [root@openEuler ~]# ``` # 实验项目三:配置虚拟机网络 ## 任务3-1:配置桥接网络 先查看一下主机的IP、网关和DNS ```bash [root@openEuler ~]# ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: ens33: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:32:67:30 brd ff:ff:ff:ff:ff:ff inet 192.168.22.136/24 brd 192.168.22.255 scope global dynamic noprefixroute ens33 valid_lft 1058sec preferred_lft 1058sec inet6 fe80::20c:29ff:fe32:6730/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:bc:3d:96 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever [root@openEuler ~]# ip route default via 192.168.22.2 dev ens33 proto dhcp src 192.168.22.136 metric 100 192.168.22.0/24 dev ens33 proto kernel scope link src 192.168.22.136 metric 100 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown [root@openEuler ~]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain nameserver 192.168.22.2 [root@openEuler ~]# ``` > IP为:192.168.22.136/24 > > 网关:192.168.22.2 > > DNS:192.168.22.2 编写网桥配置文件 ```bash [root@openEuler ~]# cd /etc/sysconfig/network-scripts/ [root@openEuler network-scripts]# cp ifcfg-ens33 ifcfg-br0 [root@openEuler network-scripts]# vim ifcfg-br0 ``` 文件内容如下: ```bash TYPE=Bridge NAME=br0 DEVICE=br0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.22.136 NETMASK=255.255.255.0 GATEWAY=192.168.22.2 DNS1=192.168.22.2 DNS2=114.114.114.114 ``` > 配置文件说明: > > **`TYPE=Bridge`**:表示这是一个桥接网络接口,适用于将多个网络接口桥接在一起(通常用于虚拟化环境)。 > > **`NAME=br0`**:指定接口的名称为 `br0`。 > > **`DEVICE=br0`**:定义设备名称为 `br0`。 > > **`ONBOOT=yes`**:表示在启动时启用该接口。 > > **`BOOTPROTO=static`**:表示使用静态 IP 地址,而不是动态获取。 > > **`IPADDR=192.168.22.136`**:指定静态 IP 地址。 > > **`NETMASK=255.255.255.0`**:子网掩码,表示与 IP 地址 192.168.22.136 同一子网内的所有设备范围是 192.168.22.1 到 192.168.22.254。 > > **`GATEWAY=192.168.22.2`**:默认网关 > > **`DNS1=192.168.22.2`** 和 **`DNS2=114.114.114.114`**:配置 DNS 服务器 备份物理网卡配置,修改配置 ```bash [root@openEuler network-scripts]# cp ifcfg-ens33 ifcfg-ens33.bak [root@openEuler network-scripts]# vim ifcfg-ens33 [root@openEuler network-scripts]# ``` > 一定要注意备份 ```bash TYPE=Ethernet NAME=ens33 DEVICE=ens33 ONBOOT=yes BRIDGE=br0 ``` > 配置说明: > > **`DEVICE=ens33`**: > > - 指定了网络接口的名称为 `ens33` > > **`ONBOOT=yes`**: > > - 这个选项表示该网络接口将在系统启动时自动启用。 > - 如果设置为 `no`,则系统启动时不会启用该接口。 > > **`BRIDGE=br0`**: > > - 这表示将 `ens33` 接口加入到名为 `br0` 的桥接网络中。`br0` 是一个虚拟网络接口,它通常用于桥接多个网络接口,以便让连接到桥接的虚拟机或容器可以与外部网络进行通信。 > - 使用桥接(Bridge)模式时,`ens33` 并不会直接使用 IP 地址,而是通过桥接接口 `br0` 来管理流量和网络连接。桥接通常用于虚拟化环境中,使得虚拟机能够与宿主机以及外部网络进行通信。 **重启所有网卡** ```bash [root@openEuler network-scripts]# nmcli networking off && nmcli networking on [root@openEuler network-scripts]# ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host proto kernel_lo valid_lft forever preferred_lft forever 2: ens33: mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000 link/ether 00:0c:29:32:67:30 brd ff:ff:ff:ff:ff:ff 3: virbr0: mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:bc:3d:96 brd ff:ff:ff:ff:ff:ff 8: br0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:0c:29:32:67:30 brd ff:ff:ff:ff:ff:ff inet 192.168.22.136/24 brd 192.168.22.255 scope global noprefixroute br0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe32:6730/64 scope link tentative proto kernel_ll valid_lft forever preferred_lft forever [root@openEuler network-scripts]# [root@openEuler network-scripts]# ip route default via 192.168.22.2 dev br0 proto static metric 425 192.168.22.0/24 dev br0 proto kernel scope link src 192.168.22.136 metric 425 [root@openEuler network-scripts]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.22.2 nameserver 114.114.114.114 [root@openEuler network-scripts]# [root@openEuler network-scripts]# ping baidu.com PING baidu.com (39.156.66.10) 56(84) 字节的数据。 64 字节,来自 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=128 时间=28.5 毫秒 64 字节,来自 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=128 时间=29.5 毫秒 64 字节,来自 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=128 时间=29.7 毫秒 ^C --- baidu.com ping 统计 --- 已发送 3 个包, 已接收 3 个包, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 28.515/29.227/29.666/0.508 ms [root@openEuler network-scripts]# ``` 查看网桥 ```bash [root@openEuler network-scripts]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000c29326730 no ens33 virbr0 8000.525400bc3d96 yes [root@openEuler network-scripts]# ``` # 实验项目四:创建`KVM`虚拟机 ## 任务4-1:使用qemu创建虚拟磁盘 **创建虚拟磁盘** ```bash [root@openEuler ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/disk1.qcow2 10G Formatting '/var/lib/libvirt/images/disk1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=10737418240 lazy_refcounts=off refcount_bits=16 cache=writeback [root@openEuler ~]# ``` > **`qemu-img`**: > > - 这是 `QEMU` 的工具,用于管理磁盘映像文件。它可以用于创建、转换、调整大小和修改磁盘映像文件。 > > **`create`**: > > - 这是 `qemu-img` 的一个子命令,用来创建一个新的虚拟磁盘映像文件。 > > **`-f qcow2`**: > > - `-f` 是指定磁盘映像的格式。 > > **`/var/lib/libvirt/images/disk1.qcow2`**: > > - 这是创建的虚拟磁盘映像文件的路径和文件名。 > > **`10G`**: > > - 这是磁盘映像文件的大小。 **查看虚拟磁盘信息** ```bash [root@openEuler ~]# qemu-img info /var/lib/libvirt/images/disk1.qcow2 image: /var/lib/libvirt/images/disk1.qcow2 file format: qcow2 virtual size: 10 GiB (10737418240 bytes) disk size: 196 KiB cluster_size: 65536 Format specific information: compat: 1.1 compression type: zlib lazy refcounts: false refcount bits: 16 corrupt: false extended l2: false Child node '/file': filename: /var/lib/libvirt/images/disk1.qcow2 protocol type: file file length: 192 KiB (197120 bytes) disk size: 196 KiB ``` ## 任务4-2:使用xml创建KVM虚拟机 **先将系统镜像上传到主机** ![image-20241211134823947](样题操作文档.assets/image-20241211134823947.png) > 最好上传只/mnt目录,该目录任何用户都可读写,避免创建虚拟机时无法读取镜像 手写XML配置文件比较难,可以使用`virt-install`命令创建虚拟机,会自动帮助我们创建XML文件,后续参考该XML文件即可 ```bash [root@openEuler mnt]# virt-install --vcpus 2 --cpu host --memory memory=2048 --network bridge=br0 --disk path=/var/lib/libvirt/images/disk1.qcow2 --cdrom openEuler-24.03-LTS-everything-x86_64-dvd.iso --graphics port=-1,type=vnc,password=123456,listen=0.0.0.0 --noautoconsole --os-variant centos7.0 --name openEuler 开始安装...... 创建域...... | 0 B 00:00:00 域仍在运行。安装可能正在进行中。 可以重新连接到控制台以完成安装过程。 [root@openEuler mnt]# ``` > **`--vcpus 2`** > > - 指定虚拟机使用 2 个虚拟 CPU。`vcpus` 是 "virtual CPUs" 的缩写。 > > **`--cpu host`** > > - 该选项指示虚拟机使用宿主机的 CPU 特性。虚拟机将继承宿主机的 CPU 配置和特性,确保性能最大化。 > > **`--memory memory=2048`** > > - 为虚拟机分配 2048 MB(即 2GB)的内存。 > > **`--network bridge=br0`** > > - 指定虚拟机通过网络桥接(`bridge`)连接到宿主机的网络接口 `br0`。这意味着虚拟机将共享宿主机的网络连接,获取一个与宿主机同一网络中的 IP 地址。 > > **`--disk path=/var/lib/libvirt/images/disk1.qcow2`** > > - 为虚拟机创建一个虚拟磁盘,存储路径为 `/var/lib/libvirt/images/disk1.qcow2`。磁盘文件格式为 `qcow2`,这是一个压缩和支持快照的磁盘格式。 > > **`--cdrom openEuler-24.03-LTS-everything-x86_64-dvd.iso`** > > - 使用 `openEuler-24.03-LTS-everything-x86_64-dvd.iso` 作为虚拟机的安装光盘映像,安装操作系统。该选项指定了 ISO 文件路径。 > > **`--graphics port=-1,type=vnc,password=123456`** > > - 启用图形界面支持,并使用 VNC 协议来访问虚拟机的图形界面。`port=-1` 表示自动选择 VNC 端口号,`password=123456` 设置连接 VNC 时的密码,`listen=0.0.0.0`表示允许任何主机连接 > > **`--noautoconsole`** > > - 该选项告诉 `virt-install` 在安装过程中不要自动连接控制台。这意味着它不会在创建虚拟机时直接连接到虚拟机控制台,你需要手动连接(例如,通过 VNC)来看到安装界面。 > > **`--os-variant centos7.0`** > > - 这指定了虚拟机的操作系统变种。`centos7.0` 是 CentOS 7 的标准变种,因为 openEuler 和 CentOS 具有相似的特性,因此使用 `centos7.0` 作为兼容选项。 > > **`--name openEuler`** > > - 设置虚拟机的名称为 `openEuler`。这个名称将在后续的管理和控制虚拟机时使用,例如通过 `virsh` 命令来管理该虚拟机。 **查看XML配置文件** ```bash [root@openEuler ~]# virsh dumpxml --domain openEuler ``` 输出内容如下 ```xml openEuler 212b6cbe-100d-4b9c-acbc-bab979166cdf 2097152 2097152 2 /machine hvm EPYC-Milan AMD destroy destroy destroy /usr/libexec/qemu-kvm