无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 5668|回复: 40
打印 上一主题 下一主题

[求助] ..........................

[复制链接]
跳转到指定楼层
1#
发表于 2014-7-30 10:22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

点评

sdfsfd  发表于 2014-7-31 11:40
sdfsfd  发表于 2014-7-31 11:39
sdfsfd  发表于 2014-7-31 11:38
sdfsfd  发表于 2014-7-31 11:37
sdfsfd  发表于 2014-7-31 11:36
2#
发表于 2014-7-30 11:19:08 | 只看该作者
你好像没说清楚。

ud 内,是如何加载这个 ISO 的?

估计是加载的命令有瑕疵,或者方法、步骤有错误,或有漏洞。

点评

1#,纠正了一下  详情 回复 发表于 2014-7-30 11:26
回复

使用道具 举报

3#
 楼主| 发表于 2014-7-30 11:26:18 | 只看该作者
不点 发表于 2014-7-30 11:19
你好像没说清楚。

ud 内,是如何加载这个 ISO 的?

1#,纠正了一下
回复

使用道具 举报

4#
发表于 2014-7-30 12:07:39 | 只看该作者
找到一个 bug。试试看,问题是否解决?

如果解决了,就可以作为正常版本使用。

grub4dos-0.4.5c-2014-07-30.7z

253.95 KB, 下载次数: 56

试试看,如果解决了,可以正式采纳

点评

OK了,能否发源码上来?  详情 回复 发表于 2014-7-30 12:21
回复

使用道具 举报

5#
 楼主| 发表于 2014-7-30 12:21:33 | 只看该作者
不点 发表于 2014-7-30 12:07
找到一个 bug。试试看,问题是否解决?

如果解决了,就可以作为正常版本使用。

OK了,能否发源码上来?
回复

使用道具 举报

6#
发表于 2014-7-30 12:39:57 | 只看该作者
本帖最后由 PE168 于 2014-7-30 12:47 编辑

原来如此,之前下5大iso版的siso文件,用run引导总提示找不到menu.lst文件,还以为5大制作该iso文件有问题呢。
回复

使用道具 举报

7#
发表于 2014-7-30 13:10:10 | 只看该作者
从1#下载"QEMU虚拟机测试工具",把 new.fba 中的 grldr 以及 new.fba->test.iso 中的 grldr 换成 0.4.6a,测试结果如 2013-04-01.png,根是 cd 。
不理解的是:为何命令行上部的版本是 0.4.5c 2013-04-01 ?
新的 grldr 没有内置菜单:
echo "%@root%"
pause 1
find --set-root /boot/menu.lst
echo "%@root%"
pause 2
他是从何处加载的?

点评

FBA里面的ISO是用grldr引导的 你要先将菜单内置到grldr,再导出ISO,再将新的grldr作为ISO引导,再将ISO导入FBA  详情 回复 发表于 2014-7-30 13:15
回复

使用道具 举报

8#
发表于 2014-7-30 13:13:37 | 只看该作者
源码有啊,压缩包里面那个后缀为 diff 的文件,就是补丁。下载 chenall 的最新源码,打上这个 diff 补丁就可以自己编译了。

回复

使用道具 举报

9#
 楼主| 发表于 2014-7-30 13:15:37 | 只看该作者
2011yaya2007777 发表于 2014-7-30 13:10
从1#下载"QEMU虚拟机测试工具",把 new.fba 中的 grldr 以及 new.fba->test.iso 中的 grldr 换成 0.4.6a, ...

FBA里面的ISO是用grldr引导的

你要先将菜单内置到grldr,再导出ISO,再将新的grldr作为ISO引导,再将ISO导入FBA


回复

使用道具 举报

10#
发表于 2014-7-30 14:54:23 | 只看该作者
原来是这样啊:
更改 test.iso 中的 grldr 没有用,需要更改 test.iso 引导文件 grldr (不是 4 扇区,是整个文件)。已经修改内置菜单。
更改为 0.4.6a 一切正常,根是 cd .
回复

使用道具 举报

11#
发表于 2014-7-30 15:19:40 | 只看该作者
本帖最后由 不点 于 2014-7-30 15:22 编辑

@yaya

版本 0.4.6 不出现这个 bug,那可不是个好事。我发现 0.4.6 的 common.c 缺少如下的代码片段:


  1.     force_pxe_as_boot_device = 0;
  2.     /* if booted by fbinst, we can skip tons of checks ... */
  3.     if (fb_status)
  4.     {
  5.         boot_drive = FB_DRIVE;
  6.         install_partition = 0xFFFFFF;
  7.         goto set_root;
  8.     }
复制代码


正是这个代码片段带来的问题。0.4.6 没打相应的补丁,所以没有表现出问题。然而,这个补丁必须打上,不打是不行的。
我不知道为什么没打上,也许是 chenall 的疏忽,也许是你搞错了。

请找到相关的补丁(或者通过比较 0.4.5 和 0.4.6 来发现不同之处),然后打上。打完之后,再打上今天的补丁,就 OK 了。

回复

使用道具 举报

12#
发表于 2014-7-31 09:51:36 | 只看该作者
记录一下本次补丁更改了啥内容。

1、解决了 reboot.pro 报告的分区 ID 为 00 的分区不可被识别出来、无法访问的问题。用英文可以简单记录为 Enabled partition ID of 00.

2、解决了 chainloader --raw 不能加载硬盘 BPB hidden sectors=0 的引导扇区的问题。也是英文论坛报告的。用英文可以记录为 Enabled "chainloader --raw" to load harddrive PBR with BPB hidden_sectors=0.

3、清除 ud 启动后残留信息使后续启动不再被重复识别为 ud 启动(因为后续启动本来就不再是从 ud 启动)。英文记录为 Destroyed the FBBF signature(in memory) for subsequent non-FBINST boot.

接下来还可能再对 makeactive 命令进行修复或改进,这是英文论坛上正在讨论的问题。

回复

使用道具 举报

13#
发表于 2014-7-31 10:42:45 | 只看该作者
再解释一下为何从 fbinst 启动后,要设定启动设备为 ud 区而不是可见区或者其他分区。那是出于安全第一的考虑。我们之所以要用 fbinst,正是想利用 fbinst 的启动成功率,保证启动成功是第一要务。所以,任何有助于保证启动成功的手段,都应该采纳。ud 区位于磁盘的最开头,相比于其他分区,它更易于保证访问的成功,尤其是在 buggy BIOS 的情形。ud 区本身就已经占用至少 8M 的空间了,所以,可见区有可能无法访问,甚至在访问可见区时产生死机,这都是不奇怪的。所以,启动时尽量不碰可见区,是一个防止发生死机的思路。至少 grub4dos 的内核不至于死掉,否则,用户根本就没有机会看到菜单。如果用户在后续的菜单中访问可见区发生死机,那样的话,用户是可以报告 bug 的,甚至也能猜出是什么原因,方便精确定位出问题的地方,这样,无论是用户还是开发者,都不至于太痛苦,不至于满头雾水,不至于一筹莫展。

从 fbinst 启动后,越过 PXE 启动检查,越过 CDROM 启动检查,越过 DOS 启动设备的检查,这也是出于安全性的考虑,那就是尽量减少发生死机的环节,当然这同时也有助于防止恶意主板 BIOS 的攻击。

从 fbinst 启动后,为何立即抹掉 FBBF 标志?那是因为,这个标志会误导后续的 grldr(即,当 chainloader 加载某个启动扇区之后又碰上下一个阶段的 grldr),使后续的 GRLDR 也认为是从 fbinst 启动,从而错误地认定 ud 为启动设备,而无法正确设定真实的启动设备。

FBBF 标志本来就位于 0000:2000 附近的内存空间,这本来就有可能被 grub4dos 的堆栈内容覆盖掉(栈顶位于0000:7000,向下扩展)。也就是说, GRUB4DOS 的内核启动后,FBBF 标志也就用不上了,它有可能在某些主板 BIOS 的情况下被堆栈毁掉。也就是说,它处于堆栈空间覆盖范围,它的值不可靠,本身已经失去其意义了。所以,它的值也不会再被使用了。

回复

使用道具 举报

14#
发表于 2014-7-31 11:28:58 | 只看该作者
本帖最后由 2011yaya2007777 于 2014-8-1 14:50 编辑

0.4.6a 已经按照不点的指示打了补丁。
另外,default_func 似乎有一段代码应当由 0.4.5c 移植过来,位于
if (grub_memcmp (arg, "saved", 5) == 0)
     {
之后;
还有 geometry_func 也似乎有一段代码应当由 0.4.5c 移植过来,位于
   /* Check for the geometry.  */
   if (get_diskinfo (current_drive, &tmp_geom))
之前。
请不点看一看,是否应当打上。
回复

使用道具 举报

15#
发表于 2014-7-31 17:36:17 | 只看该作者
本帖最后由 不点 于 2014-7-31 17:37 编辑

没错,都应该打上。但是,需要注意,default_func 里面增加的这段代码,是从 stage2.c 的 cmain() 挪动过来的。也就是说,cmain 里面的相应代码应该去掉。你可查看 cmain 里面是否有类似的代码。通过比较 0.4.5 和 0.4.6 的 cmain 函数的不同,就可以发现是否有重复的、用来处理 default 文件的代码,如果有,就需要删除掉,让 0.4.6 与 0.4.5 保持一致。

回复

使用道具 举报

16#
发表于 2014-8-1 10:27:18 | 只看该作者
stage2.c 中好几处不一样!现在 0.4.6 与 0.4.5 在  stage2.c 都保持一致了。
我准备提交了。
回复

使用道具 举报

17#
发表于 2014-8-1 11:53:24 | 只看该作者
本帖最后由 不点 于 2014-8-1 11:57 编辑

geometry 的改动,也不是单独的,好像与 bios.c 是同时改动的。你再看看 bios.c 是不是也有差别?

补充:

也涉及 asm.S,你留意一下。

回复

使用道具 举报

18#
发表于 2014-8-1 13:00:59 | 只看该作者
本帖最后由 2011yaya2007777 于 2014-8-1 15:17 编辑

执行 git push 推送到服务器上了,但是在 https://github.com/yaya2007/grub4dos 没有看到 "compare & pull request"按钮,只有 “pull request"按钮。没有办法输入一些信息,点击"Create pull request"按钮,提交信息。

https://github.com/yaya2007/grub4dos 已经看到内容更新了。

以后再遇到这种情况,我如何用另一种方法通知 chenall 提交信息?

点评

首先切换到0.4.6分支,然后再点 Pull Request 看下图位置。 进入之后就会看到一个大的Create Pull Request按钮,图2. 然后就可以了。  详情 回复 发表于 2014-8-1 17:11
有没有编译好的?  详情 回复 发表于 2014-8-1 14:25
回复

使用道具 举报

19#
发表于 2014-8-1 14:25:17 | 只看该作者
2011yaya2007777 发表于 2014-8-1 13:00
执行 git push 推送到服务器上了,但是在 https://github.com/yaya2007/grub4dos 没有看到 "compare & pull ...

有没有编译好的?
回复

使用道具 举报

20#
发表于 2014-8-1 17:11:54 | 只看该作者
本帖最后由 chenall 于 2014-8-1 17:21 编辑
2011yaya2007777 发表于 2014-8-1 13:00
执行 git push 推送到服务器上了,但是在 https://github.com/yaya2007/grub4dos 没有看到 "compare & pull ...


首先切换到0.4.6分支,然后再点  Pull Request  看下图位置。

下图两个位置都可以。



进入之后就会看到一个大的Create Pull Request按钮,图2.



然后就可以了。





我已经自己同步更新了。0.4.5源码还没有更新,因为现在的电脑上git等工具,yaya有空可以更新试下。
回复

使用道具 举报

21#
发表于 2014-8-1 18:20:00 | 只看该作者
对 makeactive 命令作了少量的修复。不用记录这个改动。更大的改动在讨论中未达成一致意见,所以作废。所以,只保留小 bug 的修复部分,不再进行功能增强。

chenall 可以提交了。

grub4dos-0.4.5c-2014-08-01.7z

254.38 KB, 下载次数: 24

可以提交

回复

使用道具 举报

22#
发表于 2014-8-1 21:14:53 | 只看该作者
想切换到 0.4.5c ,执行 git checkout master
显示 error: pathspec 'master' did not match any file(s) known to git.

哦,使用 git checkout origin/master -b master 已经切换到 0.4.5c 版本!
回复

使用道具 举报

23#
发表于 2014-8-1 22:37:35 | 只看该作者
0.4.5c 及 0.4.6a 补丁已经打上。推送到服务器上了。
就是没有 20# 图2 的绿Create Pull Request按钮,没有后面的文字,没有问号,没有那个长方形外框。上次折腾了一气,不知怎样碰巧出现了一次!
回复

使用道具 举报

24#
发表于 2014-8-18 15:05:43 | 只看该作者
求大神出品优盘启动制作视频全过程(视频)
回复

使用道具 举报

25#
发表于 2014-9-23 23:34:35 | 只看该作者
winxp,win7 x64 硬盘启动 win8pe.iso 启动成功

title windows8 PE  
find --set-root /PE/winvblock.img
map --mem /PE/winvblock.img (fd0)
find --set-root /PE/Win8PE.iso
map --mem /PE/Win8PE.iso (hd32)
map --hook
chainloader (hd32)
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-26 04:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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