无忧启动论坛

标题: wee啟動grub.exe grldr等問題 [打印本页]

作者: fredguo    时间: 2013-8-27 10:47
标题: wee啟動grub.exe grldr等問題
本帖最后由 fredguo 于 2013-8-28 06:17 编辑

各位好

在使用wee上想要啟動grub4dos
但grub4dos的目錄在c:\tools下
menu.lst亦在c:\tools下

1. 因grub.exe檔案易受病毒感染,所以想使用grldr
    但grldr無法使用--config-file來設定menu.lst的位置
    請問grldr可以使用自訂menu.lst的存放位置嗎?

2. 使用grub.exe --config-file
    wee的設定
    find --set-root /tools/grub.exe --config-file=/tools/menu.lst
    結果可以進grub但無法使用menu.lst
    root (hd0,0)
    /tools/grub.exe --config-file=/tools/menu.lst
    結果可以進grub且可以使用menu.lst
    find --set-root /tools/grub.exe /tools/grub.exe --config-file=/tools/menu.lst
    結果可以進grub但無法使用menu.lst
    請問為什麼find --set-root無法使用,和root (hd0,0)有何差異
    最後使用
    find --set-root /tools/grub.exe /tools/grub.exe --config-file=";find --set-root /tools/menu.lst;configfile /tools/menu;"

3. Grub4dos的光碟啟動
   小弟使用天空論壇的五子登科PE
   先將PE做成ISO
   再利用grub4dos的ISO開機
   map /tools/max.iso (0xff)
   chainloader (0xff)
   boot
   結果win2003 PE可以正常開啟
   而Win7 PE可開機,卻無法正常掛載程式
   似乎是由grub4dos做成的虛擬光碟不見了
   同樣發生在測試IBM Server Guide的光碟片
   請問是否有方式保持開機後保持iso的虛擬光碟掛載?

以上為小弟奇怪的作法
想請教大家
謝謝


作者: 不点    时间: 2013-8-27 14:43
第三个问题最容易答复,所以,我先答复它。grub4dos 只管启动 ISO,不管启动以后这个 ISO 是否被保护模式的操作系统识别。负责在 Windows 下识别 ISO 的软件是 firadisk 或 winvblock。请了解相关信息,然后再采取行动。
作者: 不点    时间: 2013-8-27 15:19
相对而言,问题 1 也比较容易回答。grub.exe 染病毒的可能性也并不大。如果你觉得 exe 后缀容易导致病毒攻击,你可以更改为别的后缀,不影响在 wee 和 grub4dos 下的使用。只有 DOS 才要求 grub.exe 带有 EXE 后缀,否则,DOS 下无法运行 grub.exe。

grldr 不支持命令行参数,因此,你无法用 grldr --config-file=... 的方式来使用 grldr。


作者: 不点    时间: 2013-8-27 15:41
这条命令的用法似乎是错的:

find --set-root /tools/grub.exe --config-file=/tools/menu.lst

find 的第一个文件名参数是要找的文件,紧接着应该是一条返回 True 或 False 的 grub4dos 命令,表示限定条件,而不应该是一个类似于 --config-file 的参数。

下面这个:

find --set-root /tools/grub.exe /tools/grub.exe --config-file=/tools/menu.lst

我没看出有什么错误,但你却说不行。或许你的 Wee 版本不够新?或许 Wee 有 bug?有待考证。

最后这个,结尾是不是漏掉了 .lst 呢?
find --set-root /tools/grub.exe /tools/grub.exe --config-file=";find --set-root /tools/menu.lst;configfile /tools/menu;"
作者: fredguo    时间: 2013-8-27 16:02
不点 发表于 2013-8-27 15:41
这条命令的用法似乎是错的:

find --set-root /tools/grub.exe --config-file=/tools/menu.lst

謝謝不點的回復
wee的版本為BootICE 1.10  wee 2012-11-05
find --set-root /tools/grub.exe
會回(0x80,0)
若root (hd0,0)
會回(0x80,0):3f,c7ff53f:80,07:ntfs
所以用root(hd0,0)的話會成功
用find --set-root會失敗

確實是少了.lst
作者: fredguo    时间: 2013-8-27 16:05
不点 发表于 2013-8-27 15:41
这条命令的用法似乎是错的:

find --set-root /tools/grub.exe --config-file=/tools/menu.lst

find --set-root /tools/grub.exe --config-file=/tools/menu.lst我打錯了
實際是
find --set-root /tools/grub.exe /tools/grub.exe --config-file=/tools/menu.lst
這樣亦會錯誤
作者: 不点    时间: 2013-8-27 16:38
你的 Wee 版本是最新的,看来 Wee 还有小毛病。
find --set-root /tools/grub.exe
會回(0x80,0)
若root (hd0,0)
會回(0x80,0):3f,c7ff53f:80,07:ntfs


这里的设备都是 (0x80,0),因此是等价的。怀疑 find 命令有 bug,没能把当前的设备号 (0x80,0) 传递给 grub.exe。试试这样:

find --set-root /tools/grub.exe
/tools/grub.exe --config-file=/tools/menu.lst

看能否成功?

如果依然失败,再试试:

find --set-root /tools/grub.exe
root
/tools/grub.exe --config-file=/tools/menu.lst

作者: fredguo    时间: 2013-8-27 16:47
不点 发表于 2013-8-27 16:38
你的 Wee 版本是最新的,看来 Wee 还有小毛病。

剛做測試,結果失敗
需要用root (hd0,0)才可成功
作者: 不点    时间: 2013-8-27 16:54
失败时,上述那条不带参数的 root 命令,有没有反馈信息?
作者: fredguo    时间: 2013-8-27 17:23
不点 发表于 2013-8-27 16:54
失败时,上述那条不带参数的 root 命令,有没有反馈信息?

上述的失敗
均是可能是速度太快
只見系統立轉為grub4dos的內設menu
無法見到錯誤訊息

作者: 不点    时间: 2013-8-27 17:30
启动时,快速按 c 键进入命令行,在命令行手动敲入测试的命令,就可以看到信息了。


作者: fredguo    时间: 2013-8-27 20:52
我的測試均用c鍵進入命令列測試的
find --set-root /tools/grub.exe /tools/grub.exe --config-file=/tools/menu.lst (無法載入menu.lst)
find --set-root /tools/grub.exe /tools/grub.exe "" --config-file=/tools/menu.lst (無法載入menu.lst)

find --set-root /tools/grub.exe
root
/tools/grub.exe --config-file=/tools/menu.lst (無法載入menu.lst)

find --set-root /tools/grub.exe
root ()
/tools/grub.exe --config-file=/tools/menu.lst (無法載入menu.lst)

root(hd0,0)
/tools/grub.exe --config-file=/tools/menu.lst (OK)

find --set-root /tools/grub.exe /tools/grub.exe --config-file=";find --set-root /tools/menu.lst;configfile /tools/menu.lst;" (OK)

以上是測試的結果
測試中均看不到訊息
作者: 2012hongrui    时间: 2013-8-27 23:25
真神奇,没见过这样用的,把grub4dos下的命令和dos下的批处理命令混在一起使用。不过以后也难说,说不定哪天开发者真提供这样的用法,那也见怪不怪了。
作者: 不点    时间: 2013-8-27 23:44
发现 wee 的源代码文件 builtins.c 中有一个小毛病:
  1. *(long *)(void *)(p + 0x08) = saved_partition;
复制代码
请自行更改为:
  1. *(long *)(void *)(p + 0x08) = (saved_partition | 0xFFFF);
复制代码
然后重新编译。很抱歉,我目前不在家,没有编译环境。

wee 的源代码的网址是:

https://code.google.com/p/grubutils/source/browse/grubutils/wee/


作者: fredguo    时间: 2013-8-28 06:16
因為我不會Compiler,且一直是配合BootICE使用
我等下次改版就好了
作者: 不点    时间: 2013-8-28 09:39
用旧版的 Linux 编译了一个。试试看吧。

大家可以等待 chenall 或 Roy 用新版的 gcc 来编译。

wee.zip

435.72 KB, 下载次数: 14, 下载积分: 无忧币 -2

修复了不能给 grub.exe 传递正确分区号的问题






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