本文介绍Windows私有镜像的制作方法。Windows镜像目前只适用于x86_64标准裸金属。
1. 获取系统安装镜像
请联系windows-server官方获取系统的安装光盘镜像,下面我们假设您已经获取了windows-server-2016的系统安装光盘镜像cn_windows_server_2016_vl_x64_dvd_11636695.iso
2. 使用virt-manager安装操作系统
2.1 确保有使用virt-manager的权限
注意,使用virt-manager需要必要的权限。如果使用非root用户操作virt-manager,可以把用户加入libvirt组。参考Libvirt,重启后当前用户加入libvirt组生效。
# 把当前用户加入到libvirt组
sudo gpasswd -a $USER libvirt2.2 激活默认的虚拟网络
打开virt-manager,选中QEMU/KVM后,点上方菜单“编辑”-> “连接详情”。出现“连接详情”窗口后选择“虚拟网络”标签页,点下方的三角按钮,激活默认的虚拟网络。
2.3 创建新虚拟机
点击工具栏中的“创建新虚拟机”以创建新虚拟机。选择“本地安装介质(ISO映像或者光驱)”后,点“Forward”。
2.4 选择ISO光盘镜像和要安装的操作系统
选择ISO光盘镜像:点击“浏览”,选“本地浏览”后选择下载好的windows-server-2016的ISO镜像。也可直接手动输入ISO镜像的路径。
选择要安装的操作系统:默认检测出要安装的操作系统,或手动选择windows-server-2016。
完成上面的配置后,点击“Forward”。
2.5 选择内存大小及CPU数
选择内存大小和CPU核数。分配给虚拟机的内存大小和CPU数不能超过宿主机拥有的内存大小和CPU数。这里根据实际情况分配足够大的内存及CPU数即可。本示例中只安装一个最小化的系统,不需要很多内存和CPU,这里选择默认配置,直接点击“Forward”。
2.6 创建磁盘镜像
根据实际情况,选择虚拟硬盘的大小。根据实际情况选择即可。需注意虚拟机硬盘不能太小,否则可能后续无法安装所需的软件包等。最终系统盘实际占用空间不能超过物理机的系统盘大小。本示例中只安装一个最小化的系统,不需要太多的硬盘空间,可以选择默认大小40GiB,本文由于设备空间问题选择35GiB后,点击“Forward”。
2.7 设置虚拟机名称、网络、启动方式
在“名称”文本框中输入虚拟机的名字,这个名字也会作为磁盘镜像的名字。磁盘镜像默认在/var/lib/libvirt/images/虚拟机名字.qcow2,后面转换镜像格式需要用到这个镜像,需要记下这个路径。这里名称我们使用“win2016”。
“选择网络”处使用默认的虚拟网络即可。
x86_64架构的服务器一般支持BIOS和UEFI两种启动方式。其中UEFI是较新的启动方式,BIOS是为了兼容而保留的旧启动方式。您制作的镜像的启动方式应和物理机的启动方式保持一致。
vrit-manager默认创建的虚拟机是BIOS启动方式。如果您使用BIOS方式启动系统,点击“完成”创建虚拟机即可。
设置UEFI启动方式:
如果您打算使用UEFI方式启动系统,还需要进行一些额外的配置。勾选“在安装前自定义配置”,然后点击“完成”。
这时会有界面进行更细致的配置。在左侧选择“概况”,修改“固件”,从BIOS改为UEFI。点击右下角的“Apply”,保存配置。此时虚拟机支持的启动固件就从BIOS变为UEFI。
接下来修改启动顺序。在左侧选择“引导选项”,引导设备顺序从“VirtIO 磁盘1”改为“SATA CDROM 1”、“VirtIO 磁盘1”(勾选“SATA CDROM 1”,然后用右侧的上下箭头调整启动顺序)。点击右下角的“Apply”,保存配置。
此时虚拟机优先从光驱启动,若光驱中没有可启动的光盘镜像,则会从虚拟磁盘启动。我们的虚拟磁盘上还没有安装操作系统,此时无法从虚拟磁盘启动,需要从光驱启动。虚拟光驱中有我们前面选择的系统安装光盘镜像。
当系统安装完成后,virt-manager会自动弹出虚拟光驱中的系统安装光盘镜像,然后重启。此时虚拟光驱中无可启动的光盘镜像,会从虚拟磁盘启动。
点击左上角的“开始安装”,此时启动虚拟机,并开始安装系统。后续安装过程和BIOS方式启动安装系统几乎一样,只是分区时需要确保有EFI分区,在分区一节中我们会再强调。
2.8 启动虚拟机
启动虚拟机后会出现一个新窗口,可以看到已经从ISO光盘镜像开始启动,开始在虚拟机中安装操作系统。
2.9 选择语言
等待一会儿后会启动安装程序。首先是选择语言,根据实际需要选择即可。这里选择默认选项中文,点击“下一步”。
2.10 选择系统
选择Datacenter类型系统,为了便于后续配置系统可选择“Windows Server 2016 Datacenter(桌面体验)”,点击“下一步”。
2.11 选择安装类型
选择“自定义:仅安装Windows(高级)”
2.12 分区
由于qcow2镜像格式中包含分区表,制作Windows镜像是的分区即是创建物理机后的分区,该分区仅对物理机系统盘有效。本节提供bios和uefi分区模板,配合Windows镜像分区文件使用。(建议按照本文分区配置,用户可创建Windows物理机后再对系统进行二次分区,以免出现分区和镜像分区文件不匹配导致的创建失败)
以系统盘20GB为例,进入到分区配置界面。
进入命令行环境:
在 Windows 安装界面按
Shift+F10打开 CMD 窗口输入
diskpart进入分区工具list disk:查看所有磁盘,确认要操作的磁盘编号(通常是Disk 0)
select disk 0:选择磁盘0,即20GB磁盘
对分区进行创建和配置
以下是bios和uefi分区的创建和配置分区脚本。
2.12.1 bios分区
rem 选择待分区的磁盘
select disk 0
rem 创建系统分区(300MB NTFS,Label:System)
create partition primary size=300
format fs=ntfs quick label=System
assign
rem 标记为活动分区(引导用)
active
rem 创建Config Drive分区,用于cloudbaseinit(200MB FAT32,Label:config-2,TypeID:0x27)
create partition primary size=200
format fs=fat32 quick label=config-2
rem 设置类型ID为0x27
set id=27
assign
rem 创建Windows主分区(剩余空间,Label:Windows,Letter:C)
create partition primary
format fs=ntfs quick label=Windows
rem 设置为C盘,若执行"assign letter=C"失败可执行assign
assign letter=C
rem 退出diskpart
exit脚本执行完成后,关闭命令行,点击“刷新”。
注意
Windows镜像分区文件(*.lvm, *.direct)中分区顺序需与虚拟机中分区顺序一致。
2.12.2 uefi分区
rem 选择待分区的磁盘,将磁盘转换为gpt格式
select disk 0
convert gpt
rem 创建EFI分区(400MB)
create partition efi size=400
format fs=fat32 quick label=System
assign
rem 创建MSR分区(100MB,无需格式化和分配盘符)
create partition msr size=100
rem 创建Config Drive分区(200MB)
create partition primary size=200
format fs=fat32 quick label=config-2
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
rem 创建Windows主分区(40000MB=40GB)
create partition primary
format fs=ntfs quick label=Windows
rem 设置为C盘,若执行"assign letter=C"失败可执行assign
assign letter=C
rem 退出diskpart
exit脚本执行完成后,关闭命令行,点击“刷新”。
注意
Windows镜像分区文件(*.lvm, *.direct)中分区顺序需与虚拟机中分区顺序一致。
2.13 安装系统
分区完成后会进行Windows系统的安装。
系统安装完成后会自动重启。
2.14 设置Administrator用户密码
创建用户时会自动创建Administrator用户并设置密码,不建议新建其他用户,可能有安全隐患。物理机装机系统只在装机时为Administrator用户设置密码,不考虑其他用户。
2.15 进入Windows系统
完成上面的配置后,即可进入Windows系统
使用“发送按键”解锁Windows屏保
输入密码后即可进入系统
3. 安装软件、配置系统
这一步安装镜像中需要的软件,配置系统等。用户可根据自身需要进行定制,Windows定制镜像主要分两部分,第一部分是基础配置,第二部分用户定制配置。
3.1 基础配置
由于Windows相关驱动和脚本配置不易获取,本文将提供常用配置和软件包打包为iso,方便用户完成物理机镜像基础配置。其中包含系统升级、远程桌面配置、硬件驱动安装、防火墙配置、ntp配置等基础配置,适配不同的标准物理机设备。
本文提供windows-server-2016、windows-server-2019、windows-server-2022系统的基础配置包,windows-server-*-customize.iso配置包下载地址为:https://cloud.189.cn/t/uqInArrIziEb (访问码:9ee7)
windows-server-2016-customize.iso配置包中的文件结构如下:
windows-server-2016-customize
├─Configs #配置文件
│ └─***
├─Drivers #驱动文件
│ ├─***
│ ├─***
├─Packages #软件安装文件
├─customize.cmd #配置脚本
└─cleanup.cmd #清理镜像脚本3.1.1 挂载配置包
点击“管理”,选择windows-server-2016-customize.iso配置包,完成后点击右下角的“Apply”。
3.1.2 启动系统
打开虚拟机后,启动系统。
打开文件管理器,可以看到已挂载的iso
将iso中的windows-serve-2016-customize文件夹拷贝至桌面。
执行customize.cmd脚本,右键”以管理员身份运行“。
运行完成后输出“BASE CONFIG SUCCESS!”。
3.2 用户定制配置
3.2.1 安装定制软件和配置
用户可根据需求在镜像中安装所需的软件,比如*.exe或*.msi等安装包进行安装。
4. 清理镜像并统一化
执行配置包中的cleanup.cmd对镜像进行清理,右键”以管理员身份运行“。
脚本中包含sysprep命令,执行完成后会自动关机。
%WINDIR%\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown重要:关机后请勿再次重新启动该镜像。
清理完成后,该镜像便已制作完成,镜像默认所在的位置是:/var/lib/libvirt/images/win2016.qcow2。