无忧启动论坛

标题: UEFI启动视频详解:启动分析+N项操作实例,赶紧学习,不要落伍啦,该给自己充电啦... [打印本页]

作者: 2011hiboy    时间: 2013-4-9 13:18
标题: UEFI启动视频详解:启动分析+N项操作实例,赶紧学习,不要落伍啦,该给自己充电啦...
本帖最后由 2011hiboy 于 2024-10-19 22:41 编辑

=============================================================
2024:部分内容年代久远,已删

给大家留一份BIOS/UEFI启动的中英文资料供新手学习验证。
https://cloud.189.cn/t/VZnEVvNvEnMb (访问码:ta9d)

=============================================================

※※※※最给力的视频解说※※※※


==============================
感谢那些回帖增加人气的朋友,已出视频详解.....
==============================================================


这是本帖全部内容:
Y:  视频解说
A~F:1

G~I:2

Y:※※※※最给力的视频解说※※※※
【视频】手动/自动修复UEFI引导视频教程+【完美版】挂载ESP分区的批处理
A:什么是UEFI,其含义   
B:UEFI模块包含的文件逐个分析及其引导流程+ESP分区的本质   
C:判断自己的机器是X64(64 bit)构架还是IA32(32 bit)的构架(更专业的说法)+ 关于UEFI启动与系统匹配(系统选择)的概述
D:给传统BIOS下的合盘添加UEFI模块支持+制作BIOS / UEFI(IA32+X64)三支持启动启ISO超详细解说&文件提供!!
E:
给Win8 x86;Win8 x64 的PE添加UEFI启动支持

F:给VMware虚拟机开启UEFI,当没有物理硬件支持的情况下,不错的选择哦。
G:UEFI+GPT系统安装方法+PE开机自动给ESP分区分配盘符
H:MBR/GPT磁盘转换
I:EFI SHELL 说明及下载(0413新增光盘版EFI Shell




==================================================================
Y:※※※※最给力的视频解说※※※※
【视频】手动/自动修复UEFI引导视频教程+【完美版】挂载ESP分区的批处理
A:
什么是UEFI,其含义 点击阅读


B:

UEFI模块包含的文件逐个分析及其引导流程

     ★ -----------------对于UEFI启动本身来说,这些文件是必需的
      ----------------- 对于传统BIOS引导光盘来说,这些文件是制作时必需的
      
----------------- 对于传统BIOS引导光盘来说,这些文件是引导时必需的
         -----------------对于UEFI引导光盘来说,这些文件是制作时必需的
         -----------------对于UEFI引导光盘来说,这些文件是引导时必需的
UEFI_MSPE-------------在磁盘介质上,通过UEFI启动 Windows PE 系统,这些文件是必需的
UEFI_MSHD
-------------在磁盘介质上,通过UEFI启动 Windows 硬盘系统,这些文件是必需的


==================================================
UEFI 全中文版支持模块 UEFI_Support.PMF D部分下载
==================================================
UEFI_Support.PMF 用Diskgenius 4.20及以上恢复到磁盘时,这些文件意义和用途:

(本说明用法:你需要查询某个文件的用处,直接找那个文件;或者你需要做什么,从上方认识标示,从本说明标示入手)

根目录
├─boot --------------------------------启动文件目录   UEFI_MSPE +
│  │  BCD --------------------------------传统BIOS启动所需BCD菜单文件  
│  │  boot.sdi --------------------------------UEFI/BIOS启动都需要    UEFI_MSPE + +
│  ├─fonts --------------------------------传统BIOS启动字体文件目录(不影响启动)  
│  │      chs_boot.ttf
│  │      wgl4_boot.ttf
│  └─zh-cn --------------------------------传统BIOS启动中文显示用的目录(不影响启动)
│          bootmgr.exe.mui
├─efi--------------------------------UEFI启动目录   +
UEFI_MSPE + UEFI_MSHD  +
│  ├─zh-cn --------------------------------UEFI启动中文显示用的目录(不影响启动)
│  │      bootia32.efi.mui
│  │      bootx64.efi.mui
│  ├─boot--------------------------------UEFI启动文件目录   + UEFI_MSPE + UEFI_MSHD +
│  │      bootia32.efi--------------------------------IA32构架的启动文件
   + UEFI_MSPE + UEFI_MSHD +
│  │      bootx64.efi--------------------------------X64构架的启动文件   + UEFI_MSPE + UEFI_MSHD +
│  └─microsoft-------------------------------UEFI启动目录   UEFI_MSPE + UEFI_MSHD +
│           ├─fonts --------------------------------UEFI启动中文字体文件目录(不影响启动)  
│           │      chs_boot.ttf
│           │      wgl4_boot.ttf
│           └─boot---------------------------------UEFI启动菜单目录
   UEFI_MSPE + UEFI_MSHD +
│                   BCD-------------------------------UEFI启动菜单   UEFI_MSPE + UEFI_MSHD +

│─MBR.bin ------------------------制作传统BIOS下的启动光盘上时的引导记录,负责引导Bootmgr,适合x64+x86   
│─bootmgr -----------------------传统BIOS下的启动光盘的引导文件,适合x64+x86  

│─UEFI_ALL.BIN-----------------制作UEFi启动光盘上时的引导记录(已处理),可以同时支持引导IA32+X64构架,直接读取\efi\microsoft\boot\bcd  
│─winpe_x86.wim --------------------------------适合IA32构架的winPE,目前仅有Win8 x86  UEFI_MSPE ++
└─winpe_x64.wim --------------------------------适合X64构架的winPE,目前有Win7/8 x64   UEFI_MSPE+ +




然后来说UEFI启动 计算机默认引导的简要流程(引导windows为例):

---->>电脑开机(假设已经设置了UEFI为打开)

---->>启动模块根据启动项顺序依次查找所有
(FAT分区):\efi\boot\bootia32.efi(IA32构架的启动文件)
或者
(FAT分区):\efi\boot\bootx64.efi(X64构架的启动文件)

---->>加载\efi\microsoft\BCD 启动菜单文件

---->>按照BCD里面的内容进一步启动,整个过程和传统的BIOS相比,没有引导记录的参与,不错不错

提示:
以上的bootia32.efi,bootx64.efi 都是一个efi应用,不同的是使用在IA32或者X64构架(详见C部分)下。你可以选择任意一个efi应用文件,然后改名替代上面的文件。

这里加载\efi\microsoft\BCD 启动菜单文件是因为当前的efi文件的内容是微软写的,efi内容下一步就指向\efi\microsoft\BCD

我们当然可以创建一个abc.efi,然后改名,bootx64.efi 或者bootia32.efi,让UEFI开机的时候加载,
这时候你可以让你自己写的abc.efi指向

某个目录的某个CFG文件这都随你愿意,从而实现调用......


为了证实这一点,我下载了EFI SHELL然后将Shell.efi改名为bootx64.efi,再在X64构架的物理计算机和虚拟机上,进行启动...
得出的结论是正确的。这是我做好的EFI SHELL文件请到二楼I模块看说明及下载使用.。

关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解..
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=303679&fromuid=396698


ESP分区的本质

ESP:
EFI System Partition
它是当我们首次为GPT磁盘分区时会提示建立的,对于UEFI启动来说,ESP分区不是必需的,但是一个FAT分区确是必须的


ESP的本质是一个FAT分区,只不过分区程序在给GPT磁盘分区的时候提醒你建立ESP,并且你同意了,那么程序将建立一个指定大小的FAT分区,
并且命名为"ESP",当然ESP分区是有一些参数的比如 分区ID 0xEF, GUID是{C12A7328-F81F-11D2-BA4B-00A0C93EC93B } 固定 ,
但是这些参数并不影响启动,更加类似于一个人的“身份证”然而我们UEFI启动可以不需要“身份证”所以从这里我们可以看出:
ESP分区可以用任意位置的任意大小的任意FAT分区代替。


有网友会问,如果存在多个磁盘,每个磁盘上存在多个FAT分区,怎么算:
这么算:多个磁盘根据设定的磁盘启动顺序依次启动查找FAT分区
             每个磁盘多个FAT分区,那么谁在前,谁有正确的引导资料就引导谁

注:以上结论本人已经测试成功,非凭空臆想

ESP分区不可见:它是一个特殊的FAT分区,当然能够被任何FAT分区代替,它的特殊性在于,
每次关机重启后,ESP分区的状态
                        总会变成不可见,
这不是设置隐藏属性,因为ESP没有任何隐藏属性
,更加类似于开机过程中系统将ESP的盘符删除了,
                        让人不能在计算机直接访问 (G部分有解决方案)



注释:

比如我的电脑是X64构架的(物理决定),我的UEFI启动文件只能是(FAT分区):\efi\boot\bootx64.efi,

而如果没有bootx64.efi文件存在的话,UEFI就启动失败,即使存在bootia32.efi,也没用因为那是IA32构架的电脑使用的

X64构架的电脑使用不了,即使改名,也会因为下一步读取BCD进一步启动因为和winload.efi不匹配而失败。

同理IA32构架的电脑只能使用bootia32.efi。

其实换句话说,X64构架的电脑在UEFI模式下应该是无法使用Win8 x86的系统和PE的,IA32在UEFI模式下也同样无法使用Win7/8 x64的系统和PE

只有在BIOS模式下X64.IA32才可以,任意使用Win7/8 x86/x64.


联系起以后大内存以及X64的普及,那么以后的电脑基本都是X64的物理构架,IA32的构架将会很少,

也只有早期的电脑存在IA32构架了吧,至少我的RC510是2011年买的是X64构架.....

==================================================
UEFI 全中文版支持模块 UEFI_Support.PMF D部分下载
==================================================



C:

判断自己的机器是X64构架还是IA32的构架以及一些名词的解释

之前是通过启动成功与否来判断的,比较表层,现在为大家做一个深层次的阐述。

关于X86 X64 32bit 64bit:

X64  X86 的解释:这两个名词都是针对 CPU (中央处理器)来说的,它们表示CPU的框架结构;
                             X64是使用X64指令集的CPU,X86是使用X86指令集的CPU;当X86的发展遇到瓶颈的时候
                             就有了X86-64指令集,Intel CPU 里面叫EM64T,AMD CPU里面叫AMD64;它是基于X86指令集的,是X86指令集的一种扩展,
                             可以支持64bit的系统,也可以支持32bit的系统。

64bit 32bit 的解释:bit表示位,64bit就是64位,32bit表示32位;用来表示操作系统;
                               64bit的操作系统最大支持内存 128GB,32bit的操作系统最大支持内存 4GB

纯X86的CPU只能运行32bit的系统,纯64位的CPU只能运行64bit的操作系统,


关于CPU架构:

IA-32:(X86-32):纯X86的CPU只能运行的32位系统,且只能运行32位
  X64 :  (X86-64):该CPU构架有X86指令集,也有其扩展集X86-64,故可以运行32/64bit 的系统和软件,也是目前大多数电脑,其CPU构架依然是X86构架。
IA-64:  这个就是纯64位的CPU,只能运行64bit的操作系统,对32位软件一点不兼容,该类型计算机非常少见。
              注意:是不兼容,事实上通过指令集的互相转换可以运行,但那不叫兼容,但是像我目前市面上的CPU既可以运行64bit也可以运行32bit,
                        且不需要进行指令的转换,原生支持的才叫兼容,大家搞清楚这点。

下面上一幅我的计算机指令集的截图(AIDA64+CPUZ):






那么可以通过上面的知识和这两幅截图我很清楚的判断出,我的机器CPU指令集是EM64T,属于Intel,是 X64 构架的计算机。
你的CPU指令集里面只有有 X86 ;或者 没有 EM64T 也没有AMD64 ,那么你的计算机就是 IA32构架的
只要你的CPU指令集里面有 X86-64 或者 EM64T 或者 AMD64 ,那么你的计算机就是 X64 构架的


这里也有一些网络资料大家可以阅读,来验证我说的对错。
http://www.liuyongkang.com/archives/487.html
http://blog.sina.com.cn/s/blog_a9303fd901016t2r.html
http://www.dxy.cn/bbs/thread/7692532#7692532
http://www.33lc.com/article/3518.html
http://wenku.baidu.com/view/c2c6c8fbf90f76c661371a1e.html


关于UEFI启动与系统匹配(系统选择)的概述

在CPU指令集支持的情况下(普遍支持),系统能否支持UEFI启动,主要看系统和UEFI的匹配情况,
就是说在CPU指令集支持的情况下,32bit的UEFI可以运行支持uefi启动的x86系统;64bit的UEFI可以运行支持uefi启动的x64系统
在CPU指令集不支持的情况下,莫谈UEFI启动。比如你在配备赛扬处理器的PC上实验UEFI 64bit的启动,那么不好意思,不行,处理器不支持...

CPU指令集的不同也可以看做不同构架的CPU,如IA32,X64,IA64
事实上:市面上的PC,CPU支持与UEFI是关联完毕的,就是出现UEFI启动的那CPU肯定支持,CPU不支持的那肯定没有UEFI启动。


D:
给传统BIOS下的合盘添加UEFI模块支持

该UEFI支持模块论坛上有的,我的是自己提取自Win8安装盘的,大家也可以自行根据我第二部分的文件说明提取,该支持模块的文件格式是PMF格式,我为了方便使用做成这样

BIOS/UEFI 全中文版支持模块 UEFI_Support.PMF

使用说明:
打开Diskgenius 4.3专业版 或者更高版本,选择分区,右击,从文件恢复分区--->选择PMF文件--->点击开始。恢复完毕后,分区格式啥的都已经设置完毕了,直接就可以支持UEFI启动了。

注:
模板里面的WIM文件是空的
,大家自行备齐吧(注意需要PE支持UEFI启动)楼主我没有着手DIY趁手的Win8PE。我暂时用的别人现成的。

            当你准备齐全所有的WIM文件后,你的U盘就可以进入UEFI PE启动了,此时你可以使用Diskgenius 4.3专业版打包整个分区到PMF以后备用,或者随便你。

制作BIOS / UEFI (IA32+X64)三支持启动ISO超详细解说&文件提供

目前随着UEFI的普及,论坛上很多PE的作者纷纷发布BIOS/UEFI双启动ISO,我也有个极致PE,刚刚发布终结版,可惜了是Win7 X86的无法和UEFI搭边...

废话少说,现在开始:
要制作 BIOS/UEFI双启动ISO 你首先必须了解怎样制作ISO,普遍的我们使用微软的一款叫OSCDimg.exe的命令行工具,该工具非系统自带需要另外下载
OSCDimg.exe
的版本有很多,当然老版本的是无法制作BIOS/UEFI双启动ISO的我们要使用2.55版本的。直接到D模块尾部下载。



说完制作工具,再说制作要点,制作BIOS/UEFI双启动ISO需要两部分的引导记录(重点):
MBR引导记录:MBR.bin
UEFI引导记录:UEFI_ALL.bin (X64+IA32构架通用)



再仔细注意下面的OSCDIMG的批处理命令,这是制作BIOS/UEFI双启动ISO另外至关重要的一点,我一测试完毕(重点):
@echo off


::要压制的目录,相当于光盘的根目录,表示当前目录下的Root_Dir目录
set intdir=.\Root_Dir

::设置光盘的引导文件MBR,表示当前目录下的MBR.bin文件
set BbootFile=.\MBR.bin

::设置光盘的引导文件UEFI,IA32+X64构架通用引导文件UEFI_ALL.bin
set UbootFile=.\UEFI_x64.bin

::输出的文件名,表示输出到当前目录下的BootISO.iso文件
set output=.\BootISO.iso

::设置光盘的卷标,表示光盘的卷标是:Bootable
set jb=Bootable

::根据上面已设置的参数,制作
OSCDimg -m -o -u2 -udfver102 -l%jb% -bootdata:2#p00,e,b%BbootFile%#pEF,e,b%UbootFile% %intdir% %output%


注意:
1、执行命令部分红色加粗的u2适用制作PE的双启ISO,如果你要制作GRLDR合盘的双启模板请将u2改成u1制作兼容ISO,正常制作PE双启ISO推荐u2参数
2、
绿色部分可以任意改,保证正确即可,蓝色,部分可以删除,黑色加粗部分必须原封不动,至少在你不了解含义的情况下不能动.


E:
给Win8 x86;Win8 x64 的PE添加UEFI启动支持

因为UEFI启动的是Winload.efi那么需要补齐相关文件即可,我下载论坛上的一个全功能的 Win8 X64,没有补齐之前,

可以加载,加载完毕就会出现错误。补齐后就没有问题了,完美UEFI启动。

Win8 x64/x86 UEFI支持文件 点击下载

F:
给VMware虚拟机开启UEFI,当没有物理硬件支持的情况下,不错的选择哦。
新版本虚拟机,可以直接在虚拟机配置页修改,当前内容删除

注:能够支持UEFI启动的Windows有:
X86:仅Windows 8(或者以后新出的Windows)
X64:Windows Vista、Windows 7、 Windows 8 (或者以后新出的Windows10、11...)







作者: 2011hiboy    时间: 2013-4-9 13:20
本帖最后由 2011hiboy 于 2013-4-17 20:51 编辑

G:
UEFI+GPT系统安装方法

假设我买了一台机器,没有预装系统,但是BIOS默认开启UEFI,磁盘格式是GPT,没有光盘,普通的UD维护盘无法进入系统但里面有Windows 8镜像......

现在我开始我的UEFI+GPT系统安装之旅.....

按照我上面的给你的UD加装UEFI启动模块,(WIM文件自己已经备齐),启动U盘里面的PE,进入到Win8PE...

注:UEFI+GPT环境中,Windows 8的光盘镜像有要求,X64构架的必需使用Windows 8 x64,一般来说新电脑都是x64的.....

使用虚拟光驱加载Windows 8光盘镜像 或者 提取光盘:\Sources\install.wim文件备用。


首先让我们处理一块新的硬盘(GPT),还没有分区哦



现在我们开始分区,选择银灰色长条,右击,新建分区



再跳出的对话框里,按照我的设置勾选....


接下来会理解跳出这个....




好了,我们好了,这是我的分区布局






现在,我们打开 WinNtsetup 设置界面如图:

在UEFI+GPT中,ESP(FAT盘是引导盘),这点请注意!






接下来跟着图走











最后在重启前我们看看引导是否就绪.....

在UEFI+GPT中,ESP(FAT盘是引导盘),这点请注意




PE开机自动为ESP分区分配盘符

完美版ESP分区显示批处理 (硬盘系统需要管理员权限运行,PE系统无所谓)

说明:该完美版,在0411下午发布的版本的基础上,又花了2小时完善,之前发布的版本只支持1块GPT磁盘的ESP分区显示,
          完美版支持理论上支持任意数量的GPT磁盘的ESP分区显示,智能识别MBR与GPT,不会对MBR分区表的磁盘有任何影响。

测试图:我使用虚拟机测试了4块GPT磁盘,虚拟两块,U盘模拟两块....结果成功显示全部ESP分区
   
   



下载地址:点击下载

关于ESP分区:它是一个特殊的FAT分区,当然能够被任何FAT分区代替,在B部分ESP分区的本质我就说过,它的特殊性在于,每次关机
                     重启后,ESP分区的状态总会变成不可见,这不是设置隐藏属性,因为ESP没有任何隐藏属性,更加类似于开机过程中系统
                     将ESP的盘符删除了,让人不能在计算机直接访问.

注:PECMD SHOW -1:-1 可以显示所有隐藏分区,但是Win8 x86有效,Win8 x64不灵,DISKPART都有效。



H:




MBR/GPT磁盘转换

工具有很多,基本上分区软件都可以,奥梅分区助手,Diskgenius,Acronis......

注:转换会丢失硬盘数据,请谨慎操作和做好必要的备份

本例:Diskgenius

















另外相反的:GPT转换成MBR






注:转换会丢失硬盘数据,请谨慎操作和做好必要的备份

I:

EFI SHELL 说明及下载

如今新买的电脑大多数都会有EFI SHELL的吧,就是类似于一个“DOS窗口”可以自己收动选择需要启动的efi文件,如下图:



然而有些机器的BIOS里面只有一个UEFI Boot Support 选项让我们选,并没有EFI SHELL,我们就不能体验手动选择efi启动文件了吗?

NO!

EFI特性决定了它不需要像BIOS程序一样老老实实地呆在Flash芯片中,它可以存在于FAT分区中,然后由开启UEFI的机器加载.....

现在我做好了,直接将PMF文件恢复到U盘即可使用....至于怎么恢复,那么请看一楼D部分的PMF文件使用说明

PMF格式:EFI SHELL 点击下载   

0413
新增
光盘版EFI SHELL  点击下载 (UEFI启动有效,已测试

注:该 EFI SHELL 适合 X64构架的计算机使用,IA32构架的机器使用无效....


作者: peter1123    时间: 2013-4-9 15:29
谢谢分享
不知道无忧论坛能否开辟一个grub2的板块
好有更多人的了解grub2
作者: leonxis    时间: 2013-4-9 17:09
好像很复杂的样子。虽不明但觉厉!感谢楼主出来做科普哇
再请教楼主一个非常小白的问题。据说EFI是从文件启动系统的,那为什么直接在FAT32格式上的U盘放上efi shell文件后,启动项目里面没有出现U盘呢?
作为一个支持efi启动的介质,还需要向设备里写入写什么,类似bootice中更改启动类型一样?

还有硬盘中EFI分区没法分配盘符,那用bcdboot /S 命令怎么选中盘符生成启动文件到EFI分区?还是放到当前分区就好了?

新手很好奇EFI启动,所以问了这么多问题,希望楼主不要见怪~ (。・`ω′・)
作者: fujianabc    时间: 2013-4-9 17:20
leonxis 发表于 2013-4-9 17:09
好像很复杂的样子。虽不明但觉厉!感谢楼主出来做科普哇
再请教楼主一个非常小白的问题。据说EFI是从文件启 ...

bcdboot不用加/s参数,自动能往没有盘符的ESP分区中写入启动文件的
作者: leonxis    时间: 2013-4-9 17:24
本帖最后由 leonxis 于 2013-4-9 17:27 编辑
fujianabc 发表于 2013-4-9 17:20
bcdboot不用加/s参数,自动能往没有盘符的ESP分区中写入启动文件的


原来如此。
那请教一下,为什么一个普通的FAT32U盘,放入shell.efi等文件后,在boot manager里面却看不到这个启动项目呢?

还有,莫非硬盘上的启动文件,必须放入ESP分区才能被识别?还是随便一个FAt32格式的分区,放入bootmgr.EFI和bootx64.efi就可以了?如果是可以,那怎么win8生成的启动文件没有放入esp分区,启动就失败了,放进去后就成功了呢?

多谢你的解答~
作者: fujianabc    时间: 2013-4-9 17:28
楼主漏了很重要一步,就是EFI的固件启动菜单,也就是主板启动时按F12出来的启动菜单,这个菜单是直接存储在主板上的,bcdedit中{FWbootmgr}也能列出。
这个菜单是让用户能够选择bootx64.efi以外的文件来启动,这个菜单一般可以在主板设置中添加和更改。

另外,所谓的bootx64.efi是通用名,并不代表某个特定文件:对于windows来说,其实就是bootmgfw.efi改名而来,对于grub2,则是grub.efi改名而来。
作者: 2011hiboy    时间: 2013-4-9 17:29
fujianabc 发表于 2013-4-9 17:28
楼主漏了很重要一步,就是EFI的固件启动菜单,也就是主板启动时按F12出来的启动菜单,这个菜单是直接存储在 ...

这个其实不复杂,把B模块看懂就好了。

efi.shell文件没有被加载啊,你好好看看我写的B部分。你就会明白的。

然而,我在UEFI+GPT使用WinNtsetup安装系统,过程中并没有使用到BCDBOOT,因为作者的PE没有带BCDBOOT,引导问题,可以手动引导的。我正在做图文教程。。
作者: fujianabc    时间: 2013-4-9 17:30
leonxis 发表于 2013-4-9 17:24
原来如此。
那请教一下,为什么一个普通的FAT32U盘,放入shell.efi等文件后,在boot manager里面却看不 ...


随便一个FAT分区就行,FAT12/16/32都行,楼主漏了很重要一步,具体你看我8楼回复的内容,你可以自己在主板设置中添加需要启动的.efi文件
作者: 2011hiboy    时间: 2013-4-9 17:32
leonxis 发表于 2013-4-9 17:24
原来如此。
那请教一下,为什么一个普通的FAT32U盘,放入shell.efi等文件后,在boot manager里面却看不 ...

ESP分区不是必须的,他的核心只不过是一个FAT分区,只不过因为和GPT搞在一起,所以加了个ESP。
我认为完全可以使用任意FAT来代替。就像我给UD合盘上UEFI支持一样。
作者: fujianabc    时间: 2013-4-9 17:34
2011hiboy 发表于 2013-4-9 17:29
这个其实不复杂,把B模块看懂就好了。

efi.shell文件没有被加载啊,你好好看看我写的B部分。你就会明白 ...

EFI+GPT启动菜单用bcdboot最简单了,用其它工具手动完成感觉都有些多此一举,还需要挂载盘符
作者: 2011hiboy    时间: 2013-4-9 17:36
fujianabc 发表于 2013-4-9 17:28
楼主漏了很重要一步,就是EFI的固件启动菜单,也就是主板启动时按F12出来的启动菜单,这个菜单是直接存储在 ...

Right,我上面B部分补充的,bootx64.efi只不过是一个特定位置的特定名称,它的内容只要你会,你可以任意该,我们启动Windows 8只不过这个bootx64.efi是微软写的,指向BCD罢了。

还有大元帅说的EFI固件启动菜单,我注意到了,里面fs0,blk0啥的,我看着费劲,稍后我会添加进去。
但我个人更偏向于bootx64.efi这个通用名方式,不要我按按键,直接给我加载。。。喜欢EFI Shell的可以改名替代。呵呵
作者: fujianabc    时间: 2013-4-9 17:39
2011hiboy 发表于 2013-4-9 17:36
Right,我上面B部分补充的,bootx64.efi只不过是一个特定位置的特定名称,它的内容只要你会,你可以任意该 ...


另外,还有EFI shell里面的startup.nsh也可以写启动菜单,作用类似于dos的autoexec.bat。不过这个脚本能找到的教程太少,暂时也不用去理会了
作者: leonxis    时间: 2013-4-9 17:49
2011hiboy 发表于 2013-4-9 17:36
Right,我上面B部分补充的,bootx64.efi只不过是一个特定位置的特定名称,它的内容只要你会,你可以任意该 ...


刚才试验了一下,boot manager确实是没有显示bootmgr.EFI之外的启动,所以把shell.efi改名后替换bootx64.efi就可以启动了。正如您讲的一样,不用按键默认引导这个文件。

联想的机器并没有VMware里面efi启动管理那么多内容,可以选择哪个文件启动。就只显示了U盘这么一个设备,进去的话还只进入bootx64.efi。应该算是联想的限制?

还有给UD分区添加EFI启动在您哪个帖子?这个帖子里面讲的有点晕乎。如果能上个实例就最好不过了,稍微讲一下就好。
作者: 2011hiboy    时间: 2013-4-9 17:50
fujianabc 发表于 2013-4-9 17:39
另外,还有EFI shell里面的startup.nsh也可以写启动菜单,作用类似于dos的autoexec.bat。不过这个脚本能 ...


我回头再收集EFI SHELL给大家,startup.nsh从EFI shell启动的时候有的,但不知道相当于autoexec.bat,回头我补充下。
我不知道别人能否看懂我B部分的。我这两天到处谷歌,各种关键字,看的都是英文,我自己理解了写成中文希望大家能够认真看下去。呵呵用心总会明白的。
作者: 2011hiboy    时间: 2013-4-9 17:54
leonxis 发表于 2013-4-9 17:49
刚才试验了一下,boot manager确实是没有显示bootmgr.EFI之外的启动,所以把shell.efi改名后替换bootx6 ...

认真看完B部分,UEFI差不多就会了,只是少点实践。

我的机器三星的也没有选择启动,这不要紧,懂了就没问题。这不算限制,早些时候的电脑没考虑周到吧

给UD分区添加UEFI是D部分,看完你也就会了。
作者: 糊涂    时间: 2013-4-9 18:22
本帖最后由 糊涂 于 2013-4-9 18:24 编辑
2011hiboy 发表于 2013-4-9 17:29
我在UEFI+GPT使用WinNtsetup安装系统,过程中并没有使用到BCDBOOT,因为作者的PE没有带BCDBOOT,引导问题,可以手动引导的。我正在做图文教程。。

原装英文版本WINNTSETUP虽然没有集成,但打开它时会提示自动下载,下载包中已经包括了BCDBOOT等几个重要工具



现在问题是:WINNT助手首次打开时,并没有执行挂载隐藏分区的动作,所以就算集成了BCDBOOT也无法将EFI文件导入ESP分区,导致修复命令在非ESP盘完成

假如首次运行时挂载了隐藏分区(包括ESP分区),那此问题迎刃而解!

作者: freesoft00    时间: 2013-4-9 18:27
科普帖子,支持一下。
作者: 2011hiboy    时间: 2013-4-9 18:35
糊涂 发表于 2013-4-9 18:22
原装英文版本WINNTSETUP虽然没有集成,但打开它时会提示自动下载,下载包中已经包括了BCDBOOT等几个重要工 ...

Diskgenius功能比你想象的多,你用它把ESP格式化一遍,自动分配了。或许显得麻烦些许,但对我来说Diskgenius很上手,不怕,还有在PE里面,可以设置在PE启动的时候自动给所有隐藏分区分配盘符。可以从这方面入手。
作者: 糊涂    时间: 2013-4-9 18:38
2011hiboy 发表于 2013-4-9 18:35
Diskgenius功能比你想象的多,你用它把ESP格式化一遍,自动分配了。或许显得麻烦些许,但对我来说Diskgen ...


如果再多加个第三方工具辅助,那还不如像 fujianabc老师说的那样,直接运行bcdboot命令

其实WINNT工具也不错,只是缺少挂载盘符部分!不然不管是MBR还是GPT分区已经通吃了
作者: 糊涂    时间: 2013-4-9 18:40
本帖最后由 糊涂 于 2013-4-9 19:24 编辑
2011hiboy 发表于 2013-4-9 18:35
Diskgenius功能比你想象的多,你用它把ESP格式化一遍,自动分配了。或许显得麻烦些许,但对我来说Diskgen ...

如果能解决进PE后自动给所有分区挂载盘符,这个方法也不错!

UD加载UEFI文件这部分感觉像我以前说过的,随便一个U盘,在U盘末端分出一定容量(大于某PE体积)的分区,然后将支持UEFI启动的PE.iso解压后导入这个分区的效果差不多。。。



作者: my9823    时间: 2013-4-9 18:52
leonxis 发表于 2013-4-9 17:09
好像很复杂的样子。虽不明但觉厉!感谢楼主出来做科普哇
再请教楼主一个非常小白的问题。据说EFI是从文件启 ...

放到efi文件夹里!
至于bcdboot是不是根据分区ID来判断esp分区的吧?
作者: leonxis    时间: 2013-4-9 19:16
my9823 发表于 2013-4-9 18:52
放到efi文件夹里!
至于bcdboot是不是根据分区ID来判断esp分区的吧?

放进去确实可以!
bcdboot说可以自动放进去,测试了一下确实是,而且不管ESP是第几个分区,有没有挂载盘符。bcdboot还是很聪明的
作者: 2011hiboy    时间: 2013-4-9 19:55
糊涂 发表于 2013-4-9 18:40
如果能解决进PE后自动给所有分区挂载盘符,这个方法也不错!

UD加载UEFI文件这部分感觉像我以前说过的 ...

Right,目前给UD增加UEFI开辟尾部用。

PE开机自动显示隐藏分区命令 Show 查看下PECMD帮助即可,然后添加到pecmd.ini即可开机取消所有隐藏分区。
作者: 糊涂    时间: 2013-4-9 20:14
2011hiboy 发表于 2013-4-9 19:55
Right,目前给UD增加UEFI开辟尾部用。

PE开机自动显示隐藏分区命令 Show 查看下PECMD帮助即可,然后添加 ...

我是小白中的小白
辛苦老师帮忙给编辑一下显示隐藏分区(最主要是ESP分区)的命令
这个问题已经愁了我好长时间了

PECMD.rar (990 Bytes, 下载次数: 55)

EXEC Winpeshl
     INIT U
     TEAM FILE %public%\desktop\desktop.ini|FILE %desktop%\desktop.ini|FILE X:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup|FILE X:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
     SHEL %SystemRoot%\explorer.exe
     EXEC !=X:\Program Files\freeime\registry.exe /s
     EXEC %Windir%\System32\CTFMON.EXE
     EXEC !%SystemRoot%\system32\FixUSB.exe U
     EXEC !X:\Program Files\Imagine\Imagine64.EXE /assocext /regcontextmenu
     FORX *.ocx,Regocx,0,CALL $%Regocx%
     FORX msxml*.dll,Regdll,0,CALL $%Regdll%
     DEVI %SystemRoot%\inf\usb.inf
     DEVI %SystemRoot%\inf\usbport.inf
     EXEC !%SystemRoot%\system32\fbinst.exe --onlylink "PETOOLS/*" %"TEMP"%
     EXEC !%SystemRoot%\system32\fbinst.exe --onlylink "UDTOOLS/*" %"TEMP"%
     PINT %Windir%\System32\calc.exe,TaskBand
     PINT %Windir%\system32\CMD.EXE,TaskBand
     PINT X:\Program Files\TOOLS\WINSNAP.EXE,TaskBand
     PINT %Windir%\System32\notepad.exe,TaskBand
     PINT X:\Program Files\WimTool\WimTool.exe,TaskBand
     PINT %WinDir%\Regedit.EXE,TaskBand
     PINT X:\Program Files\Registry Workshop\RegWorkshop.exe,TaskBand
     LINK %Desktop%\宽带连接,X:\ProgramData\Microsoft\Network\Connections\Pbk\ADSL.pbk
     LINK %Desktop%\PE网络设置,X:\Program Files\PENetwork\PENetwork.exe
     EXEC @REG ADD HKCU\Software\WimTool /v AutoMountPath /d B: /F
     EXEC @REG DELETE HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bmp\ShellNew /F
     EXEC =!diskpart /s %Windir%\system32\vdisk.txt
     FORX !\petools\win8pe64.ini,MyIni,1,LOAD %MyIni%
     
     EXEC @!=netcfg.exe -v -winpe
     EXEC @!=netcfg.exe -c s -i MS_Server
     EXEC @!=netcfg.exe -e -c p -i MS_NDISWAN
     EXEC @!=netcfg.exe -e -c p -i MS_PPPOE
     EXEC @!=netcfg.exe -e -c p -i MS_NDISUIO
     EXEC @!=netcfg.exe -c s -i ms_nativewifip
     EXEC @!=netcfg.exe -e -c s -i MS_RASMAN
     EXEC @!=netcfg -e -c p -i ms_nwipx
     SERV Browser
     SERV RasMan
     SERV dot3svc
     SERV Wlansvc
     SERV audiosrv
     SERV DeviceAssociationService
     SERV Schedule
     REGI HKLM\SYSTEM\Setup\SystemSetupInProgress=#0

作者: 糊涂    时间: 2013-4-9 20:17
加载所有硬盘的隐藏分区:  SHOW F:-1

不会用,不知道哪儿有示例
作者: 2011hiboy    时间: 2013-4-9 20:41
本帖最后由 2011hiboy 于 2013-4-9 20:43 编辑
糊涂 发表于 2013-4-9 20:17
加载所有硬盘的隐藏分区:  SHOW F:-1

不会用,不知道哪儿有示例


显示所有磁盘上的所有隐藏分区:SHOW -1:-1

PECMD.zip

1.03 KB, 下载次数: 133, 下载积分: 无忧币 -2

已添加完毕


作者: 糊涂    时间: 2013-4-9 20:59
2011hiboy 发表于 2013-4-9 20:41
显示所有磁盘上的所有隐藏分区:SHOW -1:-1

为什么显示不出来呢?郁闷!

老师再想想办法,看如果进PE显示出GPT所有分区


作者: 2011hiboy    时间: 2013-4-9 21:05
糊涂 发表于 2013-4-9 20:59
为什么显示不出来呢?郁闷!

老师再想想办法,看如果进PE显示出GPT所有分区

郁闷,我亲测可以的啊?
那你这样,打开命令提示符输入:pecmd show -1:-1
看下效果
作者: 糊涂    时间: 2013-4-9 21:05
本帖最后由 糊涂 于 2013-4-9 21:07 编辑
2011hiboy 发表于 2013-4-9 21:05
郁闷,我亲测可以的啊?
那你这样,打开命令提示符输入:pecmd show -1:-1
看下效果

是不是不支持GPT分区呢?




作者: 2011hiboy    时间: 2013-4-9 21:28
本帖最后由 2011hiboy 于 2013-4-9 21:41 编辑

就是在GPT分区下显示了ESP分区....

看我的使用前,使用后:

使用前


使用后

作者: 糊涂    时间: 2013-4-9 22:01
2011hiboy 发表于 2013-4-9 21:28
就是在GPT分区下显示了ESP分区....

看我的使用前,使用后:

怪了,不是版本问题吧


作者: uboot    时间: 2013-4-9 22:12
好帖子。。。。
作者: 2011hiboy    时间: 2013-4-9 22:17
糊涂 发表于 2013-4-9 22:01
怪了,不是版本问题吧

我现在用的是PECMD 2012的程序,那个修改的PECMD.ini你有没有打包测试??

不行的话你把那条命令 SHOW -1:-1,往pecmd.ini的上面提提,让它尽早加载。
在命令提示符下,运行后你重启explorer看看效果。

也或许是pe组件的区别,按理说不会是pecmd的问题。
作者: 糊涂    时间: 2013-4-9 22:22
提到过shel以前,但效果一样,我用的PECMD貌似是11年5月1日版,难道要更新一下试试?
作者: 2011ibird    时间: 2013-4-9 22:23
进来学习,准备搞个win7和linux双启动的uefi+gpt,现在论坛充充电了
作者: 2011hiboy    时间: 2013-4-9 22:27
本帖最后由 2011hiboy 于 2013-4-9 22:47 编辑
糊涂 发表于 2013-4-9 22:22
提到过shel以前,但效果一样,我用的PECMD貌似是11年5月1日版,难道要更新一下试试?


我觉得和这个没有关系...我稍后试试pecmd的效果看看。


最新结果:

我之前在x86的win8PE下面实验GPT磁盘ESP分区的,没有问题。

刚刚我又到x64的win8PE下面试试,发现情况和你一样

或许pecmd对x64支持不好?x64本身缺陷??不知道了...

作者: 2013hkwwcl    时间: 2013-4-10 00:41
感谢分享,比较关注EFI SHELL的自行定制,如果菜鸟也能添加一些功能就好了
作者: 2011hiboy    时间: 2013-4-10 00:43
2013hkwwcl 发表于 2013-4-10 00:41
感谢分享,比较关注EFI SHELL的自行定制,如果菜鸟也能添加一些功能就好了

这玩意没有普及,现在还只是趋势,现阶段先使用吧,以后或许会有这方面的发展....
作者: passer    时间: 2013-4-10 09:14
非常不错的知识贴,感谢楼主
作者: secowu    时间: 2013-4-10 10:10
这个写的好认真的,真有用的。了
作者: sand_hzb    时间: 2013-4-10 11:09
楼主写得真好,解决了我很多困惑,非常感谢!
作者: cycyc    时间: 2013-4-10 11:58
先回后看!
作者: 2011hiboy    时间: 2013-4-10 13:03
cycyc 发表于 2013-4-10 11:58
先回后看!

感谢你的支持,很高兴..
作者: 讯极天度    时间: 2013-4-10 13:27
2011hiboy 发表于 2013-4-9 13:20
G:
假设我买了一台机器,没有预装系统,但是BIOS默认开启UEFI,磁盘格式是GPT,没有光盘,普通的UD维护盘 ...

U盘:
│  bootmgr  --------------------------------传统BIOS下的引导文件 (非UEFI必需)
│  bootmgr_x64.efi --------------------------------UEFi引导用,但用于64位的光盘引导(非UEFI必需)
│  bootmgr_x86.efi --------------------------------UEFi引导用,但用于64位的光盘引导(非UEFI必需)【这个是64位光盘引导而不是32位光盘引导?】
│  winpe_x86.WIM --------------------------------适合IA32构架的winPE,目前仅有Win8 x86(UEFI必需)
│  winpe_x64.wim --------------------------------适合X64构架的winPE,目前有Win7/8 x64(UEFI必需)
作者: 2011hiboy    时间: 2013-4-10 13:37
讯极天度 发表于 2013-4-10 13:27
U盘:
│  bootmgr  --------------------------------传统BIOS下的引导文件 (非UEFI必需)
│  bootm ...

哈,不好意思,光复制上面一句省时间,忘记修改了,已改正...谢谢提醒
作者: 2012jierong312    时间: 2013-4-10 14:43
大婶的帖子一定要先回帖再学习!!!
作者: piaomusic    时间: 2013-4-10 14:48
好贴,学习了。谢谢  
作者: 2013a634563144    时间: 2013-4-10 15:36
初学者看起来好复杂哦!学习了再说
作者: 2011hiboy    时间: 2013-4-10 15:38
clonecd 发表于 2013-4-10 15:28
PECMD2012在03PE能显ESP分区,在WIN7PE/WIN8PE不能显。

PECMD 2012我测试在win8 x86下可以显示ESP分区,在win8 x64下没有成功。2003我没有测试。还是diskpart搞定了esp分区显示。。。
作者: 2011hiboy    时间: 2013-4-10 15:41
2013a634563144 发表于 2013-4-10 15:36
初学者看起来好复杂哦!学习了再说

你可以先选择一部分看,看懂了继续下一部分,但是总的老说B部分才是核心,看懂了那里,那么你就了解UEFI了。
对于大部分人来说,能有份中文详细说明UEFI的文章不错了,我前些日子也不懂uefi什么的,后来慢慢的了解了,现在在脑海里对UEFI像个图一样,很清晰,然后我就把我脑海里的那个“图”发表了,希望更多的人了解UEFI。
作者: 2012zhd    时间: 2013-4-10 16:02
制作部分还是有点看不明白,能举个实例能帮助更多的菜鸟,比如我。
作者: piaomusic    时间: 2013-4-10 16:03
楼主帖子提到了WIM格式系统的安装方法。请问GHO格式的系统要怎么修复ESP分区的引导?
作者: 2011hiboy    时间: 2013-4-10 16:15
2012zhd 发表于 2013-4-10 16:02
制作部分还是有点看不明白,能举个实例能帮助更多的菜鸟,比如我。

你说给UD合盘增加UEFI支持吗?按着做就可以,看人气,如果有太多人不动的话我做一个视屏教程也无所谓...

准备:
UEFI_Support.pmf;diskgenius 4.20;一个已有UD启动的合盘
过程:用diskgenius 4.20在UD分区尾部开辟一个小分区(任意软件都行,达到目的即可),
然后将UEFI_Support.pmf恢复到那个分区就行了。就这么简单.
作者: jasonwang    时间: 2013-4-10 16:26
做为教程,A部分不应该交给百度。个人建议。
作者: 2012zhd    时间: 2013-4-10 17:12
本帖最后由 2012zhd 于 2013-4-10 17:17 编辑
2011hiboy 发表于 2013-4-10 16:15
你说给UD合盘增加UEFI支持吗?按着做就可以,看人气,如果有太多人不动的话我做一个视屏教程也无所谓...
...


我以前都是先量产uefi.iso然后ud,看到您的方法感觉很好。
给ud合盘再划分一个分区,然后将UEFI_Support.pmf恢复到那个分区就行了,是直接拖入吗还是怎么操作。我ud合盘中的所有pe都是32位不支持uefi启动,想在划分的分区中再放一个支持uefi启动64位wim,该怎么办。岁数大了,别笑话。
作者: 2011hiboy    时间: 2013-4-10 17:40
本帖最后由 2011hiboy 于 2013-4-10 17:42 编辑
2012zhd 发表于 2013-4-10 17:12
我以前都是先量产uefi.iso然后ud,看到您的方法感觉很好。
给ud合盘再划分一个分区,然后将UEFI_Suppo ...


PMF使用:diskgenius 4.20,选择目标分区--->右击,从镜像文件还原--->选择PMF镜像。还原完毕就能支持UEFI了。

然后说,PE多少位的和UEFI支持没有什么关系,目前UEFI只支持 WIN7 x64,WIN8 X86/X64 三种类型的PE。而且你使用的PE也必须要支持UEFI才行,你去PE启动区找个把。

作者: 2011epe    时间: 2013-4-10 18:44
不错,引领大家学习efi
作者: fujianabc    时间: 2013-4-10 19:36
2011hiboy 发表于 2013-4-10 17:40
PMF使用:diskgenius 4.20,选择目标分区--->右击,从镜像文件还原--->选择PMF镜像。还原完毕就能支持U ...

指出一点错误,一楼的可以修改一下。vista x64 sp1开始就支持uefi启动了
作者: stormboy    时间: 2013-4-10 21:17
感谢分享  楼主搞的挺棒!
作者: 2010qaqz111    时间: 2013-4-11 05:00
LZ给力了,话说最近都在埋头搞别的事,都没注意到开了个 UEFI 版,之前在 G4D 区问了一些 UEFI 的问题,也没多少人关注,现在开了个专版是好事。

几个问题:
1.ESP分区不一定要在磁盘首部吧,看截图在磁盘尾部也是可以的,这个对磁盘的整体容量有限制吗?x64寻址应该不会有,问题是ia32架构?而且 FAT 本身就不是为 x64 环境设计的,放在超大硬盘尾部会不会出问题?比如 2T 硬盘甚至以后更大硬盘的尾部分个 100M 出来做 ESP 这种情况?

2.如果磁盘存在多个符合ESP文件目录特征的FAT分区应该是启动找到的第一个ESP分区上的 efi 引导文件?

3.UEFI 启动找 ESP分区中的 /efi/boot/bootXXX.efi 这个路径以及上面提到的启动第一个ESP分区这些策略应该都是在主板的 flash 芯片内代码中的吧?以后不知道能不能直接定制 flash 内的程序,让 uefi 可以不从分区文件引导,直接读磁盘数据,这样就能做一些隐藏了。
作者: xxcjx    时间: 2013-4-11 09:04
学习,值得学习。
作者: 2011longtianyu    时间: 2013-4-11 09:18
感谢分享,学习新的知识。
作者: 糊涂    时间: 2013-4-11 09:32
2011hiboy 发表于 2013-4-9 13:20
G:
假设我买了一台机器,没有预装系统,但是BIOS默认开启UEFI,磁盘格式是GPT,没有光盘,普通的UD维护盘 ...

SELECT DISK=0    // 选择磁盘0  
SELECT PARTITION=1 // 选择磁盘0的1号分区
ASSIGN LETTER=P:/ / 分配盘符P:
EXIT // 退出


希望老师追加一个环境判断语句

如果为GPT分区时搜索或指定ESP(也可能为其他自定义名称)挂载

但如果不是GPT分区,是MBR分区时不挂载

从这个语句上看出,如果磁盘使用的是MRB也会挂C盘为P:

这样有点“画蛇添足”的味道了

元方怎么看?
作者: lihuanqing    时间: 2013-4-11 10:39
感谢楼主的辛勤劳动
作者: 2011hiboy    时间: 2013-4-11 10:55
本帖最后由 2011hiboy 于 2013-4-11 11:11 编辑
糊涂 发表于 2013-4-11 09:32
SELECT DISK=0    // 选择磁盘0  
SELECT PARTITION=1 // 选择磁盘0的1号分区
ASSIGN LETTER=P:/ / 分 ...


这个只是个核心的命令,没有环境判断,如果mbr格式磁盘的确会有bug。

我待会完善下好了。
完善后可能只需要一个bat文件,但是需要更多的组合命令...
作者: 2011hiboy    时间: 2013-4-11 11:09
本帖最后由 2011hiboy 于 2013-4-11 11:31 编辑
2010qaqz111 发表于 2013-4-11 05:00
LZ给力了,话说最近都在埋头搞别的事,都没注意到开了个 UEFI 版,之前在 G4D 区问了一些 UEFI 的问题,也没 ...


问的深刻!
1、ESP分区:在GPT磁盘首次分区时自动划分的首部FAT分区。其他一切FAT分区情况都不叫ESP,可以叫普通分区。既然在GPT格式下,那不管分在哪里都可以寻址找的,
     不管IA32和X64,都可以找得到。

2、依次读取FAT内的指定文件吧,[已验证]。
     在GPT磁盘乱序开辟3个FAT分区,在第一个FAT放置EFI SHELL,第二个放入UEFI PE启动菜单,第三个放置引导win8的uefi文件
     果然直接引导EFI SHELL,如果删除第一个分区FAT或者删除其内资料,那么依次引导UEFI PE。。。。
3、不是查找ESP分区,而是FAT分区,而一般情况下ESP是FAT格式,故表现为查找ESP分区。如果ESP分区和其他FAT同在那么因为ESP在前也是引导ESP分区,将其资料移到
     任意FAT分区内,那么将引导该FAT分区而非ESP。至于定制flash程序的事不好说了。

作者: 糊涂    时间: 2013-4-11 11:25
2011hiboy 发表于 2013-4-11 10:55
这个只是个核心的命令,没有环境判断,如果mbr格式磁盘的确会有bug。

我待会完善下好了。

好的,完善好后记着通知我!我可是楼主的忠实粉丝呵呵
作者: thtf    时间: 2013-4-11 13:13
这个必须得顶啊,一直想补充一下UEFI的知识,可是资料太少了,楼主给我不少新的内容,谢谢,谢谢!
作者: fujianabc    时间: 2013-4-11 15:23
2010qaqz111 发表于 2013-4-11 05:00
LZ给力了,话说最近都在埋头搞别的事,都没注意到开了个 UEFI 版,之前在 G4D 区问了一些 UEFI 的问题,也没 ...

1、GPT分区时一般会默认自动创建ESP分区,但如果你强制手动删除ESP分区的话,在尾部创建ESP分区也是可以的。但进几年,最好不要让ESP分区出现在2T以外的区域,虽然uefi启动本身完全支持这种样子分区,但难保主板或者系统存在bug,让2T以上的ESP分区启动出现问题

3、UEFI启动本身就是为了抛弃bios启动那种方式而采用从文件启动的,你要直接从磁盘某些扇区读取数据启动,这是在开历史的倒车。另一方面,GPT分区规定了,GPT硬盘不能存在不属于任何分区的隐藏区域(除了硬盘开始用于GPT分区表的区域),所以要启动的文件必须存在于某个分区中
作者: 2011hiboy    时间: 2013-4-11 15:42
糊涂 发表于 2013-4-11 11:25
好的,完善好后记着通知我!我可是楼主的忠实粉丝呵呵

批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的
作者: 2010fangbaiyu    时间: 2013-4-11 15:44
学习了 很NXX呀
作者: zs102    时间: 2013-4-11 15:50
特来充电,谢谢!
作者: 糊涂    时间: 2013-4-11 15:50
2011hiboy 发表于 2013-4-11 15:42
批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的 ...

感谢老师第一时间通知!我下载测试一下
作者: caocaofff    时间: 2013-4-11 16:42
潜水中。。。
作者: 糊涂    时间: 2013-4-11 17:12
本帖最后由 糊涂 于 2013-4-11 17:18 编辑
2011hiboy 发表于 2013-4-11 15:42
批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的 ...

辛苦老师一步步的改进修正!
我个人加了个VBS调用BAT文件,
这样进桌面的时候在后台自动操作,
没有明显的窗口提示信息!

VBS内容如下

Set shell = Wscript.createobject("wscript.shell")
a = shell.run ("%Windir%\System32\esp.bat",0)



ESP智能挂载.rar (15.93 KB, 下载次数: 71)

感谢楼主老师分享

作者: 2011hiboy    时间: 2013-4-11 17:21
糊涂 发表于 2013-4-11 17:12  辛苦老师一步步的改进修正!  我个人加了个VBS调用BAT文件,  这样进桌面的时候在后台自动操作,

直接pecmd隐藏调用批处理即可,无需vbs
作者: 糊涂    时间: 2013-4-11 17:27
2011hiboy 发表于 2013-4-11 17:21
直接pecmd隐藏调用批处理即可,无需vbs

直接PECMD隐藏?应该怎么写呢?
应该是可以。。。求教老师
作者: 2011hiboy    时间: 2013-4-11 18:29
本帖最后由 2011hiboy 于 2013-4-11 18:41 编辑

写到pecmd.ini ,注意esp.bat的路径,!是表示隐藏执行…

EXEC !esp.bat
作者: Meizu    时间: 2013-4-11 19:28
其实我想问问的是UEFI、EFI、Bios这三者的区别?通俗点分析下,最近才接触这个UEFI...
作者: yunzhang    时间: 2013-4-11 19:39
这个得好好学习,不然就成电脑盲了。
作者: 糊涂    时间: 2013-4-11 19:59
2011hiboy 发表于 2013-4-11 18:29
写到pecmd.ini ,注意esp.bat的路径,!是表示隐藏执行…

EXEC !esp.bat

已经完成!
作者: 2011hiboy    时间: 2013-4-11 20:02
糊涂 发表于 2013-4-11 19:59
已经完成!

ESP.bat你实际测试没有问题吧,不会把mbr c:给改了吧。
现在开启pe就能看见esp分区,安装系统没问题的说。
作者: 糊涂    时间: 2013-4-11 20:18
2011hiboy 发表于 2013-4-11 20:02
ESP.bat你实际测试没有问题吧,不会把mbr c:给改了吧。
现在开启pe就能看见esp分区,安装系统没问题的说 ...

实机与虚拟机都测试了,这回可以称之为“智能挂载”了!

一个操作解决诸多问题,连WINNT助手的问题也给解决了,本来想给它重新打包的

现在看来没这个必要了
作者: 心运动    时间: 2013-4-11 20:45
学习了,从大师这儿学到不少知识,向大师致敬!
作者: 2013hkwwcl    时间: 2013-4-11 22:31
本帖最后由 2013hkwwcl 于 2013-4-11 22:42 编辑
2011hiboy 发表于 2013-4-11 20:02
ESP.bat你实际测试没有问题吧,不会把mbr c:给改了吧。
现在开启pe就能看见esp分区,安装系统没问题的说 ...


看了一下批处理,感觉没有考虑到两块gpt硬盘的情况,那样就会有两个*号,导致硬盘选择失败吧
PS:用U盘测试了一下,确实会失败,不过一般人都是一块gpt,应该没啥问题,感谢提供批处理!!
作者: 2011hiboy    时间: 2013-4-11 23:00
本帖最后由 2011hiboy 于 2013-4-11 23:02 编辑
2013hkwwcl 发表于 2013-4-11 22:31
看了一下批处理,感觉没有考虑到两块gpt硬盘的情况,那样就会有两个*号,导致硬盘选择失败吧
PS:用U盘 ...


我知道,写的时候我就注意到了,就参照一个GPT磁盘写的,两个的话考虑到2 个GPT 磁盘的情况很少,添加成2个或更多也可以,需要多写循环结构,暂时就这样吧。以后再升级命令。
作者: 2013hkwwcl    时间: 2013-4-11 23:42
2011hiboy 发表于 2013-4-11 23:00
我知道,写的时候我就注意到了,就参照一个GPT磁盘写的,两个的话考虑到2 个GPT 磁盘的情况很少,添加成 ...

是否可以使用list vol命令,然后token 2,3,如果3不为空,就选择该卷并分配盘符,这样就不管是不是gpt,凡是隐藏的全部分配。具体怎么写就不知道了,批处理最多只会看看。。。
作者: 2011hiboy    时间: 2013-4-12 02:55
2013hkwwcl 发表于 2013-4-11 23:42
是否可以使用list vol命令,然后token 2,3,如果3不为空,就选择该卷并分配盘符,这样就不管是不是gpt, ...

我已经做好了完美版,理论上支持N个GPT磁盘的ESP分区挂载。其实ESP分区不算隐藏分区,它没有隐藏的属性,只是没有盘符访问,和隐藏不一样。

你说的不可行,list volume 可以看到很多分区,但是分配盘符必需先制定该分区在的磁盘,再制定该分区,再分配盘符
作者: fujianabc    时间: 2013-4-12 03:26
楼主有兴趣可以做一下UEFI+MBR启动windows的教程,或者是mbr硬盘上win7/win8单系统bios/gpt双模式启动。

因为对于目前大多数人来说,只要不用2TB以上容量的硬盘,GPT分区表并不是必须的,而且用了GPT的硬盘就没办法用bios模式启动windows和其他老系统了。
作者: 2011hiboy    时间: 2013-4-12 04:00
本帖最后由 2011hiboy 于 2013-4-12 04:06 编辑
fujianabc 发表于 2013-4-12 03:26
楼主有兴趣可以做一下UEFI+MBR启动windows的教程,或者是mbr硬盘上win7/win8单系统bios/gpt双模式启动。

...


还是算了,这个教程做起来太费事.懒得动了,再过一天也忙了,没时间了

在我看硬盘不足2048 GB的统统用mbr好了,gpt本来就是因mbr寻址限制产生的,既然mbr够用就继续用.

UEFI+MBR还有点搞头,现在新买的的笔记本硬盘远没有达到2TB,但是uefi是个新玩意,所以搞这个还是不错的,.

那什么gpt就算了,等硬盘容量够大了,直接就uefi+gpt.
作者: 2012铭铭江湖    时间: 2013-4-12 08:51
前来顶一下,很不错的楼主,强大的PE,强大的系统,加油
作者: myok    时间: 2013-4-12 10:29
值得一读。谢谢楼主分享。
作者: 2013b6d605    时间: 2013-4-12 10:39
进来 学习学习 多谢楼主
作者: 2012zhd    时间: 2013-4-12 12:03
糊涂 发表于 2013-4-9 13:24
通过本次充电,我DIY的WIN8PE64位又有不少更新

最大亮点就是可以智能判断运行环境,如果是GPT分区,

请放出下载地址,下来学习应用。
作者: 2013hkwwcl    时间: 2013-4-12 12:06
2011hiboy 发表于 2013-4-12 02:55
我已经做好了完美版,理论上支持N个GPT磁盘的ESP分区挂载。其实ESP分区不算隐藏分区,它没有隐藏的属性, ...

用list vol,sel vol, assign真心可以分配盘符,我昨天根据老师你写的修改试过了,只是突然想到有些人可能有多个标记为系统的分区,这样虽然避免了多个gpt的错误,却没法避免多个系统的错误,所以就没有贴出来
作者: 2013hkwwcl    时间: 2013-4-12 12:09
fujianabc 发表于 2013-4-12 03:26
楼主有兴趣可以做一下UEFI+MBR启动windows的教程,或者是mbr硬盘上win7/win8单系统bios/gpt双模式启动。

...

fujianabc老师不妨也做个教程吧,我现在虽然会uefi+mbr启动了,但总感觉还有什么地方没想到,没认识到,期待。。。
作者: 糊涂    时间: 2013-4-12 12:13
2012zhd 发表于 2013-4-12 12:03
请放出下载地址,下来学习应用。

WIN8X64PE下载地址.rar (250 Bytes, 下载次数: 122)

支持量产与U+写入
也可做为UDPE中的一个WIN8单内核使用,工具内置
总体积288M
作者: 2012zhd    时间: 2013-4-12 12:28
本帖最后由 2012zhd 于 2013-4-12 12:49 编辑
糊涂 发表于 2013-4-12 12:13
支持量产与U+写入
也可做为UDPE中的一个WIN8单内核使用,工具内置
总体积288M


正在下载,谢谢。
作者: 2013公安局长    时间: 2013-4-12 12:47
自己最近才装过,觉得也不怎么深奥,维护很重要,不喜动不动就重装系统。




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3