Azure 机器 Windows Server 升级到 Windows 11 方法
此文仅献给勇于折腾的人!预计消耗时长:3-4 小时。

前些时间我本想用 WSL 的镜像网络搭建一些服务,但是由于 VM 是无 SKU 的 Windows Server 系统,WSL 暂不支持,并且 Windows Server 上使用 Visual Studio 开发 uwp 略有点困难,所以我在想办法将其“升级”到 Windows 11。

技术原理

Windows Server 并不能通过官方途径升级到 Windows 11,因而我找到了这篇文章:

https://bbs.pcbeta.com/viewthread-1944102-1-1.html

Windows 11 与 Windows Server 实际为同一系统内核,可通过切换许可证并覆盖升级的方式实现版本无损切换。

实战开始

这里介绍的方法是为 Azure 虚拟机特别“定制”的(实体机可以直接打开上方 url 进行操作),这也并不是唯一方法,但经过本人研究可行,所以记录下来。
  1. 备份(可选)。请选择侧边栏的“备份+灾难恢复”,根据实际需求对虚拟机进行备份或新建还原点。
  2. 下载磁盘。备份完成后,打开你的系统磁盘,选择侧边栏的设置>磁盘导出,根据实际情况设置 URL 到期时间(要确保时间至少可以下载完整个磁盘,我这里 200G 的磁盘下载了 1h),点击生成 URL,然后将下载两个 VHD 文件保存在你的本地电脑。
  3. 文件处理。下载完后请检查两个文件是否有后缀“.vhd”,如果没有请及时添加。
  4. 打开 Hyper-V 管理器(在 Windows 10 中启用 Hyper-V 服务),新建一个虚拟机(以下简称 VM 虚拟机),硬盘添加为你刚刚下载的磁盘 VHD(以下简称 VM 磁盘),启动虚拟机确保系统正常,记录此时虚拟机的系统版本。
  5. 本地计算机按 “Win+X” 打开并选择“磁盘管理”。单击更多操作,选择“附加VHD”,文件即为刚刚的磁盘 VHD。
  6. 此时可以看到,虚拟磁盘挂载在了本地计算机,请打开虚拟磁盘的 系统分区(以下简称 OS 分区),将两个文件夹\Windows\Branding 和\Windows\System32\spp\tokens\skus改名或删除。
  7. 通过 UUPDump 或 微软官网下载与虚拟机内相同构建版本的系统镜像(例如我用的是 Windows Server Build 26252,需要下载 Windows 11 Build 26252)。
  8. 打开 Hyper-V 管理器,再新建一个二代虚拟机,ISO 选择刚刚下载的系统镜像,在虚拟机内安装系统。
  9. 再次 Win+X 打开磁盘管理,再挂载刚刚新建的虚拟机的系统磁盘,在文件资源管理器内将 \Windows\Branding 和\Windows\System32\spp\tokens\skus 两个文件夹复制到 OS 分区的相同位置。
  10. 进入磁盘管理,右键挂载的 VM 磁盘和虚拟机磁盘,选择“分离 VHD”。
  11. 打开 Hyper-V 管理器,启动 “VM 虚拟机”(第4步新建的,下同),确保可以启动 Windows,然后虚拟机内部右键开始按钮选择“运行”,输入 PowerShell 并确认,再在弹出窗口内输入 slmgr.vbs /rilc 并回车运行。
  12. 重启虚拟机并在 Hyper-V 设置中挂载“下载好的 Windows 镜像”,启动系统,先右键开始按钮点击“运行”,输入 winver 并确认,确保此时的 Windows 版本信息没有显示 Server 字样。
  13. 在虚拟机内打开 DVD,运行 setup.exe,选择“保留所有文件”并更新。
  14. 静待 Windows 更新结束,然后在虚拟机内打开设置并激活 Windows 11,然后关闭虚拟机。
  15. 在本地计算机 “Win+R” 输入 PowerShell 并确认运行,参照在 Windows 上安装 Azure PowerShell 文章安装 Azure Powershell 模块。
  16. 在 Azure 门户新建存储账号,然后浏览存储对象,选择 blob 并新建 blob 容器。
  17. 记录此时的地址即为:https://<存储账号名>.blob.core.windows.net/<blob容器名>/目标文件名
  18. 在本地计算机 VM 磁盘所在的地方打开 PowerShell,依次输入并按回车。
    • $destination=<第 17 步提到的地址,目标文件名后缀名为.vhd>
    • $localfile = <VM 磁盘所在的本地位置>
    • Add-AzVhd -Destination $destination -LocalFilePath $localfile
    • 接下来输入资源组(如果有提示)
  19. 等待命令执行完毕,打开 Azure 门户>磁盘,新建磁盘,源选择 blob 存储,并根据虚拟机安全类型选择磁盘安全类型和磁盘位置,其他非必须选项可留空或默认。
  20. Azure 门户中打开你的虚拟机设置,并切换到“磁盘”选项卡,选择 “交换 OS 磁盘” 并选择刚刚新建的磁盘,然后重启虚拟机。
上一篇
下一篇