关于双架构(x86/x64)在同一镜像分别引导的实践与求助
我最终需要的是这种效果这样通过一个启动U盘,我就可以实现对单位所有预装不同架构Windows 7 的电脑进行升级安装、引导修复、还原点还原、备份映像还原、安装。
但我把天朝的互联网搜了个遍,发现所有关于win7 32位64位合一光盘的都是千篇一律地将64位install.wim文件挂载到32的中去,以单引导的方式安装两个架构的操作系统。这样安装盘无法对另外一种架构的操作系统进行维护。不是我所想的 启动菜单可以通过bcdedit编辑镜像根目录下的\boot\bcd从形式上实现,但如何布局镜像内文件结构,从而功能上实现呢? 无意中我发现通过微软的官方工具MediaCreationTool 可以下载创建包含X86,X64两者合一的windows 10 光盘镜像。经测试,灰常牛鳖
双引导完美实现。而且如果在系统内运行根目录的setup.exe安装的话,会根据当前系统的架构自动选择32位还是64位。Windows 10 官方光盘内文件结构如下
打开一看X64,x86这两个文件夹下的内容完全就是win10 32位,64位光盘的内容嘛。再仔细一看根目录下的setup.exe,与x86文件夹下的大小,修改日期,完全一致,就是一个文件。可见是通过32位pe引导的。好了,这下清楚了,根据官方win10的文件结构,我依葫芦画瓢整个win7的。Win10根目录下的启动项,查看bcd文件,显示如下
C:\Windows\system32>bcdedit /storeg:\boot\bcd /enum all
Windows 启动管理器--------------------标识符 {bootmgr}description Windows Boot Managerlocale en-USinherit {globalsettings}default {default}displayorder {default} {2797e058-7724-11e7-8c06-4ccc6a4fe7c4}toolsdisplayorder {memdiag}timeout 30
Windows 启动加载器-------------------标识符 {2797e058-7724-11e7-8c06-4ccc6a4fe7c4}device ramdisk=\x86\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}path \windows\system32\boot\winload.exedescription Windows 10 Setup (32-bit)locale en-USinherit {bootloadersettings}osdevice ramdisk=\x86\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}systemroot \windowscustom:250000c2 0detecthal Yeswinpe Yesems No
Windows 启动加载器-------------------标识符 {default}device ramdisk=\x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}path \windows\system32\boot\winload.exedescription Windows 10 Setup (64-bit)locale en-USinherit {bootloadersettings}osdevice ramdisk=\x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}systemroot \windowscustom:250000c2 0detecthal Yeswinpe Yesems No
Windows 内存测试程序---------------------标识符 {memdiag}device bootpath \boot\memtest.exedescription Windows Memory Diagnosticlocale en-USinherit {globalsettings}
EMS 设置------------标识符 {emssettings}bootems No
调试器设置-----------------标识符 {dbgsettings}debugtype Serialdebugport 1baudrate 115200
全局设置---------------标识符 {globalsettings}inherit {dbgsettings} {emssettings}
启动加载器设置--------------------标识符 {bootloadersettings}inherit {globalsettings} {hypervisorsettings}
虚拟机监控程序设置-------------------标识符 {hypervisorsettings}description Hypervisor Settingshypervisordebugtype Serialhypervisordebugport 1hypervisorbaudrate 115200
设备选项--------------标识符 {7619dcc8-fafe-11d9-b411-000476eba25f}ramdisksdidevice bootramdisksdipath \boot\boot.sdi
我于是照着把win7的bcd文件改了,成品显示如下。C:\Windows\system32>bcdedit /storeh:\boot\bcd /enum all
Windows 启动管理器--------------------标识符 {bootmgr}description Windows Boot Managerlocale en-USinherit {globalsettings}default {default}displayorder {default} {40a36935-776e-11e7-b340-40b89aa1f244}toolsdisplayorder {memdiag}timeout 30
Windows 启动加载器-------------------标识符 {40a36935-776e-11e7-b340-40b89aa1f244}device ramdisk=\x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}path \windows\system32\boot\winload.exedescription Windows 7 Setup (64-bit)locale en-USinherit {bootloadersettings}osdevice ramdisk=\x64\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}systemroot \windowsdetecthal Yeswinpe Yesems Yes
Windows 启动加载器-------------------标识符 {default}device ramdisk=\x86\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}path \windows\system32\boot\winload.exedescription Windows 7 Setup (32-bit)locale en-USinherit {bootloadersettings}osdevice ramdisk=\x86\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}systemroot \windowsdetecthal Yeswinpe Yesems Yes
Windows 内存测试程序---------------------标识符 {memdiag}device bootpath \boot\memtest.exedescription Windows Memory Diagnosticlocale en-USinherit {globalsettings}
EMS 设置------------标识符 {emssettings}bootems Yes
调试器设置-----------------标识符 {dbgsettings}debugtype Serialdebugport 1baudrate 115200
全局设置---------------标识符 {globalsettings}inherit {dbgsettings} {emssettings}
启动加载器设置--------------------标识符 {bootloadersettings}inherit {globalsettings} {hypervisorsettings}
虚拟机监控程序设置-------------------标识符 {hypervisorsettings}description Hypervisor Settingshypervisordebugtype Serialhypervisordebugport 1hypervisorbaudrate 115200
设备选项--------------标识符 {7619dcc8-fafe-11d9-b411-000476eba25f}ramdisksdidevice bootramdisksdipath \boot\boot.sdi
那个EMS到底是开还是关,有什么作用,我不甚明了,反正MSDN下载下来的光盘里面默认是开启的,开启就开启吧至于语言,官方的光盘默认是US,不理它,没必要改。对了根目录\efi\microsoft\boot\bcd 也是有两个启动加载器的。X86,X64文件夹下的bcd文件跟单架构镜像下的完全一样,不修改。
BCD引导文件我做好了,接着照着WIN10合盘布置win7合盘文件结构。结果如下 X86 X64文件夹的内容分别来源于在MSDN我告诉你下载的cn_windows_7_ultimate_with_sp1_x86_dvd_u_677486.isocn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso,32位/64位光盘镜像ei.cfg文件删除了。其余文件由32位镜像提供,bcd文件替换成编辑好的双引导bcd文件。
就两步:编辑BCD,布置文件结构好了,UltraISO制作镜像,刻录到U盘。系统内运行安装试试。结果悲剧。setup.exe无法运行,提示却少组建。可见win7光盘根目录下的setup.exe无法脱离相邻文件夹sources里的内容独立运行。死马当活马医,将windows10根目录下的setup.ex替换过来。运行测试,正常,而且,系统还根据我当前系统是64位的,自动帮我选择64位的 启动U盘拿到一台安32位系统的电脑试试,自动选成32位的了。这是方便升级。此合成的Windows 7光盘在系统内运行完美开机安装尝试
选项可完美实现,尽管安装环境下F8高级选项没什么用。(虚拟机方便截图,实际开机安装也一样)进去
实际开机测试,修复计算机可完美实现,无论是32位还是64位激动中,现在安装
这!!!!!!经排查,什么重新插拔U盘(list disk命令下一直能显示到U盘的),什么BIOS开启兼容模式,写入方式、隐不隐藏,镜像再添加USB3.0驱动,新老机器都尝试过,同一电脑单一架构原版镜像能正常安装。不是USB3.0的驱动问题。也就是说此系统WINPE加载成功了,但启动安装程序的时候出错了。求大神解惑。 我做好的window7 双引导的bcd文件上传如下
哪位大神能帮忙解决最后找不到介质启动不了安装程序的问题呀,坐等,非常感谢 经营四方 发表于 2017-8-4 15:17 https://www.pcbeta.com/static/image/common/back.gif
哪位大神能帮忙解决最后找不到介质启动不了安装程序的问题呀,坐等,非常感谢
什么叫强行合在一起?看清楚是分开引导的。谁说WIN7安装就一定要GPT。如果分开引导成功,格式化盘的依然可以选择GPT。本次讨论跟所谓GPT,MBR毫无关系。现在的困难在于还要修改什么地方,使启动安装成功。系统内安装测试通过了 经营四方 发表于 2017-8-5 00:22 https://www.pcbeta.com/static/image/common/back.gif
什么叫强行合在一起?看清楚是分开引导的。谁说WIN7安装就一定要GPT。如果分开引导成功,格式化盘的依然可 ...
对,就是安装引导找不到启动文件。我这就照着这微软WIN10那个DVD文件结构布置的,最后没找到路径,说明除了根目录BCD文件,还有哪应该改的我没找到。关于uefi引导,无论32位还是64位,我没尝试,默认传统BIOS
页:
[1]