操作場景
制作Windows操作系統的私有鏡像,首先需要基于對應版本的原始iso鏡像文件,創建出對應版本的Windows虛擬機環境。
通常制作鏡像的過程需要基于您本地的電腦或服務器啟動Windows虛擬機,因此您在這個過程,您本地的電腦即是承載Windows虛擬機的宿主機。
制作工具
為了使您的私有鏡像更好地適用于彈性云主機,本文目標為創建出格式為qcow2的私有鏡像,因此推薦您使用Linux操作系統,并安裝QEMU和Libvirt作為創建工具。
本文下方的示例中所使用的代碼,將以Fedora 40 (Workstation Edition)版本的Linux操作系統作為宿主機,并安裝QEMU和Libvirt作為安裝工具。
說明如果您的本地電腦為Windows或者MacOS,建議您通過虛擬化軟件啟動一臺Linux虛擬機,作為創建Windows虛擬機的宿主機。
安裝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虛擬機
創建Windows虛擬機
注意Windows操作系統安裝過程,需要注意鏡像需內置 VirtIO 驅動,因此創建虛機時除了將系統 ISO 文件作為第一啟動盤外,還需掛載 VirtIO 驅動 ISO 文件。
下方示例中第二個--disk會用到此文件。
以下分別為常用Windows Server版本對應的VirtIO驅動下載鏈接:
Windows Server 2008 系列:
Windows Server 2008 R2 系列:
Windows Server 2012 系列(包括 R2):
Windows Server 2016/2019/2022 系列:
通過virt-install命令,使用原始iso文件創建Windows虛擬機。
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 文件名> \
--disk device=cdrom, path=<適用于當前Windows鏡像版本的VirtIO.iso文件路徑> \
--graphics vnc,listen=0.0.0.0 \
--name <虛機名稱> \
--network default,model=virtio \
--osinfo <如前介紹,根據虛機系統實際情況,選取合適值。若不確定,則可嘗試取 unknown> \
--ram <內存大小> \
--vcpus <CPU 核心數> \
--video virtio
其中osinfo可 virt-install --osinfo list 查看。
以安裝Windows Server 2022為例:
qemu-img create -f qcow2 Windows-Server_2022_Datacenter_zhCN-x86_64.qcow2 40G
virt-install \
--arch x86_64 \
--cdrom zh-cn_windows_server_2022_x64_dvd.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=Windows-Server_2022_Datacenter_zhCN-x86_64.qcow2 40G \
--disk device=cdrom, path=virtio-win-0,1.262.iso \
--graphics vnc,listen=0.0.0.0 \
--name Windows-Server-2022 \
--network default,model=virtio \
--osinfo win2k22 \
--ram 2048 \
--vcpus 2 \
--video virtio
安裝Windows操作系統
以Windows Server 2022為例,在安裝操作系統的過程中,請參照以下步驟設置:
- 接受適用的聲明和許可條款,選擇自定義類型的安裝。
- 先從 VirtIO 驅動 ISO 文件中加載匹配的驅動程序,再選擇操作系統的安裝位置。
注意匹配判定方式為驅動路徑中的系統架構和代號,如 amd64 代表 64 位,i386 代表 32 位, 2k22 代表 Windows Server 2022 系列,2k8r2 代表 Windows Server 2008 R2 系列。