说明
本教程,根据阿里云-制作Windows镜像文件教程、ZStack Cloud WindowsServer系统封装教程以及自定义优化体验的修改制作。
Windows系列教程以WinServer2022做例子,其他版本步骤基本相同。
安装系统版本:Windows Server 2022 数据中心评估版
下载链接:https://www.microsoft.com/zh-cn/evalcenter/evaluate-windows-server-2022
镜像名称:20348.1787.230607-0640.fe_release_svc_refresh_SERVER_EVAL_x64FRE_zh-cn.iso
准备工作
1)镜像文件夹创建
进入qemu目录
cd /opt/unetlab/addons/qemu/
创建镜像目录
mkdir {模板名称-自定义内容}
cd /opt/unetlab/addons/qemu/
mkdir winserver-2022-DataCenterEdition-EVAL
2)系统盘创建
进入镜像目录
cd {镜像目录名}
创建系统盘
磁盘名一般为virtio或hd的居多,在EVE-NG或者PNETLAB中,磁盘名称是固定格式的,virtio代表半虚拟化磁盘,hd代表IDE盘(IDE盘最多4个);最后一位的字母代表第几块硬盘,a表示第一块盘,b表示第二块盘以此类推。具体请参考链接:[Qemu image namings](Qemu image namings - (eve-ng.net))、Qemu镜像命名规则
只能是qcow2格式的盘,磁盘大小创建后也能扩容,但是无法缩小。
/opt/qemu/bin/qemu-img create -f qcow2 {磁盘名} {磁盘大小}
根据WinServer2022规范文档中最低磁盘大小要求,创建一个大小为32G的虚拟磁盘。
cd winserver-2022-DataCenterEdition-EVAL
/opt/qemu/bin/qemu-img create -f qcow2 virtioa.qcow2 32G
3)ISO镜像上传
使用工具(例如CRT、xshell、winscp等)将WindowServer2022的镜像上传到镜像文件夹中。
上传后,将镜像名称改为cdrom.iso
4)在LAB中创建节点并启动
在任意LAB中创建winserver-2022-DataCenterEdition-EVAL节点,并且挂载驱动光盘。
挂载驱动光盘的QEMU参数:
-drive file=/opt/unetlab/ISO/win.iso,index=3,media=cdrom
系统安装
如果无法键盘输入,就把输入法改为“无输入法”就行了。
系统优化
优化流程展示
基于使用体验优化
根据自身需求修改即可。
1、更改分辨率位:1440x900。
2、修改"本地安全策略""账户策略""密码策略""密码最长使用期限"为0天(密码永不过期)。
3、启动"本地安全策略""本地策略""安全选项""交互式登入:无需按CTRL+ALT+DEL"。
4、通过“gpedit.msc”启用"计算机配置管理模板控制面板个性化不显示锁屏"优化登入体验。
5、启动(任务栏和导航属性---开始屏幕---当我登录或关闭屏幕上的所有应用时,转到桌面而不是“开始屏幕”)。注:2012需要
基于阿里云教程优化
1、允许远程连接到此计算机(开启远程访问);
2、关闭专用网络、公用网络 Windows Defender 防火墙(关闭防火墙);
3、安装以下virtio驱动:
"balloon.inf" 是指内存气球设备驱动程序的安装信息文件,用于在虚拟化环境中管理虚拟机的内存资源。
"netkvm.inf" 是指网络驱动程序的安装信息文件,用于虚拟机中的网络设备与主机之间的通信。
"pvpanic.inf" 是指虚拟机恐慌设备驱动程序的安装信息文件,用于在虚拟机中模拟恐慌信号,以便宿主机或管理程序能够及时响应。
"vioser.inf" 是指虚拟串口设备驱动程序的安装信息文件,用于在虚拟机中模拟串口设备。
"viostor.inf" 是指虚拟存储设备驱动程序的安装信息文件,用于虚拟机中的存储设备与主机之间的数据传输。
基于ZStack Cloud教程优化
1、安装GuestTools:
QGA (QEMU Guest Agent) 实现宿主机与云主机进行交互的应用程序,此交互方式不依赖网络,大大增强云主机的性能与功能。检测云主机内GuestTools及Virtio驱动状态。
CloudbaseInit:安装CloudbaseInit的云主机支持导入User Data等定制化功能。
agent内部监控:安装agent后可以查看云主机内部监控数据。
2、安装USB3.0驱动;
3、预防磁盘脱机设置(为了防止服务器异常掉电导致云主机恢复后磁盘脱机的情况);
4、系统预处理(系统预处理是通过Windows系统自带的系统准备工具(Sysprep)为硬件独立和清理准备计算机。)
基于使用体验的优化
-
修改分辨率
-
修改密码永不过期
本地安全策略----账户策略---密码策略---密码最长使用期限
-
修改无需按CTRL+ALT+DEL登入
本地安全策略---本地策略---安全选项---交互式登入:无需按CTRL+ALT+DEL
-
修改为不显示锁屏
通过“gpedit.msc”启用组策略编辑器,修改"计算机配置---管理模板---控制面板---个性化---不显示锁屏"优化登入体验。
基于阿里云教程优化
-
开启远程访问
允许远程连接到此计算机(开启远程访问);
-
关闭系统防火墙
关闭专用网络、公用网络 Windows Defender 防火墙(关闭防火墙);
-
安装Virtio驱动
-
根据源服务器操作系统版本,选择打开对应的文件夹。
-
例如,本示例中服务器的操作系统版本为Windows Server 2022 64位,则打开的文件夹路径为
E:\虚拟机驱动\阿里云Win驱动\210408.1454.1459_bin\win10[16-19-22]\amd64
。 -
在amd64文件夹内的空白区域,按下Shift键的同时,单击鼠标右键,然后单击在此处打开 Powershell 窗口(S)。
-
在Windows Powershell中,运行以下命令,安装新版virtio驱动。
-
**注意!**如果您当前Windows实例的登录用户为普通用户,需要以管理员权限运行该命令。如果是系统用户,则可以直接运行该命令。
pnputil -i -a *.inf
如下图所示,表示virtio驱动安装成功。
-
安装后使用以下命令删除powershell历史记录:
Clear-History
驱动说明:
- balloon.inf:是指内存气球设备驱动程序的安装信息文件,用于在虚拟化环境中管理虚拟机的内存资源。
- netkvm.inf:是指网络驱动程序的安装信息文件,用于虚拟机中的网络设备与主机之间的通信。
- pvpanic.inf:是指虚拟机恐慌设备驱动程序的安装信息文件,用于在虚拟机中模拟恐慌信号,以便宿主机或管理程序能够及时响应。
- vioser.inf :是指虚拟串口设备驱动程序的安装信息文件,用于在虚拟机中模拟串口设备。
- viostor.inf:是指虚拟存储设备驱动程序的安装信息文件,用于虚拟机中的存储设备与主机之间的数据传输。
-
基于ZStack Cloud教程优化
-
安装GuestTools工具包
QGA (QEMU Guest Agent) :实现宿主机与云主机进行交互的应用程序,此交互方式不依赖网络,大大增强云主机的性能与功能。 检测云主机内GuestTools及Virtio驱动状态。 CloudbaseInit:安装CloudbaseInit的云主机支持导入User Data等定制化功能。 agent内部监控:安装agent后可以查看云主机内部监控数据。
注意:如果提示缺少dll文件,则先安装同目录下的vc_redist.x64后再安装GuestTools
-
安装USB3.0驱动
-
预防磁盘脱机设置
为了防止服务器异常掉电导致云主机恢复后磁盘脱机的情况,Windows系统安装完成后,使用管理员权限进入cmd命令行,依次执行以下命令:
1)进入diskpart diskpart 2)查看SAN策略 san 3)使用diskpart更改SAN策略 san policy=onlineall 4)再次查看SAN策略 san 5)退出diskpart exit
-
系统预处理
系统预处理是通过Windows系统自带的系统准备工具(Sysprep)为硬件独立和清理准备计算机。
打开
C:\Windows\System32\Sysprep
文件夹,运行sysprep.exe
。注意!记得勾选通用和将关机选项改为关机完成后,系统会自动关机。
基于华为云
为了防止镜像中DHCP租期过长导致创建的云服务器无法正确的获取地址,用户需要释放当前的DHCP地址。
在Windows命令行中,执行以下命令释放当前的DHCP地址。
ipconfig /release
镜像提交
1)PNET提交镜像
2)EVE-NG提交镜像
EVE-NG,需要到对应节点的镜像目录中使用以下命令提交镜像。
注意:virtioa.qcow2是镜像目录中对应的名称。
/opt/qemu/bin/qemu-img commit virtioa.qcow2
3)验证是否提交成功
可以通过ll -sh
命令查看qcow2文件大小,如果没提交成功,则文件大小很小。
也可以通过,在lab中,再次添加一个新的节点镜像,开机测试是否能正常使用。
测试没问题后,删除目录下的cdrom.iso
文件。
压缩镜像
第一次压缩镜像后通常能将镜像大小压缩接近一半,强烈建议压缩镜像(注意!压缩时间较长)。
进入到镜像所在路径后通过以下命令压缩镜像。
qemu-img convert -p -c -O qcow2 {镜像系统盘名称} {压缩后的名称}
qemu-img convert -p -c -O qcow2 virtioa.qcow2 new.qcow2
等待进度走完即可。
可以看到,压缩完成后,新的qcow2文件大小比原文件小了接近一半。
将旧的文件删除,再把新的文件改名为virtioa.qcow2
就完成了。
在lab中添加一个新的节点进行测试镜像是否能正常工作。