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