前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在用于升级的ISO的winre.wim中注入virtio驱动的相关步骤

在用于升级的ISO的winre.wim中注入virtio驱动的相关步骤

原创
作者头像
Windows技术交流
修改2024-06-11 14:06:02
1810
修改2024-06-11 14:06:02
举报
文章被收录于专栏:Windows技术交流Windows技术交流

如果只是对当前系统的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

代码语言:txt
复制
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 起来.

代码语言:txt
复制
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 即可.

代码语言:txt
复制
Mount-WindowsImage -ImagePath "F:\UpgradeTest\installwimMount\Windows\System32\Recovery\Winre.wim" -Index 1 -Path F:\UpgradeTest\winremount

6、然后通过dism 命令行将驱动注入winremount 这个offline image 中.

代码语言:txt
复制
dism.exe /image:F:\UpgradeTest\winremount /add-driver /driver:"F:\UpgradeTest\driver\amd64\viostor.inf"

7、导入成功后, 我们通过如下命令行可以查询到导入的驱动.

代码语言:txt
复制
dism.exe /image:F:\UpgradeTest\winremount  /get-drivers

8、到这里, 驱动已经注入到winre 的offline image 中. 我们接下来需要:

a.先dismount winremount文件夹.

b.再dismount installwimmount 文件夹.

命令行如下:

=== ===

代码语言:txt
复制
Dismount-WindowsImage -Path F:\UpgradeTest\winremount -Save
Dismount-WindowsImage -Path F:\UpgradeTest\installwimMount -Save

9、由于本镜像作升级用途,因此我们无需封装,直接拷贝整个ISO解压后的文件夹到目标机器上, 双击setup.exe 直接升级即可.

以上过程,具体化示例:

代码语言:txt
复制
#比如我下载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时选自己改造的那个分支。

代码语言:txt
复制
#注意
#注意
#注意
#在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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档