2010qaqz111 发表于 2013-4-11 05:00:49

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:38

学习,值得学习。

2011longtianyu 发表于 2013-4-11 09:18:56

感谢分享,学习新的知识。

糊涂 发表于 2013-4-11 09:32:11

2011hiboy 发表于 2013-4-9 13:20 static/image/common/back.gif
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:50

感谢楼主的辛勤劳动

2011hiboy 发表于 2013-4-11 10:55:54

本帖最后由 2011hiboy 于 2013-4-11 11:11 编辑

糊涂 发表于 2013-4-11 09:32 http://bbs.wuyou.net/static/image/common/back.gif
SELECT DISK=0    // 选择磁盘0
SELECT PARTITION=1 // 选择磁盘0的1号分区
ASSIGN LETTER=P:/ / 分 ...

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

我待会完善下好了。
完善后可能只需要一个bat文件,但是需要更多的组合命令...

2011hiboy 发表于 2013-4-11 11:09:13

本帖最后由 2011hiboy 于 2013-4-11 11:31 编辑

2010qaqz111 发表于 2013-4-11 05:00 http://bbs.wuyou.net/static/image/common/back.gif
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:56

2011hiboy 发表于 2013-4-11 10:55 static/image/common/back.gif
这个只是个核心的命令,没有环境判断,如果mbr格式磁盘的确会有bug。

我待会完善下好了。


好的,完善好后记着通知我!我可是楼主的忠实粉丝呵呵

thtf 发表于 2013-4-11 13:13:38

这个必须得顶啊,一直想补充一下UEFI的知识,可是资料太少了,楼主给我不少新的内容,谢谢,谢谢!

fujianabc 发表于 2013-4-11 15:23:53

2010qaqz111 发表于 2013-4-11 05:00 static/image/common/back.gif
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:10

糊涂 发表于 2013-4-11 11:25 static/image/common/back.gif
好的,完善好后记着通知我!我可是楼主的忠实粉丝呵呵

批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的

2010fangbaiyu 发表于 2013-4-11 15:44:15

学习了 很NXX呀

zs102 发表于 2013-4-11 15:50:09

特来充电,谢谢!

糊涂 发表于 2013-4-11 15:50:16

2011hiboy 发表于 2013-4-11 15:42 static/image/common/back.gif
批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的 ...

感谢老师第一时间通知!我下载测试一下

caocaofff 发表于 2013-4-11 16:42:24

潜水中。。。

糊涂 发表于 2013-4-11 17:12:14

本帖最后由 糊涂 于 2013-4-11 17:18 编辑

2011hiboy 发表于 2013-4-11 15:42 static/image/common/back.gif
批处理编写完毕.你自行下载测试.我在UEFI IA32、X64 构架下均测试成功!!!智能识别GPT磁盘,和ESP分区的 ...
辛苦老师一步步的改进修正!
我个人加了个VBS调用BAT文件,
这样进桌面的时候在后台自动操作,
没有明显的窗口提示信息!

VBS内容如下

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





感谢楼主老师分享

2011hiboy 发表于 2013-4-11 17:21:43

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

直接pecmd隐藏调用批处理即可,无需vbs

糊涂 发表于 2013-4-11 17:27:51

2011hiboy 发表于 2013-4-11 17:21 static/image/common/back.gif
直接pecmd隐藏调用批处理即可,无需vbs

直接PECMD隐藏?应该怎么写呢?
应该是可以。。。求教老师

2011hiboy 发表于 2013-4-11 18:29:41

本帖最后由 2011hiboy 于 2013-4-11 18:41 编辑

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

EXEC !esp.bat

Meizu 发表于 2013-4-11 19:28:52

其实我想问问的是UEFI、EFI、Bios这三者的区别?通俗点分析下,最近才接触这个UEFI...

yunzhang 发表于 2013-4-11 19:39:51

这个得好好学习,不然就成电脑盲了。

糊涂 发表于 2013-4-11 19:59:27

2011hiboy 发表于 2013-4-11 18:29 static/image/common/back.gif
写到pecmd.ini ,注意esp.bat的路径,!是表示隐藏执行…

EXEC !esp.bat

已经完成!

2011hiboy 发表于 2013-4-11 20:02:20

糊涂 发表于 2013-4-11 19:59 static/image/common/back.gif
已经完成!

ESP.bat你实际测试没有问题吧,不会把mbr c:给改了吧。
现在开启pe就能看见esp分区,安装系统没问题的说。

糊涂 发表于 2013-4-11 20:18:16

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

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

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

现在看来没这个必要了

心运动 发表于 2013-4-11 20:45:56

学习了,从大师这儿学到不少知识,向大师致敬!

2013hkwwcl 发表于 2013-4-11 22:31:44

本帖最后由 2013hkwwcl 于 2013-4-11 22:42 编辑

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

看了一下批处理,感觉没有考虑到两块gpt硬盘的情况,那样就会有两个*号,导致硬盘选择失败吧
PS:用U盘测试了一下,确实会失败,不过一般人都是一块gpt,应该没啥问题,感谢提供批处理!!

2011hiboy 发表于 2013-4-11 23:00:51

本帖最后由 2011hiboy 于 2013-4-11 23:02 编辑

2013hkwwcl 发表于 2013-4-11 22:31 static/image/common/back.gif
看了一下批处理,感觉没有考虑到两块gpt硬盘的情况,那样就会有两个*号,导致硬盘选择失败吧
PS:用U盘 ...

我知道,写的时候我就注意到了,就参照一个GPT磁盘写的,两个的话考虑到2 个GPT 磁盘的情况很少,添加成2个或更多也可以,需要多写循环结构,暂时就这样吧。以后再升级命令。

2013hkwwcl 发表于 2013-4-11 23:42:51

2011hiboy 发表于 2013-4-11 23:00 static/image/common/back.gif
我知道,写的时候我就注意到了,就参照一个GPT磁盘写的,两个的话考虑到2 个GPT 磁盘的情况很少,添加成 ...

是否可以使用list vol命令,然后token 2,3,如果3不为空,就选择该卷并分配盘符,这样就不管是不是gpt,凡是隐藏的全部分配。具体怎么写就不知道了,批处理最多只会看看。。。

2011hiboy 发表于 2013-4-12 02:55:09

2013hkwwcl 发表于 2013-4-11 23:42 static/image/common/back.gif
是否可以使用list vol命令,然后token 2,3,如果3不为空,就选择该卷并分配盘符,这样就不管是不是gpt, ...

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

你说的不可行,list volume 可以看到很多分区,但是分配盘符必需先制定该分区在的磁盘,再制定该分区,再分配盘符

fujianabc 发表于 2013-4-12 03:26:57

楼主有兴趣可以做一下UEFI+MBR启动windows的教程,或者是mbr硬盘上win7/win8单系统bios/gpt双模式启动。

因为对于目前大多数人来说,只要不用2TB以上容量的硬盘,GPT分区表并不是必须的,而且用了GPT的硬盘就没办法用bios模式启动windows和其他老系统了。
页: 1 2 [3] 4 5 6 7 8 9 10 11 12
查看完整版本: UEFI启动视频详解:启动分析+N项操作实例,赶紧学习,不要落伍啦,该给自己充电啦...