操作场景
制作Linux操作系统的私有镜像,首先需要基于对应版本的原始iso镜像文件,创建出对应版本的Linux虚拟机环境。
通常制作镜像的过程需要基于您本地的电脑或服务器启动Linux虚拟机,因此您在这个过程,您本地的电脑即是承载Linux虚拟机的宿主机。
说明如果您的本地电脑为Windows或者MacOS,建议您通过虚拟化软件启动一台Linux虚拟机,作为创建Linux虚拟机的宿主机。
制作工具
为了使您的私有镜像更好地适用于天翼云平台,本文目标为创建出格式为qcow2的私有镜像,因此推荐您使用Linux操作系统,并安装QEMU和Libvirt作为创建工具。
本文下方的示例中所使用的代码,将以Fedora 40 (Workstation Edition)版本的Linux操作系统作为宿主机,并安装QEMU和Libvirt作为安装工具。
安装QEMU和Libvirt
在Fedora 40 (Workstation Edition)操作系统中,打开终端,将下属命令一次性粘贴到终端中,并执行回车。
# 可本机备份后清除此类 ks 文件。
rm -f /root/*-ks.cfg
# 配置 QEMU 和 libvirt。
dnf install -y @virtualization qemu-system-aarch64 qemu-system-loongarch64 telnet vim
dnf autoremove -y
dnf group remove -y LibreOffice
# 配置 QEMU 和 libvirt。
qemu_config='/etc/libvirt/qemu.conf'
[ ! -f "${qemu_config}.bak" ] && cp "$qemu_config" "${qemu_config}.bak"
sed -i 's/^#*group[[:space:]]*=.*/group = "root"/g' "$qemu_config"
sed -i 's/^#*user[[:space:]]*=.*/user = "root"/g' "$qemu_config"
systemctl enable libvirtd
usermod -aG libvirt root
# 禁用 Security-Enhanced Linux (SELinux)。
if command -v getenforce >/dev/null && [ "$(getenforce)" != "Disabled" ]; then
selinux_config='/etc/selinux/config'
[ ! -f "${selinux_config}.bak" ] && cp "$selinux_config" "${selinux_config}.bak"
sed -i 's/^[[:space:]]*SELINUX=.*/SELINUX=disabled/' "$selinux_config"
setenforce 0
fi
systemctl disable --now firewalld
reboot
成功安装后,您可以通过终端执行安装虚拟机命令,也可以通过虚拟系统管理器(virt-manager)继续安装Linux虚拟机。
创建Linux虚拟机
通过virt-install命令,使用原始iso文件创建Linux虚拟机。
qemu-img create -f qcow2 <镜像文件名>.qcow2 <系统盘大小,即原始镜像大小>
virt-install \
--arch <架构,参考取值:aarch64、x86_64> \
--cdrom <ISO 文件名> \
--channel unix,mode=bind,name=org.qemu.guest_agent.0,target_type=virtio \
--connect qemu:///system \
--debug \
--disk bus=virtio,device=disk,format=qcow2,path=<通过 qemu-img 命令创建的 QCOW2 文件名> \
--graphics vnc,listen=0.0.0.0 \
--name <虚机名称> \
--network default,model=virtio \
--osinfo <如前介绍,根据虚机系统实际情况,选取合适值。若不确定,则可尝试取 unknown> \
--ram <内存大小> \
--vcpus <CPU 核心数> \
--video virtio
其中osinfo可 virt-install --osinfo list
查看。
以安装Ubuntu Server 22.04为例:
qemu-img create -f qcow2 Ubuntu-Server_22.04-x86_64-231024-R1.qcow2 40G
virt-install \
--arch x86_64 \
--cdrom ubuntu-22.04.3-live-server-amd64.iso \
--channel unix,mode=bind,name=org.qemu.guest_agent.0,target_type=virtio \
--connect qemu:///system \
--debug \
--disk bus=virtio,device=disk,format=qcow2,path=Ubuntu-Server_22.04-x86_64-231024-R1.qcow2 \
--graphics vnc,listen=0.0.0.0 \
--name Ubuntu-22.04 \
--network default,model=virtio \
--osinfo ubuntu22.04 \
--ram 2048 \
--vcpus 2 \
--video virtio
安装Linux操作系统
进入虚拟机后,会引导您安装Linux操作系统。安装操作系统的过程请您注意以下配置,并按照文档要求操作。
-
安装位置(Installation Destination):除非系统强制要求时考虑调整,否则建议使用以下分区标准:
-
取消勾选任何跟加密(Encrypt)相关的功能,当前暂不支持系统内加密分区。
-
若是以下任意一种情况,则需先为 /boot/efi(200M,文件系统保持默认)添加挂载点:
AArch64 架构;
LoongArch64 架构;
x86_64 架构,并指定启动方式为 UEFI(否则默认 legacy BIOS)。
-
为 /(所有空余容量,文件系统推荐 xfs)添加挂载点。
-
确保 / 挂载点在分区表末位,以便提高 cloud-init 在首次启动、重启等场景时在必要时自动扩盘的成功率。
-
-
网络与主机名(Network & Host Name):确认连通网络(Connected)。
-
Root 用户配置:
- 设置 root 密码(Root Password)。
- 取消勾选“使用 SM3 加密密码(Use SM3 to encrypt the password)”(若有此选项或类似配置)。
- 取消勾选“锁定 root 账户(Lock root account)”(若有此选项或类似配置)
- 勾选“允许通过密码以 root 身份 SSH 登录(Allow root SSH login with password)”(若有此选项或类似配置)。
-
可无需创建用户,后续配置等操作应使用 root 身份。部分系统可能必须添加 root 以外的用户,您可按需配置(如 ctyun)。
注意后续所有的配置步骤均需要以root身份执行。