无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
无忧启动论坛唯一网址:bbs.wuyou.net系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
楼主: 不点

menu.wee 的一点微调,chenall 留意一下

  [复制链接]
发表于 2016-1-29 14:57:34 | 显示全部楼层
不点 发表于 2016-1-29 14:50
wee 不支持查找 GPT 分区格式下的文件。这就可以解释上述失败现象了。不用再纠结了。

wee有支持GPT分区的吧,好像??我印像中是有支持的,刚刚在QEMU中试了下可以找到GPT分区.

点评

wee 应该是不支持 GPT 的。 说支持的,应该是假象。 比如,你可能不是纯 GPT,而是 GPT 和 MBR 双重格式,此时 wee 用 MBR 格式来访问分区。  详情 回复 发表于 2016-1-29 15:15
回复

使用道具 举报

 楼主| 发表于 2016-1-29 15:15:59 | 显示全部楼层
chenall 发表于 2016-1-29 14:57
wee有支持GPT分区的吧,好像??我印像中是有支持的,刚刚在QEMU中试了下可以找到GPT分区.

wee 应该是不支持 GPT 的。

说支持的,应该是假象。

比如,你可能不是纯 GPT,而是 GPT 和 MBR 双重格式,此时 wee 用 MBR 格式来访问分区。

点评

这一段代码应该就是探测GPT分区的.  详情 回复 发表于 2016-1-29 15:39
回复

使用道具 举报

发表于 2016-1-29 15:39:01 | 显示全部楼层
不点 发表于 2016-1-29 15:15
wee 应该是不支持 GPT 的。

说支持的,应该是假象。

这一段代码应该就是探测GPT分区的.
  1.         cmpb        $0xee, 4(%esi)
  2.         jne        100f
  3.         movl        $1,%eax
  4.         call        101f
  5.         testl        %eax, %eax
  6.         jz        9f
  7.         movl        $PART_TABLE_TMPBUF,%esi
  8.         cmpl        $0x20494645,(%esi)
  9.         jne        9f
  10.         movl        72(%esi),%eax
  11.         movl        %eax,PART_TABLE_BUF + 0xC
  12. 110:
  13.         movl        PART_TABLE_BUF + 0xC,%eax
  14.         incl        PART_TABLE_BUF + 0xC
  15.         call        101f
  16.         testl        %eax, %eax
  17.         jz        9f
  18.         movl        $PART_TABLE_TMPBUF,%esi
  19.         movl        $3,%ecx
  20. 111:
  21.         movl        32(%esi),%eax
  22.         testl        %eax,%eax
  23.         jz 9f
  24.         stosl
  25.         subl        %eax,40(%esi)
  26.         movl        40(%esi),%eax
  27.         stosl
  28.         xorb        %al,%al
  29.         stosb
  30.         movb        $0xee,%al
  31.         stosb
  32.         incb        -4(%ebp)
  33.         movl        -4(%ebp), %eax
  34.         stosw
  35.         xorl        %eax,%eax
  36.         stosl
  37.         addl        $0x80,%esi
  38.         loop 111b
  39.         jmp 110b
复制代码

点评

看来是你增强了 wee,让它支持 GPT,我确实不曾注意到。 我原来的 asm 代码里面,从来没有支持 GPT 的。 如果支持的话,又怎会找不到文件呢?难道 find 命令有 bug?  详情 回复 发表于 2016-1-29 16:06
回复

使用道具 举报

 楼主| 发表于 2016-1-29 16:06:23 | 显示全部楼层
本帖最后由 不点 于 2016-1-29 16:22 编辑
chenall 发表于 2016-1-29 15:39
这一段代码应该就是探测GPT分区的.


看来是你增强了 wee,让它支持 GPT,我确实不曾注意到。

我原来的 asm 代码里面,从来没有支持 GPT 的。

如果支持的话,又怎会找不到文件呢?难道 find 命令有 bug?

------------

更新:明白了,也许是碰到 BIOS 的访问能力极限了,因此找不到文件。

也有可能像 chenall 提到的那样,文件格式是不可执行的格式,因此无法启动。

点评

所有我让它报告一下错误代码是什么.  详情 回复 发表于 2016-1-29 16:24
回复

使用道具 举报

发表于 2016-1-29 16:24:59 | 显示全部楼层
不点 发表于 2016-1-29 16:06
看来是你增强了 wee,让它支持 GPT,我确实不曾注意到。

我原来的 asm 代码里面,从来没有支持 GPT  ...

所有我让它报告一下错误代码是什么.

点评

是的,进入命令行测试很重要。 用户应该明白 128G 之后的扇区都有可能无法访问。这应该是个基本知识了,印在脑子里。即使不碰到失败,也应该牢记这一点。更不用说,碰到了失败之后,还不能意识到这一点,那就该打  详情 回复 发表于 2016-1-29 16:29
回复

使用道具 举报

发表于 2016-1-29 16:28:45 | 显示全部楼层
chenall 发表于 2016-1-29 14:56
bootice里面的WEE63.mbr就最版的.

最新版本只是修改了内置菜单内容,需要的自己改一下菜单就行了.

按C进入命令行后
执行find --set-root /g4d/grldr,出现wee 15 >
执行/g4d/grldr,出现wee 17 >

点评

15 号错误是 ERR_FILE_NOT_FOUND,即找不到文件 17 号错误是 ERR_FSYS_MOUNT,即 文件系统挂载出错,无法挂载文件系统。 这需要你自己确定是什么原因了。 你可以在 wee 命令行下用 tab 键来自动补全,看看究  详情 回复 发表于 2016-1-29 17:18
回复

使用道具 举报

 楼主| 发表于 2016-1-29 16:29:32 | 显示全部楼层
chenall 发表于 2016-1-29 16:24
所有我让它报告一下错误代码是什么.

是的,进入命令行测试很重要。

用户应该明白 128G 之后的扇区都有可能无法访问。这应该是个基本知识了,印在脑子里。即使不碰到失败,也应该牢记这一点。更不用说,碰到了失败之后,还不能意识到这一点,那就该打 PP 了。(开个玩笑)。
回复

使用道具 举报

 楼主| 发表于 2016-1-29 17:18:06 | 显示全部楼层
本帖最后由 不点 于 2016-1-29 17:42 编辑
qj_tzy 发表于 2016-1-29 16:28
按C进入命令行后
执行find --set-root /g4d/grldr,出现wee 15 >
执行/g4d/grldr,出现wee 17 >

15 号错误是 ERR_FILE_NOT_FOUND,即找不到文件
17 号错误是 ERR_FSYS_MOUNT,即 文件系统挂载出错,无法挂载文件系统。

这需要你自己确定是什么原因了。

你可以在 wee 命令行下用 tab 键来自动补全,看看究竟是什么情况。

你也可以执行 root 命令,看看当前设备是什么。比如,究竟是 (hd0),还是 (hd0,0)?

如果 root 是 (hd0) 或 (hd0,-1),那么,这就代表整个磁盘(含分区表的整个磁盘),而不是代表某个分区(例如 (hd0,0)),因此,你无法挂上文件系统。

你可以试着执行 root (hd0,0) 之类的命令,然后再尝试挂载文件系统。



总之,出错之后,要在命令行调试和观察,了解更多信息,这样才容易判断其根源。


补充:

能否报告一下你的分区布局?各个分区的大小?有可能你要访问的分区已经超出 BIOS 的访问能力了。

回复

使用道具 举报

 楼主| 发表于 2016-1-29 18:04:50 | 显示全部楼层
本帖最后由 不点 于 2016-1-29 18:09 编辑

我再解释一下如下菜单的执行细节:

find --set-root /g4d/pwins

如果由于某种原因,find 命令失败,则此时 root 分区仍旧是 (hd0) 或 等价的 (hd0,-1),也等价于 (hd0,255),它们都代表 “全盘”,而不是某个分区的 Volume 卷。

wee 上的 find 命令也有可能在 GPT 上出现 bug。

wee 的用户毕竟没有 grub4dos 用户多,因此,其 find 命令出现 bug 的几率要比 grub4dos 的大。

timeout 10
default 0
title
title                   ** Wee Menu **
title -----------------------------------------------
title 0.Search Boot Partition Windows nt6/nt5 System
command /g4d/pwins

这条命令是执行当前 root 分区下的文件 pwins。但如果当前分区是 “全盘” (hd0),则显然无法找到文件,因为文件可能是在 (hd0,0) 里面。

出错后,会继续显示菜单。下同。

title 1.Boot windows 8 PE
command /g4d/gw8pe
title 3.grub4dos menu
command /g4d/grldr

点评

刚才,进入wee命令行进行了测试: 用root (hd0,0)命令,出现unknown的提示,该分区是esp分区,看来要对wee修正后才能较好地支持gpt分区硬盘。  详情 回复 发表于 2016-1-29 20:11
非常谢谢您的祥细指点! 我的硬盘为500G,为GPT分区结构,分为ESP分区、NTFS(win7)分区、NTFS(winxp)、NTFS(数据分区1)、NTFS(数据分区2)。 等会空了,再按您说的方法看看,到时再报告。  详情 回复 发表于 2016-1-29 19:02
回复

使用道具 举报

发表于 2016-1-29 19:02:36 | 显示全部楼层
不点 发表于 2016-1-29 18:04
我再解释一下如下菜单的执行细节:

find --set-root /g4d/pwins


非常谢谢您的祥细指点!

我的硬盘为500G,为GPT分区结构,分为ESP分区、NTFS(win7)分区、NTFS(winxp)、NTFS(数据分区1)、NTFS(数据分区2)。g4d的文件全部存放在esp分区中。

等会空了,再按您说的方法看看,到时再报告。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2019-12-7 18:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表