将virtio集成slipstream到windows iso,winpe – 原生方法和利用0pe

简介: 本文关键字:集成srs到windows镜像,slipsrteam driver to windows iso,集成virtio到winpe,winpe集成virtio

本文关键字:集成srs到windows镜像,slipsrteam driver to windows iso,集成virtio到winpe,winpe集成virtio

目标:

制作一个winpe,使得其在virtio主机环境中可用,比如阿里云ECS或WEST263,godaddy云主机。

这种技术的本质是将srs驱动带入/植入需要这种驱动的镜像,让其在安装/启动过程中发现硬盘不蓝屏,且辅助其它安装过程继续到完成。这一般有二个步骤,第一步是将驱动手术式的植入iso,实现安装程序的对应这种srs设备的内部驱动支持和发现。

srs驱动是boot time driver中一类特殊的驱动,因为安装过程往往需要接触到硬盘对其识别,否则会BOSC,且往往是txt mode 的驱动,有别于pnp把inf和driver .sys直接往windows下一抛就可以的方式,那属于次级驱动,即进入系统后增强系统的后期 设备驱动。在windows安装过程中,这类srs驱动往往是已经存在于注册表和文件系统配置文件中的,所以为了增加一个SRS,我们 必须手动slipstream相应的文件和设置(甚至要修改注册表到.hiv文件)。

如果ISO能自发现带入的驱动 — 比如它是一个安装iso,安装过程有F3选择驱动接口,这种情形比较干净,可以实现从外部将驱动带入到ISO而不需要修改它(当然你也完全可以事先集成它实现自动发现,这样情况跟要谈到的livecd是一样的了),但如果是livecd iso – winpe则是一种windows livecd,则需要集成这个驱动,且保证正确加载驱动后的镜像结果是预期正确能工作的–对应能驱动你那个需要驱动的安装盘)

第二步,实现外部发现光驱镜像过程,即用grub4dos配合winvblk从外部带入光驱镜像。

可见植入srs,与配合grub4dos+winvblk导入光盘镜像是这二大通用过程,这种情况下0pe就是一个强有力的工具。因为它几乎是专门针对这个问题提出的一个整合方案。当然也可书写grldr菜单和手动集成驱动。

注意:目前所提到的全部针对windows iso。因为它识别grub4dos+winvblk带入的驱动。你可以参照其它尚不支持这种方案的ISO带入SRS驱动的方案,比如本站reactos0.4.x增强系列。

下面继续,我们将在winxpsp2下植入virtio驱动到deepinxp iso来描述这个过程,植入到winpe是同样过程,只是pe加载的grldr稍不同:

值入驱动到ISO

手动方法:

修改镜像中的txtsetup.sif(WINPE和windows安装盘中的i386中),加入驱动盘中的对应txtsetup.oem中的chunks到txtsetup.sif,一般有files段,scsi段,scsi.load段,hardwareiddatabases段。注册表的部分好像并不需要(hivexxx.inf->setup.hiv)。把驱动放到system32drivers下。保存改过的iso.

自动方法,准备素材,利用工具:

  • Deepin XP SP3 完美精简版 V6.2 ISO文件,11/20/2013,51.65.104.7400版virtio netkvm和viostor驱动for winxp
  • 其它工具:nlite,grub4dos,WinBuilder0.78.exe和定制的vistape脚本,还有一些for linux,在linux下将ext变成windows winpe盘的工具,在wwwroot下
  • 准备补丁:对于for deepinxpsp3.iso的补丁:HIVESFT.INF,LAYOUT.INF,SETUPREG.HIV,etc..由于下载来的deepin iso信息不完整,winbuilder处理它时会出现好多信息不全的情况出现,包括一些文件大小写错误,故需要修正。请下载全部工具尝试得出修正差异。

处理方法:

  • 解压deepinxpsp3.iso到一个目录,比如我这里是D盘,利用nlite工具,将virtio 驱动 slipstream到镜像中。
  • 打开winbuilder,生成winpe。

grub4dos+winvblk引导

准备peboot,文件组织情况参照提供的peboot.rar,注意的是引导文件中的这几条:

title (Winvblock) Boot RamPE From ISO -- filename 0pe.iso
find --set-root /boot/imgs/0pe.iso
map --mem /boot/imgs/winvblock.img.gz (fd0)
map --mem /boot/imgs/0pe.iso (0xff)
map --hook
chainloader (0xFF)/I386/SETUPLDR.BIN

title (Winvblock) Boot WindowsSetup From ISO -- the 1st step,filename winxpsp3.iso
map --mem /boot/imgs/winvblock.img.gz (fd1)
map --mem (md)0x6000+800 (fd0)
find --set-root /boot/imgs/winxpsp3.iso
map /boot/imgs/winxpsp3.iso (0xff)
map --hook
dd if=(fd1) of=(fd0) count=1
chainloader (0xff)

title (Winvblock) Boot WindowsSetup From ISO -- the 2st step,filename winxpsp3.iso
map --mem /boot/imgs/winvblock.img.gz (fd1)
map --mem (md)0x6000+800 (fd0)
find --set-root /boot/imgs/winxpsp3.iso
map /boot/imgs/winxpsp3.iso (0xff)
map --hook
chainloader (hd0)+1

使用0pe

在0pe中植入srs驱动我们用它的自动选择方案,即在opesrsFREQUENT放一个viostor.sy_,0pesrcCHKPCI.TXT放一条(具体值即打开viostortxtsetup.oem查看)

$PCIVEN_1AF4&DEV_1001&SUBSYS_00021AF4
VIOSTOR
在CHKPCIDB.GZ->PCIDEVS.txt中你也可看到0pe对redhat virtio有支持。

至于引导过程,它在加载驱动后会发现optdesk.wim,然后继续winpe的加载,最终完成进入过程。当然你也可以用下一步菜单实现二步安装windows,或自写更多的菜单实现更多功能(这完全是grldr编辑问题。)

对比virtio winpe,与众不同的是virtio 0pe版本的winpe可以借助netkvm连网。且有更多外置工具可用。

而virtio winpe支持将linux winpe盘变成windows filesystem的winpe盘。

注意事项

使用w2k或winxp内核产生的winpe在进入系统时,鼠标可能会出现不能使用的情况(这好像是虚拟机USB驱动冲突通用情况)。至于netkvm完全不必像viostor那样麻烦完成可以采用pnp的方式把对应inf和sys放到光盘驱动镜像中。

生成的virtio winpe:

http://www.shaolonglee.com/owncloud/index.php/s/yeKnfbK67f4MXo8

0pe virtio winpe:

http://www.shaolonglee.com/owncloud/index.php/s/dD8dm8c9FPcAUje


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
15天前
|
Ubuntu Linux 虚拟化
安装Windows Linux 子系统的方法:适用于windows 11 版本
本文提供了在Windows 11系统上安装Linux子系统(WSL)的详细步骤,包括启用子系统和虚拟化功能、从Microsoft Store安装Linux发行版、设置WSL默认版本、安装WSL2补丁,以及完成Ubuntu的首次安装设置。
51 2
|
18天前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
1月前
|
机器学习/深度学习 设计模式 人工智能
面向对象方法在AIGC和大数据集成项目中的应用
【8月更文第12天】随着人工智能生成内容(AIGC)和大数据技术的快速发展,企业面临着前所未有的挑战和机遇。AIGC技术能够自动产生高质量的内容,而大数据技术则能提供海量数据的支持,两者的结合为企业提供了强大的竞争优势。然而,要充分利用这些技术,就需要构建一个既能处理大规模数据又能高效集成机器学习模型的集成框架。面向对象编程(OOP)以其封装性、继承性和多态性等特点,在构建这样的复杂系统中扮演着至关重要的角色。
46 3
|
11天前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
50 0
|
11天前
|
存储 开发者 C#
WPF与邮件发送:教你如何在Windows Presentation Foundation应用中无缝集成电子邮件功能——从界面设计到代码实现,全面解析邮件发送的每一个细节密武器!
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中集成电子邮件发送功能,详细介绍了从创建WPF项目到设计用户界面的全过程,并通过具体示例代码展示了如何使用`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage`类来实现邮件发送逻辑。文章还强调了安全性和错误处理的重要性,提供了实用的异常捕获代码片段,旨在帮助WPF开发者更好地掌握邮件发送技术,提升应用程序的功能性与用户体验。
17 0
|
2月前
|
Linux Apache C++
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
该文介绍了如何在Windows环境下为FFmpeg集成SRT协议支持库libsrt。首先,需要安装Perl和Nasm,然后编译OpenSSL。接着,下载libsrt源码并使用CMake配置,生成VS工程并编译生成srt.dll和srt.lib。最后,将编译出的库文件和头文件按照特定目录结构放置,并更新环境变量,重新配置启用libsrt的FFmpeg并进行编译安装。该过程有助于优化直播推流的性能,减少卡顿问题。
71 2
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
|
3月前
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
84 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
若依修改,集成mybatisplus报错,若依集成mybatisplus,总是找不到映射是怎么回事只要是用mp的方法就找报,改成mybatisPlus配置一定要改
|
2月前
|
负载均衡 监控 Java
Spring Boot与微服务治理框架的集成方法
Spring Boot与微服务治理框架的集成方法
|
4月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
96 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass