如果只是对当前系统的winre.wim集成虚拟化驱动,可参考我这篇文档https://cloud.tencent.com/developer/article/1998997
(winre.wim的位置你可以安装Everything全局搜一下)
如果是给用于升级的ISO的winre.wim中注入virtio驱动,按如下步骤:(代码只是参考,具体化目录和盘符)
1、准备用于升级的ISO以及virtio的驱动(这里的驱动仅测试使用,具体Virtio的驱动需要您获取),解压ISO。
我一般在这里下载最新的Server2022:https://sysin.org/blog/windows-server-2022/ (有百度网盘会员会快一些,没有的话就慢慢下呗)
或者使用速度较快的aria2下载方式:www.uupdump.cn下载Server21H2(就是2022,也就是大版本号20348),一般是每个月微软都会出一个最新的ISO
https://www.uupdump.cn/known.php?q=regex%3A%28%3F%3D.*20348%29.*server&sort=1
2、由于默认的ISO 中是包含多个edition的, 比如Pro, ENT 和EDU. 我们可以先通过下面命令行查询edition 和index number 的对应情况(高亮处替换为解压后的install.wim的路径)。
Get-WindowsImage -ImagePath "F:\UpgradeTest\en-us_windows_10_business_editions_version_22h2_updated_nov_2022_x64_dvd_e8577df7\sources\install.wim"
可以看到win10 Enterprise是index 3,示例如下:
3、我们需要安装哪个版本, 就mount 哪个index, 然后把驱动注入. 比如, 我们此次测试需要安装的是Ent 版本, 我们就mount index 3 即可(高亮部分替换成实际操作路径)。由于winre.wim 是在install.wim 里面的, 所以我们先把install.wim 的index 3 mount 起来.
Mount-WindowsImage -ImagePath "F:\UpgradeTest\en-us_windows_10_business_editions_version_22h2_updated_nov_2022_x64_dvd_e8577df7\sources\install.wim" -Index 3 -Path F:\UpgradeTest\installwimMount
4、Install.wim mount 起来后, 我们在\windows\system32\recovery 文件夹下面可以看到Winre.wim. 这个文件经过验证,会在升级的时候作为Safeos 的PE 使用.
5、接下来我们需要对winre.wim 进行驱动注入. 我们新建一个winremount 文件夹,这个时候把"F:\ISOUpgrade\installwimmount\Windows\System32\Recovery\Winre.wim" 这个image mount到winremount 文件夹下. Winre.wim 只有一个index, 所以我们mount index 1 即可.
Mount-WindowsImage -ImagePath "F:\UpgradeTest\installwimMount\Windows\System32\Recovery\Winre.wim" -Index 1 -Path F:\UpgradeTest\winremount
6、然后通过dism 命令行将驱动注入winremount 这个offline image 中.
dism.exe /image:F:\UpgradeTest\winremount /add-driver /driver:"F:\UpgradeTest\driver\amd64\viostor.inf"
7、导入成功后, 我们通过如下命令行可以查询到导入的驱动.
dism.exe /image:F:\UpgradeTest\winremount /get-drivers
8、到这里, 驱动已经注入到winre 的offline image 中. 我们接下来需要:
a.先dismount winremount文件夹.
b.再dismount installwimmount 文件夹.
命令行如下:
=== ===
Dismount-WindowsImage -Path F:\UpgradeTest\winremount -Save
Dismount-WindowsImage -Path F:\UpgradeTest\installwimMount -Save
9、由于本镜像作升级用途,因此我们无需封装,直接拷贝整个ISO解压后的文件夹到目标机器上, 双击setup.exe 直接升级即可.
以上过程,具体化示例:
#比如我下载ISO到E:\win10.iso
#装载到H:,有用的文件是H:\sources\install.wim
#创建需要的目录
mkdir -force E:\UpgradeTest\winremount
mkdir -force E:\UpgradeTest\installwimMount
mkdir -force E:\UpgradeTest\driver\
mkdir -force E:\sources\
#下载虚拟化驱动压缩包并解压
$client1 = new-object System.Net.WebClient
$client1.DownloadFile('http://windows-1251783334.cos.ap-shanghai.myqcloud.com/Install_QCloudVirtIO_new.zip','C:\Users\Administrator\Downloads\Install_QCloudVirtIO_new.zip')
#解压
Start-Process -FilePath "$env:ProgramFiles\7-Zip\7z.exe" -ArgumentList "x -aoa ""c:\Users\Administrator\Downloads\Install_QCloudVirtIO_new.zip"" -o""c:\Users\Administrator\Downloads\Install_QCloudVirtIO_new""" -NoNewWindow -Wait
#把需要的驱动版本拷贝到目标位置E:\UpgradeTest\driver\
robocopy "C:\Users\Administrator\Downloads\Install_QCloudVirtIO_new\Win10_Win11_2016_2019_2022\amd64" "E:\UpgradeTest\driver" /S /E /IS /NFL /np
#从装载盘里把sources\install.wim拎出一份到E:\sources\
xcopy /F /H /Y /Q "H:\sources\install.wim" "E:\sources\install_exp.wim*" #*号是有用处的,不要去
#去除E:\sources\install_exp.wim的只读属性
attrib -s -h -r /s /d "E:\sources\install_exp.wim"
#查看.wim的序号
Get-WindowsImage -ImagePath "E:\sources\install_exp.wim"
ImageIndex : 1
ImageName : Windows 10 教育版
ImageDescription : Windows 10 教育版
ImageIndex : 2
ImageName : Windows 10 企业版
ImageDescription : Windows 10 企业版
ImageIndex : 3
ImageName : Windows 10 专业版
ImageDescription : Windows 10 专业版
ImageIndex : 4
ImageName : Windows 10 专业教育版
ImageDescription : Windows 10 专业教育版
ImageIndex : 5
ImageName : Windows 10 专业工作站版
ImageDescription : Windows 10 专业工作站版
#选企业版的序号挂载到E:\UpgradeTest\installwimMount
Mount-WindowsImage -ImagePath "E:\sources\install_exp.wim" -Index 2 -Path E:\UpgradeTest\installwimMount
#查看Winre.wim的序号
Get-WindowsImage -ImagePath "E:\UpgradeTest\installwimMount\Windows\System32\Recovery\Winre.wim"
ImageIndex : 1
ImageName : Microsoft Windows Recovery Environment (x64)
ImageDescription : Microsoft Windows Recovery Environment (x64)
#挂载Winre.wim到E:\UpgradeTest\winremount
Mount-WindowsImage -ImagePath "E:\UpgradeTest\installwimMount\Windows\System32\Recovery\Winre.wim" -Index 1 -Path E:\UpgradeTest\winremount
#查看Winre.wim的驱动
dism.exe /image:E:\UpgradeTest\winremount /get-drivers
#给Winre.wim添加虚拟化硬盘驱动
dism.exe /image:E:\UpgradeTest\winremount /add-driver /driver:"E:\UpgradeTest\driver\viostor.inf"
#给Winre.wim添加虚拟化网卡驱动
dism.exe /image:E:\UpgradeTest\winremount /add-driver /driver:"E:\UpgradeTest\driver\netkvm.inf"
#查看Winre.wim的驱动
dism.exe /image:E:\UpgradeTest\winremount /get-drivers
#此处请手动关闭所有打开的文件夹
#此处请手动关闭所有打开的文件夹
#此处请手动关闭所有打开的文件夹
#保存对Winre.wim的更改(加了2个驱动)
Dismount-WindowsImage -Path E:\UpgradeTest\winremount -Save
#把改造好的Winre.wim拎出一份到E:\sources\Winre.wim
xcopy /F /H /Y /Q "E:\UpgradeTest\installwimMount\Windows\System32\Recovery\Winre.wim" "E:\sources\Winre.wim"
#查看install_exp.wim的驱动
dism.exe /image:E:\UpgradeTest\installwimMount /get-drivers
#给install_exp.wim添加虚拟化硬盘驱动
dism.exe /image:E:\UpgradeTest\installwimMount /add-driver /driver:"E:\UpgradeTest\driver\viostor.inf"
#给install_exp.wim添加虚拟化网卡驱动
dism.exe /image:E:\UpgradeTest\installwimMount /add-driver /driver:"E:\UpgradeTest\driver\netkvm.inf"
#查看install_exp.wim的驱动
dism.exe /image:E:\UpgradeTest\installwimMount /get-drivers
#保存对install_exp.wim的更改(给企业版系统本身加了2个驱动、还给Windows\System32\Recovery\Winre.wim加了2个驱动)
Dismount-WindowsImage -Path E:\UpgradeTest\installwimMount -Save
#用UltraISO或PowerISO等软件打开原版ISO文件,删掉原sources\install.wim,替换为改造后的install_exp.wim并重命名为install.wim,然后另存为新的ISO,运行setup.exe时选自己改造的那个分支。
#注意
#注意
#注意
#在Save之前,如果中途想回退(放弃)则执行Discard命令,例如:
Dismount-WindowsImage -Path E:\UpgradeTest\winremount -Discard
Dismount-WindowsImage -Path E:\UpgradeTest\installwimMount -Discard
10、如果要封装ISO,参考我这篇文档https://cloud.tencent.com/developer/article/2356116
就地升级(维护)系统,版本要对,同版本的才支持,不同版本的不行,比如得是pc对pc、server对server、en对en、cn对cn、桌面版对桌面版、core纯命令行版对core纯命令行版,交叉的不行
就地升级(维护)系统,版本要对,同版本的才支持,不同版本的不行,比如得是pc对pc、server对server、en对en、cn对cn、桌面版对桌面版、core纯命令行版对core纯命令行版,交叉的不行
就地升级(维护)系统,版本要对,同版本的才支持,不同版本的不行,比如得是pc对pc、server对server、en对en、cn对cn、桌面版对桌面版、core纯命令行版对core纯命令行版,交叉的不行
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。