封装virtio驱动到windows2008R2原版iso中
准备条件:
原版win2008r2 ISO镜像 cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_x64_dvd_617598.iso
windows操作系统
virtio驱动 virtio-win-0.1-100.iso
UltraISO
1. 使用UltraISO将wim文件install.vim,boot.vim拷出到D盘
- install.wim 为了安装时及安装后能够识别virtio设备(硬盘网卡pci等等)
- boot.wim 为了启动光盘时能够识别virtio硬盘
创建目录环境,将virtio-win-0.1-100.iso中的win2008r2对应的驱动提取到D:\中,确保目录D:\temp为空
2. 准备执行命令加载驱动,命令仅提供install.wim,boot.wim与install安装方式相同,包含在第5节脚本中
2.1 管理员身份打开CMD
需要用“管理员”身份打开命令提示符。(注意左上角应有“管理员”字样,如果没有,说明当前的命令提示符不是以管理员身份运行的)
2.2 查看wim文件中包含几个安装版本(server、datacenter、webserver等,boot.wim为 PE或者windows set up)
install.wim 和 boot.wim都需要加载驱动,boot.wim是为了安装时能够识别硬盘
- /winfile:指定install.wim文件存放的位置,这里为D:\install.wim
dism /get-wiminfo /wimfile:d:\install.wim
2.3 选择需要加载驱动的版本号例如:datacenter版索引号为5
- /winfile:指定install.wim文件存放的位置,这里为D:\install.wim.
- /index:指定要装载的映像卷序号,也就是你要装载整合的系统版本 从上面命令得出datacenter为5
- /mountdir 为加载wim文件的路径这里为D:\temp
dism /mount-wim /wimfile:D:\install.wim /index:5 /mountdir:D:\temp
加载完成后,查看temp目录,里面是install.wim提取出来的文件
2.4 导入第三方驱动
- /image:指定装载wim文件的目录位置,D:\temp。
- /driver:指定驱动文件的存放位置,D:\win2008r2 从virtio提取驱动,如win2008r2与win7同内核,因此提取win7文件夹下所有内容到D:\win2008r2
- /recurse 用于查询所有子文件夹中的驱动程序。
- /ForceUnsigned用于向映像中添加未签名的驱动程序,如果不使用此命令的话某些未得到微软签名许可的驱动程序会添加不了。
dism /image:d:/temp /add-driver /driver:d:/win2008r2 /recurse /forceunsigned
2.5 将添加驱动后的install.wim内容写回 install.wim文件中去
dism /unmount-wim /mountdir:D:\temp /commit
文件夹空了,内容都写回了install.wim中
3. 使用脚本添加驱动到iso的所有版本中
如果需要wim文件的另外7个版本都加入该驱动则需要手动重复执行7遍,每次注意更换index号即可
也可通过脚本执行,注意输入参数的要求:
- boot.wim文件完整路径
- install.wim文件完整路径路径
- 临时目录的完整路径
- virtio驱动文件夹的完整路径
- wim文件包含的版本个数
@echo off
set bootvar=0
set /p bootwimpath=请输入wim文件完整路径例如(D:\boot.wim):
set /p installlwimpath=请输入wim文件完整路径例如(D:\install.wim):
set /p temppath=请输入临时目录完整路径确保文件夹为空(例如:D:\temp):
set /p driverpath=请输入要加入的驱动路径(例如:D:\win2008r2):
dism /get-wiminfo /wimfile:%bootwimpath%
set /p bootcount=请输入当前boot.wim文件所包含的版本个数:
dism /get-wiminfo /wimfile:%installlwimpath%
set /p installcount=请输入当前install.wim文件所包含的版本个数:
rem ************循环开始了
:bootcontinue
set /a bootvar+=1
echo boot.wim第%bootvar%次循环 >>dism.log
echo ====================================================================================== >>dism.log
echo 为boot.wim加载驱动 >> dism.log
dism /mount-wim /wimfile:%bootwimpath% /index:%bootvar% /mountdir:%temppath% >>dism.log
dism /image:%temppath% /add-driver /driver:%driverpath% /recurse /forceunsigned >>dism.log
dism /unmount-wim /mountdir:%temppath% /commit >>dism.log
echo 等待5s准备导入下一版本,如需取消请立即按Ctrl+C >>dism.log
rem 等待10秒 ping本机10次不使用默认的次数,nul是不显示ping信息:
@ping -n 5 127.1>nul
if %bootvar% lss %bootcount% goto bootcontinue
rem ************循环结束了
echo boot.wim循环执行完毕 >>dism.log
set varinstall=0
rem ************循环开始了
:installcontinue
set /a varinstall+=1
echo install.wim第%varinstall%次循环 >>dism.log
echo ====================================================================================== >>dism.log
dism /mount-wim /wimfile:%installlwimpath% /index:%varinstall% /mountdir:%temppath% >>dism.log
dism /image:%temppath% /add-driver /driver:%driverpath% /recurse /forceunsigned >>dism.log
dism /unmount-wim /mountdir:%temppath% /commit >>dism.log
echo 等待5s准备导入下一版本,如需取消请立即按Ctrl+C >>dism.log
rem 等待10秒 ping本机10次不使用默认的次数,nul是不显示ping信息:
@ping -n 5 127.1>nul
if %varinstall% lss %installcount% goto installcontinue
rem ************循环结束了
echo install.wim循环执行完毕 >>dism.log
pause
在D:根目录创建一个test.bat文件,将上面脚本拷入文件中,执行脚本,输入所需路径参数 ,boot.wim版本数为2
根据检测出的install.wim的版本个数
查看执行的日志如下:
4. 替换原版install.wim文件即可生成新的iso文件
按下Ctrl+ S 保存
网友评论