新的uefi启动的win8pe4.0在这里 https://www.wingwy.com/archives/2013_03_1240.html

早就听说efi和uefi,不过接触的新机器还都是bios模式的,没法体验。今年2月vm 8.0.2版本总算支持模拟uefi模式启动了,以后uefi也会慢慢代替古老的bios。这两天试了一下,以上一个“支持32位程序的64位winpe3.1修正版3” 为蓝本做了个支持uefi模式启动的64位pe:wingwy-pe3.1-v2-fix3-uefi,可以同时实现uefi和bios的双启动。因为接触uefi才这几天,有些问题我也不清楚,在这里讨论一下,期待各位网友的解答。

1 先说下efi和uefi

efi/uefi被视为bios的代替着,最基本的定义什么的就不啰嗦了,大家搜搜就有了。值得注意的是uefi的u意思是unified,由efi 1.10版发展起来的。早期的efi有32位和64位不同的shell,不过标准的uefi只支持64位了(据说有的厂家修改后任然支持32位),所以64位pe能从uefi的机器上启动。

由于没有支持uefi的实体机,我们可以用 vm 8.0.2机器以上版本来模拟。方法很简单,在生成的vmx文件中加一行  firmware = “efi”  就可以了,参见 http://bbs.wuyou.com/viewthread.php?tid=205898&extra=page%3D1

2 实现bios和uefi模式的双启动

大家都知道传统的bios方式启动win7pe或是win7安装盘的流程:引导信息—\bootmgr—\boot\bcd文件—wim文件—winload.exe。uefi模式的启动也是类似的,顺序大概是:引导信息—\bootmgr.efi—\efi\microsoft\boot\bcd文件—wim文件—winload.efi。两种模式不冲突,只要分别配置好了就能实现双启动。了解了这个,用uefi模式启动就很简单了,以wingwy-pe3.1-v2-fix3.iso为例,2个必要条件(1)需要光盘根目录有bootmgr.efi,(2)\efi\microsoft\boot\bcd 中{default} 的path指向\windows\system32\boot\winload.efi 。当然还有font文件夹等。据我尝试,其他文件的一些文件似乎不是必须的,后面再讨论。另外,ultral iso 9.5.1版本似乎不支持uefi模式的引导,用这个软件修改会导致uefi引导无效,要生成iso可以用.\boot\oscdimg.exe -b \efi\microsoft\boot\efisys.bin -u2 -udfver102 这样方式打包。这样打包后加入了uefi引导信息,但没有bios模式的,所以要写入2段启动文件,见第4部分。

3 uefi模式启动的bcd文件配置以及其他一些文件的作用

关于uefi模式启动的详细配置可以参考微软的文章 UEFIGuide.docx  http://msdn.microsoft.com/en-us/windows/hardware/gg463140.aspx 。 其中提到,bcd文件中{boomgr} 的path需要指向\EFI\Microsoft\Boot\bootmgfw.efi 。但据我验证,此步骤不是必要的,至少在vm8.0.2的efi模式下,不要这个bootmgfw.efi这个文件也能启动。文件中提到  {fwbootmgr} 是Firmware boot manager,需要 Bcdedit /set {fwbootmgr} displayorder {bootmgr} /addfirst 加入到bcd文件中,我不是很清楚这个文件的确切用途,bcd文件中没有他也能启动,莫非这个是刷在主板上的?内存诊断的路径也要重设成 {memdiag} path \efi\microsoft\boot\memtest.efi 。另外,我试便了把local设成zh-cn,也加入了中文的mui文件。但在选择菜单,比如“内存诊断”,的时候无法显示中文,但启动的时候实显示中文(如下图)。

我发现waik提供的64位pe3.1有\efi\boot\bootx64.efi这个文件,另外64位win7安装盘下有\efi\microsoft\boot\cdboot.efi 这两个文件似乎也不是必须的。不知道他们的作用是什么。

4 支持uefi模式启动的64位pe下载:wingwy-pe3.1-v2-fix3-uefi.iso

这个版本和wingwy-pe3.1-v2-fix3基本一致,就是加入了uefi启动。wim文件中在32位64位程序切换的时候加入了状态显示(感谢wuyou的 sratlf 版主)。如果想要64位pe支持uefi启动,fix3版本的可以不用新下载,只要下载这个wingwy-pe3.1-v2-uefi-base.iso,放入 \winpe\winpe.wim 就可以了。该文件适用于我做的pe3.1v2的其他版本,比如,如果你觉得fix3版本太大,加入的驱动你都用不上,你把fix2版的wim文件放进去也是可以的。最后别忘了用oscdimg -bootdata 这样方式打包实现uefi和bios双启动。比如全部合盘文件在D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO 下面,运行

oscdimg.exe -m -o -u2 -udfver102 -lwingwy-pe3.1-v2-fix3-uefi -bootdata:2#p0,e,D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO\boot\etfsboot.com#pEF,e,D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO\efi\microsoft\boot\efisys.bin D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO D:\PC\pe\wingwy-pe3.1-v2-fix3-uefi.iso

就可以了.

还有一点需要说明,uefi模式启动后bootsect.exe无法运行,我暂时没找到其他的代替品。

2.14日前下载的网友如果发现不能正常运行,可以不用重新下载,只要把”自定义修改WinPE光盘.bat”中的

echo 正在生成光盘ISO文件…… 后面改成

.\boot\oscdimg -m -o -u2 -udfver102 -lmy-pe-uefi -bootdata:2#p0,e,b%d_full%\boot\etfsboot.com#pEF,e,b%d_full%\efi\microsoft\boot\efisys.bin %d_full% %d_all%\My_PE.ISO

重新运行 自定义修改WinPE光盘.bat 就可以了。

 

===============================================
2012/03/12
感谢patatoo网友,无线网络可以正常使用了

给我留言


无线网可以连了,虽然不是完美解决方案,还有缺陷,但是可以用了。
1.添加缺少的文件。filelist.txt
2.修改注册表(“register.cmd [your winpe mount folder]”)
3.添加wifi.cmd “echowifi.cmd [your winpe mount folder]”
4.打包,启动,运行wifi.cmd
5.可以看到无线了。
http://115.com/file/c2rmmlw2

 

 

 

2013/03/31 新的下载地址  wingwy-pe3.1-v2-fix3-uefi.iso  MD5:8ed7fbd5e94e12b061f12e579bbecc0c

http://pan.baidu.com/share/link?shareid=441897&uk=1342512606

标签: , , , , , ,

231 条评论 发表在“uefi模式启动的64位pe,wingwy-pe3.1-v2-fix3-uefi”上

  1. 霍霍说道:

    这个UEFI的WIN7X64PE如何UD启动或者U盘启动

    • wingwy说道:

      你好,目前似乎只能光盘模式启动。现有软件好像不能写入双引导信息,所以u盘好像不行。

  2. fei说道:

    (对不起,刚才上传的多处重复,重新上传一下):
    你好,Wing大。我访问你的网站有一段时间了。我想关注PE的人群有两类:一类是下载网上已经做好的PE的ISO文件,用于自己的电脑维护工作;另一类是自己做PE。我是属于后者。一般来说,我从不用网上的ISO来维护电脑。网上的PE,说不清楚里面有什么东东,你在运行一个exe文件,就是把自己的电脑完全交给软件的作者了,因此,我从不运行网上下载的工具软件(大的软件公司如微软、Symantec等正式发布的软件除外,而且我只从官网下载。)。我的理想是:基于微软的正版安装光盘,做一个Win7PE,里面不包含任何其它来路不明的文件。我的做法是:①文件部分,我编了一个小程序,把你的PE中的文件清单列出来,从原版Win7中拷贝我的原生PE中没有的文件(不含ux.exe, pecmd等);②注册表:按你写的添加explorer的上下篇,完全做了。③创建了winpeshl.ini,文件,调用WPEinit和explorer。
    现在,我做的PE,能出现Win7桌面、explorer,控制面板的常用功能正常,网络正常连接,IE正常使用(除系统拒绝安装flash插件、IE选项出不来外)。UlraISO、拼音输入法、WinRAR等工具我没有集成进去,而是将安装文件外置在U盘,使用时几秒钟就安装好了(PE中能正确运行安装)。非常感谢你的文章,我想整个网上到处都是一些事实而非的文章,只有你的文章是原创,而且有重要价值!
    现在,我有三个关键技术没有办法,盼望得到你的指导:
    1、explorer搜索栏输入要搜索的文字,explorer不自动搜索。你的PE能自动搜索。怎样才能实现?
    2、PE启动之后再插入U盘或其他USB设备(非启动U盘),explorer打开计算机,不出现U盘盘符。用explorer.exe E:,等十几秒钟,能打开E盘(E盘为U盘),但计算机中还是没有U盘盘符。若启动之前插入U盘,能正确识别。你的PE没有这个问题。怎样在PE启动之后插入U盘,使得我的计算机中能出现U盘盘符?
    3、我的PE启动时,进入桌面非常慢,你的PE很快。我没有使用UX.EXE和pecmd,而是用winpeshl调用。具体做法是:Software\Microsoft\Windows NT\shell下用explorer.exe做壳、winpeshl.ini配置为:
    [LaunchApp]
    AppPath = %SYSTEMDRIVE%\System32\explorer.exe
    [LaunchApps]
    wpeinit
    X:\windows\explorer.exe
    以上第一行如果省略,则进入winpe很快,但不会运行加载驱动的cmd窗口,这样网络不可用。但如果不省略,则出现加载驱动的cmd窗口前后要等很长时间(共计3分钟)。请问什么原因导致这种情况?是我没有用UX.EXE(UX是什么功能?)?还是winpeshl太慢(比pecmd慢?)还是我没有用HEX修改winlogon?

    Wing大,以上三个问题,是在explorer加入PE后,大家一定会遇到的问题,但这些问题的解决办法网上都很难找到,能否请你指导一下我们大家?
    其他的一些问题,是锦上添花的事情,不是必要的。例如:任务栏的Win7风格等。另外,我搞的是32位。

    • wingwy说道:

      你好,不用客气,我也只是pe爱好者,回答你说的这几个问题:
      1 搜索文件的需要的文件

      chsbrkr.dll
      dsquery.dll
      NOISE.CHS
      query.dll
      searchfolder.dll
      structuredquery.dll
      tquery.dll

      还有导入这个注册表信息
      Windows Registry Editor Version 5.00

      [HKEY_LOCAL_MACHINE\pe-sys\ControlSet001\Control\ContentIndex\Language\Chinese_Simplified]
      “Locale”=dword:00000804
      “NoiseFile”=”noise.chs”
      “WBreakerClass”=”{12CE94A0-DEFB-11D2-B31D-00600893A857}”
      “StemmerClass”=”{78fe669a-186e-4108-96e9-77b586c1332f}”
      这个开始我也不知道,好像是黄赐网友给我留言的。

      2 这个可以通过设置SeparateProcess=1来设置,好像在
      Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\下 记不清是default还是system

      3 这个我也不清楚,我原文有说明,你最好设置
      \Microsoft\Windows NT\CurrentVersion\Winlogon下,把”Shell”=”cmd.exe /k start cmd.exe” 改成 “Shell”=”explorer.exe”
      你看看这样会不会快些。
      另外,wpeinit会初始化网络,你不加载就不能用。

      我也是初学者,很多东西都是从别人那里学来的,也欢迎你分享一下你的经验,如果比较长,你可以以文章的形式发布(注册用户可以发文 https://www.wingwy.com/archives/2011_08_933.html )。希望能分享一下你的小程序。

      • fei说道:

        谢谢Wing大指点,前两个问题立马搞掂了。我的文件没有少,导入两项注册表后,立即可用了,O(∩_∩)O~。第三个问题:启动慢的问题,还可以忍受,毕竟不常用PE。现在,我的PE已经满足我的需求了(explorer可用,常用工具可使用时再安装)。
        下面是锦上添花的问题:
        IE启动后(微软主页),跳出安装“swflash.cab”对话框,说“由于无法验证发布者,阻止了该程序的安装”。我想打开IE的选项,设置安全属性,但IE的菜单-选项打不开。不知是否注册表缺东西。怎样消除这个问题?
        另外,WIFI:我按你说的办法,在生成wim之前,修改了注册表和添加了文件,并在system32下生成了wifi.cmd文件。在笔记本用U盘进入PE后,运行wifi.cmd,一切正常,wifi的灯也开始闪烁了。我手工创建了一个AAA的wifi网络连接(设置加密方式和密码),运行:netsh wlan connect name=AAA ssid=TP-LINK,DOS提示:AAA所对应的网络无法连接到无线网络。请问:name=AAA中,名称(AAA)填写什么?由于无法自动搜索热点,需要手工创建一个AAA连接吗?

        • wingwy说道:

          你好这个应该是64位的ie8,需要64位的flash插件,我以前尝试过,但没有解决,你可以试试,不知道现在有现成的没有。或者换成32位的ie也可以。

          wifi我这边没办法验证,也没弄过,补丁是patatoo网友做的,有问题你可以回复他的留言,他应该能收到评论通知邮件。
          https://www.wingwy.com/guestbook/comment-page-17#comment-9426

  3. macbooktest说道:

    macbook下测试了一下,插入此iso制作的u盘完全无法被识别。
    从资料看efi启动只需要u盘为fat16/32分区,有\efi\boot\bootx64.efi即可,不需要特殊格式化。
    \efi\boot\bootx64.efi这个文件在macbook和很多主板上都是固定的,不能识别其他.efi。

    • wingwy说道:

      你好,usb确实不行,前面也有网友提到必须fat分区。iso是双引导信息的,刻盘就可以uefi引导,但目前写入u盘的引导信息应该默认是指向bootmgr,我还不清楚在哪里可以改为默认指向efi,否则只能手动指向bootx64.efi实现uefi启动。

  4. 露透射说道:

    英雄,随着 Windows 8 CP 的发布(六月都出 RC 版了),Win PE 4.0 也有了。网上也出现了 南狮王 的 Windows8 PE(基于 DP 版制作),地址见:http://732397741.qzone.qq.com/#!app=2&pos=1325244122

  5. 关关说道:

    唯一的下载地址115网盘已经失效不能下载了啊,提示视听类文件暂时不支持分享

  6. yukari说道:

    bootx64.efi程序在\efi\microsoft\boot\efisys.bin里面,可以用7zip直接解压,另外efi启动应该是没有winlogo的而是金蜈蚣,你是怎么做到的?

    • wingwy说道:

      你好,什么是金蜈蚣?winlogo只要有对应的字体,mui文件和dll文件就可以了,当然bcdedit里面的配置也要对。

      参见这里,http://bbs.wuyou.com/viewthread.php?tid=187266

      显示简体中文(zh-CN)动态标语:
      0. 在BCD文件里面对应该启动项目(通常是{default})不可把quietboot设定成on。
      1. 在BCD文件里面对应该启动项目(通常是{default})的区域码(locale)要设定为zh-CN。
      2. 在\windows\system32\boot文件夹里面有winload.exe,对应语系子文件夹(zh-CN)里面有winload.exe.mui。(一般不成问题。)
      3. 在\windows\system32文件夹里面有bootres.dll,\windows\system32\zh-CN文件夹里面有bootres.dll.mui。(一些精简版把这文件除去了,故显示不了动态标语)
      4. 在\windows\fonts文件夹里面有msyh.ttf (大于20MB)。(一些精简版把大部分的字体文件都除去了,故显示不了动态标语)
      5. 在启动盘的\boot\fonts文件夹里面有chs_boot.ttf。

  7. sanda说道:

    镜像无法下载了哦亲

  8. 秋忆说道:

    只有wingwy-pe3.1-v2-fix2.iso使用比较正常,后面的版本都无法在VMWare下启动,不敢使用。

    • wingwy说道:

      你好,VMWare下启动到桌面蓝屏吗?fix3版本加的驱动,可能有冲突,我下回不这样搞了。

      • 秋忆说道:

        启动画面过后就蓝屏了,你可以试一下。

        • wingwy说道:

          我拿vm8和我的实体机测试倒是没问题。不过我加太多的驱动确实不好,还是内置的。下回只加网卡驱动就行了

  9. 79728266说道:

    谁的也不用了,就这个了,下,我下,感谢!

    • wingwy说道:

      不客气,多谢支持。这个版本只是加了uefi和新的驱动,如果不用这些功能或是驱动有冲突可以fix2版。https://www.wingwy.com/archives/2011_08_924.html

  10. AbsInf说道:

    在Samsung Slate PC 700T上試了一下 好像無法以UEFI開機 我是用UltraISO PE 9.5.2.2836(裸體版)將”wingwy-pe3.1-v2-fix3-uefi.iso MD5:40e213509e774f67031dd4ea5f131f9b”沒做任何修改直接以USB-HDD+方式寫入USB Flash Drive 請問是否應當用別的方法寫入USB呢? 謝謝

    • wingwy说道:

      UltraISO 9.5.2版本应该是不支持uefi启动的,而且uefi启动需要文件系统为FAT。如果你只是bios方式启动的话可以用我的脚本或者用微软的那个工具写入,或者用u盘工具量产。当然,每种方法都不能保证100%能行。

  11. 「有事燒紙」说道:

    能不能介绍下怎样把WinPcap集成进PE里?没有这个上网拨号器不能运行。

    • wingwy说道:

      绿色软件的话用我的脚本展开wim文件,把你要的软件放进去就可以了。

      • 「有事燒紙」说道:

        不是绿软。也找不到你的脚本在哪下载……

        • wingwy说道:

          不是绿软要提注册表,或者你放安装程序进去每次安装也可以。那个脚本在光盘根目录,wingwy-pe3.1-v2-uefi-base.iso 这个20M的文件里面也有。

          • 「有事燒紙」说道:

            问题在于这个驱动级的东西不能在你这个PE里执行安装

            • wingwy说道:

              这样的话你可以把那个软件里面的文件提取出来,然后用dism /add-driver向展开的wim文件添加驱动。

  12. 秋忆说道:

    支持一下!一直在用,感觉很好。

  13. fujianabc说道:

    这两天下载了win8 32位版,惊奇的发现32位win8居然也支持uefi启动了,不过需要32位efi主板,vmware8可以支持,一般电脑不行。
    另外win8的bcdboot直接支持mbr硬盘上uefi启动了

    • wingwy说道:

      vm8那个efi很有意思,你创建32位系统他的efi就是32位的,反之是64位的。bcdboot功能只有在nt6以上版本才正常吧?不知道他是怎么实现的呢,是uefi–模拟bios–winload.exe?还是什么?

      • fujianabc说道:

        win8 32位uefi启动我在vm8里面试了,没有问题,但虚拟机类型必须选32位系统。这样uefi也是32位的。真实的电脑真的没有听说过有32位uefi的,前两年苹果机有32位efi 1.1的。

        bcdboot是用来给nt 6.x系统生成启动文件和启动菜单的,nt 6.2的bcdboot可以给一个系统同时生成bios和uefi两个平台的启动文件和启动菜单。

    • Sean说道:

      請問下,用windows to go把win8裝在u盤里,能否實現bios和uefi模式的双启动? 我弄來弄去弄不好

      • wingwy说道:

        你好,目前u盘uefi启动我也不太清楚,如果是FAT32格式应该是可以的,但可能需要手动指定efi文件的位置。

  14. hhashoww说道:

    wingwy 说:
    winload.efi的时候是载入windows了,这个path应该在bootmgr的下级项目下面(一个比如guid项,可能是defaut下)。
    我理解是这样的,{fwbootmgr}是1级项目;下面挂载的{bootmgr}是2级项目,这个{bootmgr}可以指定path,比如指向bootmgfw.efi;{bootmgr}下面还可以挂载其他子项(3级项目),比如win7启动项或是wim文件的pe,这些3级项目的path才是winload.efi。

    我的理解和您的說法是一樣的
    原本我是打算和wubi一樣做個安裝在windows分割區內部的系統
    再自己產生一個您所說得3級項目(winload.efi)這樣的檔案去引導系統啟動,例如grub.efi
    但是path設定好之後,也置入與winload.efi同樣的分割區,卻沒辦法啟動
    後來乾脆把winload.efi改個名字而已,也是無法啟動
    所以猜測為windows的安全機制問題在bootmgfw.efi就已經寫死只能讀取winload.efi這個檔名的因素
    因為wubi在新版也都將”Install Inside Windows”的項目移除了

    • wingwy说道:

      我也很奇怪,其实bootmgfw.efi的path也不用指定也可以的,winload.efi估计要验证签名。详细的配置你可以参考微软提供的UEFIGuide
      http://www.microsoft.com/whdc/system/platform/firmware/uefiguide.mspx

      • hhashoww说道:

        之前有看過了,可是裡面沒有提到這部份的細節
        A.未經過bootmgr簽章認證
        B.winload.efi讀取的configure錯誤
        C.winload.efi格式錯誤
        現在只能推論是這三種或是其他的因素了…
        不過尚未找到能驗證這些說法的證據

        • wingwy说道:

          我也只是猜测,不过微软一向都要验证启动文件的。

          另外,我也在尝试和你类似的工作—-我想xp以uefi模式启动起来,目前有两种思路:

          1 uefi启动后加载一个东西来模拟bios(类似mac机器启动xp)。
          2 uefi启动到winload.efi的时候通过修改winload.efi来启动xp(类似wim方式启动xp)。

          其中第2种可能和你做的相关,如果你成功了,烦请告知,多谢~~

          • hhashoww说道:

            難得碰上有人可以一起討論還未有人做出的技術
            有新進展或想法的話一定會分享的
            萬分感謝 !!

            • fujianabc说道:

              grub.efi和bootmgfw.efi是平级的,所以两者都必须挂在{fwbootmgr}下面,grub.efi不能够挂在{bootmgr}下面

          • fujianabc说道:

            1. 现在uefi主板启动xp就是模拟了bios来启动的,只是pc的uefi主板默认给你看到的就是模拟的bios,而苹果默认启动的不是模拟bios。

            2、winload.efi本身是64位程序,所以无法加载32位nt内核。64位的xp/2003倒是值得试一下,以前成功用bootmgr+32位vista的winload.exe启动过32位xp的。有空我会试一下,用64位vista的winload.efi启动64位server 2003,而且64位server/xp本来就支持GPT,估计很有希望。

            • wingwy说道:

              我的思路类似mac下启动xp,但是uefi不支持mac的变色龙程序。不知道还有其他的模拟工具没有,估计目前也没有,因为实体机是没有必要这样的(以后主板厂家只支持uefi的时候如果32位xp还有很多用户的话,估计会有类似的工具)。

              本来32位的xp就是将就一些守旧的用户,用64位xp就没必要了,不如直接win7或win8。当然,从技术上来讲还是很有意思的,期待你的好消息~

              另外,如果winload.efi成功引导64位xp后,再进一步的参照64位xp修改ntldr,ntdetect,以及那几个ntoskrnl***实现引导32位xp,那就非常有意思了。

              • fujianabc说道:

                刚刚试了,bootmgfw.efi+winload.efi加载2003 sp2 x64,加载完内核再加载基本驱动时就死机,无法启动。vista sp2和win7 sp1的bootmgfw.efi+winload.efi都尝试了,都不行。看来没戏。。。
                微软是在vista sp1以后才支持uefi启动的,vista sp0 x64都不能支持uefi启动,nt 5看来就更不用谈了

    • fujianabc说道:

      grub.efi不能用bootmgfw.efi来加载,必须直接用uefi来加载。也就是说grub.efi和bootmgfw.efi是平级的,两者都要挂在{fwbootmgr}下面才行。grub.efi不能在{bootmgr}下面

      • hhashoww说道:

        請問您有嘗試過嗎 ??
        因為我試著複製一份bootngfw.efi,都掛載在fwbootmgr項目下,會卡在準備進入BIOS的畫面
        並沒有想像中出現選擇的介面

        • hhashoww说道:

          A.複製一份bootmgr,並將fedora光盤內的bootx64.efi取代bootmgfw.efi
          B.同上,將原本的bootmgfw.efi複製一下並改名,並將載入的bootloader數量更改以識別

          會卡在準備進入BIOS的介面,按下F8之後會出現選單
          不過這個選單除了boot manager以外連所有的開機選單都會出現
          按下之後還是會跳回執行原本的bootmgfw.efi

    • fujianabc说道:

      grub.efi和bootmgfw.efi是平级的,都要挂在{fwbootmgr}下面,grub.efi不能在{bootmgr}下面

    • hhashoww说道:

      更正

      winload.efi更名後還是可以使用,只是不能透過他去引導我的系統
      因為他會去讀取systemroot參數下的\system32\config\system
      或許XP的部份可以直接使用winload.efi引導 ??

  15. fujianabc说道:

    给你解答几个疑惑:

    1、efisys.bin实际上是一个软盘镜像,可用winimage打开,里面就一个bootx64.efi文件。其实uefi启动nt 6.x类似于win98那种软盘模拟的方式,efisys.bin就是那个软盘镜像。

    2、为什么要采用十年前的老的软盘模拟方式启动呢?原因是efi shell默认只支持FAT文件系统(12/16/32)上执行.efi文件,不支持直接从iso/udf上执行.efi文件(类似于dos只认FAT)。软盘模拟方式等于把一张光盘分成了FAT12和UDF两个分区,把第一个启动文件bootx64.efi放到这个FAT12分区中(efi shell显示为fs0:),使得uefi可以执行UDF分区中的bootx64.efi。

    3、bootx64.efi的功能:这个bootx64.efi功能也很简单,就是让efi能够从同一张光盘的UDF分区中找到bootmgfw.efi并执行之。cdboot.efi:就是启动时提示那个按任意键从光盘启动的

    4、bootmgfw.efi相当于bios平台上那个bootmgr,而bootmgr.efi不是必需的(不知道这个文件有什么用)。{fwbootmgr} 就是指bootmgfw.efi的那个项,相当于bios启动bcd文件中第一项{bootmgr}

    • wingwy说道:

      多谢你的解答~~uefi我也不是很清楚,不过有的问题实际操作起来似乎不是这样的啊,可以确定下面几点:
      1 bootmgfw.efi和cdboot.efi不需要也可以启动。
      2 bootx64.efi可以替换为bootmgfw.efi效果一样。
      3 光盘无bootmgr.efi不能启动。
      4 微软那个文档显示{bootmgr}和固件的guid应该并列挂在{fwbootmgr}下面,而{bootmgr}的path对应的才是\EFI\Microsoft\Boot\bootmgfw.efi

      硬盘启动应该和光盘启动有点区别,不过这个光盘的启动也太奇怪了。

      • fujianabc说道:

        又仔细研究了一下几个.efi文件到底是怎么回事:

        1、efisys.bin中的bootx64.efi和cdboot.efi作用相同,就是找到光盘根目录中的bootmgr.efi并执行,而且会有按任意键从光盘启动的提示
        2、cdboot_noprompt.efi和cdboot.efi功能类似,但不会出现按任意键从光盘启动的提示,与之对应efisys_noprompt.bin也是一个软盘镜像,里面的bootx64.efi功能和cdboot_noprompt.efi相同

        3、bootmgr.efi不是一个efi可执行文件,需要配合cdboot.efi或者cdboot_noprompt.efi或者bootx64.efi才能执行。其作用类似于bios中ntldr和bootmgr的没有文件头的osloader.exe和bootmgr.exe
        4、bootmgfw.efi是直接可执行的文件,只需要单独一个文件即可启动入bootmgr菜单,而不需要cdboot.efi、cdboot_noprompt.efi、bootx64.efi、bootmgr.efi中的任意一个文件。相当于bios中的bootmgr

        最后测试了一下,用bootmgfw.efi替换efisys.bin中的bootx64.efi(文件名还是bootx64.efi),可以直接启动,udf的光盘中一个.efi都不用,可以全删

        • wingwy说道:

          搞不懂微软弄这么多efi文件干什么,另外光盘即使加入mui文件,设置locale也无法显示中文,不知道怎么回事,这个时候应该只是和这几个文件有关联才对。

          • fujianabc说道:

            微软可能为了适应各种启动方式才搞了一大堆.efi,包括网启。其实一般只需要bootmgfw.efi一个efi文件即可。

            至于{fwbootmgr}项,我总算搞明白了,那个是efi启动菜单项,就是vmware启动时按ESC,然后选第二个”boot manager”后出来的那个菜单。真实机这个菜单的内容不是存在硬盘上的,而是存在主板上某个地方的(可能是某块靠主板电池维持的芯片上)。我自己笔记本上装过uefi win7,之后哪怕把硬盘拔光,这个菜单的内容还是存在的,要到UEFI设置中去删除,vmware可以在ESC菜单的第三项boot options里面去改这个菜单。

            没想到bcdedit居然能直接改写主板上的设置,以后UEFI病毒可以大大发威了~~~~~

            • wingwy说道:

              噢,多谢,这就对了。我就是怀疑这个{fwbootmgr}是刷在主板上的,因为它下面挂着{bootmgr}和硬盘,网卡的guid。bcdedit应该只能写入符合自己规范的配置到主板的rom,不能写入文件或是一段恶意的代码,估计uefi病毒还是比较困难的(这些厂商应该会有安全考虑)。

              • fujianabc说道:

                用bcdedit更改主板上的nvram然后加载一个其他.efi文件一点难度都没有,bcdedit /copy一下{bootmgr}项,然后把里面的bootmgfw.efi改成自己想要的.efi文件即可,当然这个.efi文件必须要在FAT分区中。

                • wingwy说道:

                  对我的意思也是这样,只能写入符合bcdedit语法的命令行,比如修改path指向恶意的.efi文件什么的。但是不能直接把.efi文件写入rom。这样的话其实危害和系统的病毒差不多。

                  • fujianabc说道:

                    危害应该和以前的引导扇区型病毒差不多,病毒可以先于操作系统加载

                • hhashoww说道:

                  “然后把里面的bootmgfw.efi改成自己想要的.efi文件即可”
                  請問該句中自己想要的efi文件該如何生成??

                  bootmgfw.efi這邊指的應該是boot manager

                  以開機流程來說
                  UEFI boot manager -> windows boot manager(bootmgfw.efi) -> windows boot loader(winload.efi) -> kernel

                  我想要實現多重開機,但是還是一樣透過windows boot manager管理
                  所以必須自己產生一個類似winload.efi的bootloader透過bcdedit.exe寫入BCD中,但是一直失敗出現contain error的message

                  不知是否可以在此請教 謝謝

                  • fujianabc说道:

                    不是的,可以通过主板上的启动菜单来管理各个.efi文件。bootmgfw.efi只是其中的一项。另外也可以自己写简单的脚本startup.nsh,这个相当于dos中的autoexec.bat

                    • hhashoww说道:

                      不好意思,我有點混淆了

                      {bootmgr}只需要一個用來管理{bootloader}

                      而這些啟動菜單的內容是透過bcdedit加入的對嗎 ?

                      path的內容則是指向自己想要的efi文件 (例如預設的 winload.efi)

                      我的問題是卡在不知 winload.efi 如何生成

                      path導向自己產生的efi file甚至是直接拿fedora光盤中的bootx64.efi也無法讓 boot manager辨識

                      一直沒辦法開進自己的系統中

                      而您說的”startup.nsh”或是”autoexec.bat”這些則是進入系統中才會開始運行的程序不是嗎??

                    • wingwy说道:

                      贴个例子,,{fwbootmgr}挂{bootmgr}以及下面的win7启动项


                      固件启动管理器
                      ---------------------
                      标识符 {fwbootmgr}
                      displayorder{bootmgr}
                      {de9035ee-58a1-11e1-a292-bb04258cfd59}
                      {de9035ef-58a1-11e1-a292-bb04258cfd59}

                      Windows 启动管理器
                      --------------------
                      标识符 {bootmgr}
                      device partition=\Device\HarddiskVolume1
                      path\EFI\Microsoft\Boot\bootmgfw.efi

                      固件应用程序(101fffff)
                      -------------------------------
                      标识符 {de9035ee-58a1-11e1-a292-bb04258cfd59}
                      description EFI VMware Virtual SCSI Hard Drive (0.0)

                      固件应用程序(101fffff)
                      -------------------------------
                      标识符 {de9035ef-58a1-11e1-a292-bb04258cfd59}
                      description EFI VMware Virtual IDE CDROM Drive (IDE 1:0)

                      Windows 启动加载器
                      -------------------
                      标识符 {current}
                      device partition=C:
                      path \Windows\system32\winload.efi

                  • wingwy说道:

                    winload.efi的时候是载入windows了,这个path应该在bootmgr的下级项目下面(一个比如guid项,可能是defaut下)。
                    我理解是这样的,{fwbootmgr}是1级项目;下面挂载的{bootmgr}是2级项目,这个{bootmgr}可以指定path,比如指向bootmgfw.efi;{bootmgr}下面还可以挂载其他子项(3级项目),比如win7启动项或是wim文件的pe,这些3级项目的path才是winload.efi。
                    btw:wordpress只支持10层评论盖楼,你可以重新评论盖楼。

  16. fujianabc说道:

    …..

  17. aronf说道:

    自定义修改最后生成iso时提示错误:
    error with -u2 can not use …………(记不住了,反正就是几个命令),最后无法生成iso?怎么回事?

    • wingwy说道:

      可以装在量产的usb-cdrom上,如果脚本不行,可以手动,比如全部和盘文件在D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO 下面,运行 oscdimg.exe -bD:\PC\pe\wingwy-pe3.1-v2\fix3\ISO\efi\microsoft\boot\efisys.bin -u2 -udfver102 D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO D:\PC\pe\wingwy-pe3.1-v2-fix3-uefi.iso

      • aronf说道:

        我直接将你的iso量产到usb——cdrom上,启动时说是找不到任何启动文件呢??

        • wingwy说道:

          sorry,忘了写bios的启动了。我当时两个虚拟机,一个uefi的win7,一个bios的xp。然后iso在2个系统动能启动,我以为行了,结果我前天测试wim封装的xp时把xp也改成uefi的了,我晚上发个脚本上来就行了。

          • fujianabc说道:

            xp uefi启动就别想了,第一nt 5.x不支持uefi启动,第二,只有64位windows支持uefi启动

            • wingwy说道:

              呵呵,我也就尝试一下。mac自己的efi可以同时搞定2种,但新的uefi只支持64位了,也许先uefi启动后加入个东西来模拟bios方式可以启动?

              • fujianabc说道:

                mac从来没有同时搞定过两种,早期的MAC是32位efi 1.1,mac os内核就是32位的;后来机型升级为64位的efi 1.x,mac os内核也改为64位的了。

                vmware 8.0到是有32位的uefi 2.3,把虚拟机操作系统类型改为32位windows,就能进32位uefi shell了。不过没有一点用,现在的.efi程序都是64位的,32位的efi下面一个都不能执行。

                • wingwy说道:

                  我的意思是那种在mac机上装xp的,据说就是自己在efi启动后模拟了bios,不知道按照这个思路能不能用在uefi的机器上。现在看来似乎没有必要,你也提到现在的厂家都是兼容bios的,以后取消了就麻烦了,虽然我也已经很久不用xp了,不过周围还是有很多人用,而且他们觉得xp够了,没有换的必要。

                  • fujianabc说道:

                    其实一样的,uefi主板兼容bios用的原理和mac兼容xP一样。都是在EFI上面有一个bios兼容层(CSM)。只不过PC机默认进bios兼容层,苹果默认进入EFI。

                    据说下一代ivy bridge平台的品牌机和笔记本会默认社成UEFI启动了。

                    • wingwy说道:

                      我是在想是否能在uefi上面模拟bios,尝试了mac的变色龙,但是不行,不知道有其他工具没有。

              • fujianabc说道:

                现在UEFI的pc机都是64位的,然后上面有一个bios兼容层,模拟16位的实模式,用于非UEFI方式启动系统。据说过两年后UEFI方式普及了,广大厂商就会去掉bios兼容层。

        • wingwy说道:

          2.14日前下载的把iso解压后,再把”自定义修改WinPE光盘.bat”中的

          echo 正在生成光盘ISO文件…… 后面改成

          .\boot\oscdimg -m -o -u2 -udfver102 -lmy-pe-uefi -bootdata:2#p0,e,b%d_full%\boot\etfsboot.com#pEF,e,b%d_full%\efi\microsoft\boot\efisys.bin %d_full% %d_all%\My_PE.ISO

    • wingwy说道:

      真不好意思,我昨天测试好了结果忘了把脚本更新了。你看那个bat文件这句话
      .\boot\oscdimg -n -b%d_full%\efi\microsoft\boot\efisys.bin -u2 -udfver102 %d_full% %d_all%\My_PE.ISO
      去掉-n 就可以了

  18. aronf说道:

    想请教此PE能不能安装在量产的usb-cdrom上面???

  19. 黄赐说道:

    oscdimg.exe -b \efi\microsoft\boot\efisys.bin -u2 -udfver102

    不明白 我刚接触

    • wingwy说道:

      比如全部和盘文件在D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO 下面,运行 oscdimg.exe -bD:\PC\pe\wingwy-pe3.1-v2\fix3\ISO\efi\microsoft\boot\efisys.bin -u2 -udfver102 D:\PC\pe\wingwy-pe3.1-v2\fix3\ISO D:\PC\pe\wingwy-pe3.1-v2-fix3-uefi.iso
      就可以了

wingwy 留下回复(本站有评论邮件通知功能)