操作場景
制作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身份執行。