本实验采用RHEL衍生版本Rocky9.1实现,无力吐槽CentOS,莫名其妙bug贼多>_<,难受

1、上传镜像

创建目录/opt/unetlab/addons/qemu/镜像名称,上传镜像名称修改为cdrom.iso

mkdir /opt/unetlab/addons/qemu/rocky-9.1

# 操作
[root@eve-ng /opt/unetlab/addons/qemu]# mkdir /opt/unetlab/addons/qemu/rocky-9.1
[root@eve-ng /opt/unetlab/addons/qemu]# cd rocky-9.1/

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像

上传镜像并改名为cdrom.iso

mv Rocky-9.1-20221214.1-x86_64-dvd.iso cdrom.iso

2、创建磁盘

我创建100G的磁盘

# 方式1:创建硬盘
/opt/qemu/bin/qemu-img create -f qcow2 hda.qcow2 100G
# 方式2:创建虚拟硬盘
/opt/qemu/bin/qemu-img create -f qcow2 virtioa.qcow2 100G

[root@eve-ng /opt/unetlab/addons/qemu/rocky-9.1]# ll
total 8697552
drwxr-xr-x  2 root root       4096 Jun  4 15:22 ./
drwxr-xr-x 49 root root       4096 Jun  4 15:18 ../
-rw-r--r--  1 root root 8906080256 Jun  4 14:29 cdrom.iso
-rw-r--r--  1 root root     198656 Jun  4 15:22 hda.qcow2

3、编辑模版

/opt/unetlab/html/includes/custom_templates.yml

---
custom_templates:
  - name: rocky
    listname: rocky
...

4、创建模版文件

/opt/unetlab/html/templates/intel/模版文件名

grep -Ev '^$|^#' /opt/unetlab/html/templates/intel/rocky.yml
---
type: qemu
name: rocky
cpulimit: 1
icon: Server.png
cpu: 4
ram: 8192
ethernet: 4
eth_format: eth{0}
console: vnc
shutdown: 1
qemu_arch: x86_64
qemu_nic: virtio-net-pci
qemu_options: -machine type=pc,accel=kvm -vga std -usbdevice tablet -boot order=dc -cpu host

5、搭建EVE环境

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像_02

6、开启虚拟机

能进入这一步代表镜像没有问题,配置也没有问题,如果发现系统崩溃等报错,请检查前面步骤是否配置正确,安装系统不做演示

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像_03

7、删除ISO镜像

系统安装完成后,需要手动删除镜像,不然下次开机还会默认加载CD/DVD

[root@eve-ng /opt/unetlab/addons/qemu/rocky-9.1]# rm -rf cdrom.iso
[root@eve-ng /opt/unetlab/addons/qemu/rocky-9.1]# ls
hda.qcow2

8、配置系统基础信息

#!/bin/bash
# 配置软件仓库
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/rocky.repo <<END
[BaseOS]
name=BaseOS
baseurl=https://mirrors.aliyun.com/rockylinux/9.2/BaseOS/x86_64/os/
gpgcheck=0
enabled=1

[AppStream]
name=AppStream
baseurl=https://mirrors.aliyun.com/rockylinux/9.2/AppStream/x86_64/os/
gpgcheck=0
enabled=1

[EPEL]
name=EPEL
baseurl=https://mirrors.aliyun.com/epel/9/Everything/x86_64/
gpgcheck=0
enabled=1
END

# 安装常用软件
yum -y install cloud-init.noarch wget net-tools vim bash-com* git 

# 自定义PS1变量
echo "export PS1='[\[\033[31m\]\u\[\033[0m\]@\[\033[32m\]\h\[\033[0m\] \[\033[35m\]\w\[\033[0m\]]\\$ '" >> /etc/bashrc

# 取消网卡命名规则
cat > /etc/default/grub <<END
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rd.lvm.lv=rl/root net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
END
grub2-mkconfig -o /boot/grub2/grub.cfg

# 关闭防火墙
systemctl disable --now firewalld.service
# 关闭SELinux
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

reboot

9、压缩镜像

该步骤为可选项,进一步压缩镜像占用空间

virt-sparsify –compress hda.qcow2 compressedhda.qcow2

[root@eve-ng /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1]# virt-sparsify --compress hda.qcow2 compressedhda.qcow2
[   0.1] Create overlay file in /tmp to protect source disk
[   0.1] Examine source disk
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ --:--
[  25.3] Copy to destination and make sparse
[  25.3] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.
[root@eve-ng /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1]# ls
compressedhda.qcow2  hda.qcow2
[root@eve-ng /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1]# rm -rf hda.qcow2
# 重命名为hda.qcow2
[root@eve-ng /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1]# mv compressedhda.qcow2 hda.qcow2

10、镜像重建

10.1 查看LAB拓扑ID

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像_04

10.2 重建镜像

# 进入拓扑ID目录
cd /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1

# 重建镜像到/tmp/hda.qcow2
/opt/qemu/bin/qemu-img convert -c -O qcow2 hda.qcow2 /tmp/hda.qcow2

# 将重建后镜像移动到原有目录,完成!
mv /tmp/hda.qcow2 /opt/unetlab/addons/qemu/rocky-9.1/

如果是virtioa.qcow2格式

# 进入拓扑ID目录
cd /opt/unetlab/tmp/0/c8e1badd-93c4-49e7-9f9c-4da530fd22dd/1/opt/qemu/bin/qemu-img 

# 重建镜像到/tmp/virtioa.qcow2
convert -c -O qcow2 virtioa.qcow2 /tmp/virtioa.qcow2

# 将重建后镜像移动到原有目录,完成!
mv /tmp/virtioa.qcow2 /opt/unetlab/addons/qemu/rocky-9.2-mini

11、测试

11.1 添加一个节点

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像_05

11.2 开机

EVE-NG定制Linux虚拟机_EVE-NG定制虚拟机镜像_06