无忧启动论坛

标题: [求助]Grub for NTLDR的默认启动菜单如何设置? [打印本页]

作者: Climbing    时间: 2004-9-9 19:42
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
我知道grub for ntldr(即grldr)默认情况下在boot.ini中这样设置:
c:\grldr="Start Grub"
这个grub启动起来以后,会搜索(hd0,0)/boot/grub/menu.lst作为默认的启动菜单,但假设我的NT系统安装在(hd0,1),而menu.lst在(hd0,1)/boot/grub目录下,那么我如何设置boot.ini,使得grldr能够启动我指定的menu.lst?
我想象中应该这样设置:
c:\grldr="start Grub" configfile=(hd0,1)/boot/grub/menu.lst
但可惜无效。
还要请useronce不吝赐教!

作者: 弄潮儿-NET    时间: 2004-9-9 20:01
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
我也想问一下这个MENU.LST是否可以指定别的名字...

作者: 弄潮儿-NET    时间: 2004-9-9 20:54
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由Climbing2004/09/09 07:42pm 发表的内容:
我知道grub for ntldr(即grldr)默认情况下在boot.ini中这样设置:
c:\grldr="Start Grub"
这个grub启动起来以后,会搜索(hd0,0)/boot/grub/menu.lst作为默认的启动菜单,但假设我的NT系统安装在(hd0,1 ...
就算NT系统安装在 (hd0,1)中,BOOT.INI也应该在 (hd0,0)中的呀.晕...

作者: Climbing    时间: 2004-9-10 08:26
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由弄潮儿-NET2004/09/09 08:54pm 发表的内容:
就算NT系统安装在 (hd0,1)中,BOOT.INI也应该在 (hd0,0)中的呀.晕...
错,我的boot.ini就是在(hd0,1)中的。
你如果大喊:官人,我要。我就告诉你是怎么回事。呵呵
作者: Gandalf    时间: 2004-9-10 08:53
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由弄潮儿-NET2004/09/09 08:01pm 发表的内容:
我也想问一下这个MENU.LST是否可以指定别的名字...
可以, 你需要修改 Grub(grldr) 的二进制代码, 把 menu.lst 字符串改为你需要的.
当然, 总长度不能超过 72 字节. (记不太清了)
作者: Gandalf    时间: 2004-9-10 09:06
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由Climbing2004/09/09 07:42pm 发表的内容:
我知道grub for ntldr(即grldr)默认情况下在boot.ini中这样设置:
c:\grldr="Start Grub"
这个grub启动起来以后,会搜索(hd0,0)/boot/grub/menu.lst作为默认的启动菜单,但假设我的NT系统安装在(hd0,1 ...
- 这个等用上 findroot 功能. 你需要重新编译 Grub.  ;-)
     < 这个功能是外国人(Chris)加的. >

作者: Climbing    时间: 2004-9-10 09:17
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
怎么一个重新编译法?用什么参数?
作者: 弄潮儿-NET    时间: 2004-9-10 09:44
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由Climbing2004/09/10 08:26am 发表的内容:
错,我的boot.ini就是在(hd0,1)中的。
你如果大喊:官人,我要。我就告诉你是怎么回事。呵呵
莫非你把主分区分在第二个……第一个是EXT2或别的格式的,呵呵~
如果不是这种情况的话就……请你来告诉大家吧,-_-! 想不起还有什么情况了.

作者: Climbing    时间: 2004-9-10 10:49
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
呵呵,我的硬盘一共分了三个主分区,一个扩展分区,第一个主分区上安装的是Windows 2000 Server,第二个主分区安装的是Windows 2003,第三个主分区安装的是Windows 98 SE。在安装操作系统时,我先将某个主分区激活,然后再安装系统。这样装出来的系统是完全独立的,互不影响,也就是说2000和2003都有自己独立的boot.ini,哪个主分区被激活,哪个主分区启动起来后就是C:。
明白了吗?
作者: 弄潮儿-NET    时间: 2004-9-10 12:31
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
明白了,这样的话你在各个主分区下都放上一个grldr和 boot目录就行了,
把 (hd0,0) 的 menu.lst 复制一份到 (hd0,1)不就行了?
而且还可以不同的菜单...好像有点不爽的说,
作者: guies    时间: 2004-9-10 14:14
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
[UploadFile=34_4225_10.gif]GRLDR 里有这样的代码
作者: Climbing    时间: 2004-9-10 15:00
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
我试过修改grldr中的对应字符串,事实证明也是无效的。
作者: 弄潮儿-NET    时间: 2004-9-10 16:50
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由guies2004/09/10 02:14pm 发表的内容:
GRLDR 里有这样的代码
据useronce所讲,然后我去一看,也看到了,今晚就试一下,

作者: Climbing    时间: 2004-9-11 11:52
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
顶一下。
作者: guies    时间: 2004-9-11 17:57
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
把 grub.exe 文件拷贝到 DOS 的硬盘分区或者 DOS 软盘即可。用法:
grub --config-file=(hd0,0)/boot/grub/menu.lst
或者不带参数:
grub
默认的配置文件是 (hd0,0)/boot/grub/menu.lst

当然 GRUB 也支持菜单操作。GRUB.EXE 默认的菜单配置文件是 (hd0,0)/boot/grub/menu.lst ,正如前面所说,这个配置文件的位置可以由 DOS 命令行参数来重新指定。这个文件所处的分区(默认是(hd0,0))的类型可以是 DOS/Windows 的 FAT12,FAT16,FAT32,也可以是 Linux 的 ext2 等类型,还可以是 GRUB 所支持的其他分区类型。顺便说,GRUB 的新版本将要支持 iso9660 光盘格式、NTFS 文件系统,以及用软盘映像 img 文件来引导机器(特别适合于没有软盘又想用软盘来启动机器的用户)。

作者: 弄潮儿-NET    时间: 2004-9-11 19:33
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由guies2004/09/11 05:57pm 发表的内容:
把 grub.exe 文件拷贝到 DOS 的硬盘分区或者 DOS 软盘即可。用法:
grub --config-file=(hd0,0)/boot/grub/menu.lst
或者不带参数:
grub
...
楼主问的是从GRLDR引导,

作者: guies    时间: 2004-9-11 23:58
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
下面引用由弄潮儿-NET2004/09/11 07:33pm 发表的内容:
楼主问的是从GRLDR引导,
我知道,如果还解决不了只好手动啰.. 进命令行自已 keyin 啰..
作者: Climbing    时间: 2004-9-12 12:10
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
答非所问,白白浪费我的时间。grub.exe的用法我很清楚,暂时也没有遇到什么困难需要指教。我现在的问题就是grldr的默认菜单问题。
经不点指教,他说grub打上Chris的findroot及presetmenu补丁后,就可以自动搜索启动菜单,不知道Gandalf的版本有没有打上这个补丁,如果打上了,编译时需要加什么参数吗?

作者: Climbing    时间: 2004-9-13 08:59
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
useronce~~~,你在哪里?
再关注一下findroot的问题吧。
我的提问:
Gandalf,能想法找一下Virtual PC网卡for Grub的驱动吗?我现在没有办法在Virtual PC下测试Grub的网络启动,感觉十分不爽!
Virtual PC使用的是DEC 21X4系列的网卡。
ret=\"DC21X4\"
vendor=1011 \"DEC\"
dev=0002 \"PCI Fast Ethernet DEC 21040-based Adapter\"
0014 \"PCI Fast Ethernet DEC 21041-based Adapter\"
0009 \"PCI Fast Ethernet DEC 21143-based Adapter\"
0019 \"PCI Fast Ethernet DEC 21143-based Adapter\"
Gandalf回复:
- 我在 savannah 上 Requested 了, 暂时还没有回应.
http://savannah.gnu.org/bugs/?func=detailitem&item_id=10317
我的回复:
太好了,Virtual PC网卡的问题已经解决了,我看了前面一个留言中你回复的那个提交bug的帖子,那里面有人提示说要用tulip网卡编译,我开始编译了一次,说找不到BIOS32(当然也找不到网卡),后来我又重新编译,加上了一个“--enable-pci-direct”参数,然后就成功了。
完整的configuare参数如下:
./configure --enable-diskless --enable-pci-direct --enable-tulip --disable-minix --disable-jfs --disable-vstafs --disable-reiserfs --disable-ffs --disable-ufs2
目前,最后一个我还没有解决的问题就是grub的findroot功能了。
我查了源代码,findroot功能是在stage2\builtins.c中定义的,而且在grub的命令行界面也有这个命令(还有find命令),但可惜,我用它查找任何文件都找不到,全部提示:
Error 16: File not found.
Gandalf,再好好查一下原因,争取把这个问题给解决掉吧!


作者: Gandalf    时间: 2004-9-13 09:22
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?

Roger that. ;-)
findroot 我只是知道它的存在(我的那个版本的确是打上了这个补丁的).
而且, 我知道, 在编译的时候要提供 preset-menu 参数. (我没有试过)

作者: Climbing    时间: 2004-9-13 11:20
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
--enable-preset-menu=FILE
这个参数好象是在编译时预先设定一个菜单文件,但好象跟findroot还不是一回事,我只是奇怪为什么findroot工作不正常。如果findroot工作正常的话,这个问题就比较容易解决了。
作者: Gandalf    时间: 2004-9-13 11:46
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?

--enable-preset-menu=FILE  需要这个参数。
作者: Climbing    时间: 2004-9-13 17:27
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
呵呵,我已经找到了这个参数。但还没有编译。
而且我也已经找到了findroot命令的用法,在使用findroot命令的时候,你必须指定文件的绝对路径(不包括分区)。例如:
findroot /boot/grub/menu.lst
那么findroot会按(hd0,0), (hd0,1), (hd0,2), ... (fd0)的顺序查找各个分区下是否存在/boot/grub/menu.lst文件。
find命令的用法与此类似。
作者: Gandalf    时间: 2004-9-14 09:17
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?

特来致贺!!
另外,这里有 Mr. Chris 的回复:
the only thing I have done beyond that is to make the default configfile (hd0,0)/grldr.lst so that it will not try to find the normal (hd0,0)/boot/grub/menu.lst I also create an fr.lst file in the root of the source and this fr.lst is compiled in.
the patch4a that is in this e-mail can do that for you.
so what happens is
grub loads fr.lst from it's memory but does not run any commands yet then it looks for (hd0,0)/grldr.lst and if found loads it and runs the commands and forgets the commands in fr.lst If (hd0,0)/grldr.lst is not present then the commands in fr.lst run and search all drives/partitions for /grldr.lst the loads it..........
so edit tinybit's compile script in his source to also apply patch 4a and change the ./configure line in that script to.
./configure --enable-preset-menu=fr.lst
or if you have source that is already patched for pre9 you can just apply patch 4a and then  ./configure --enable-preset-menu=fr.lst make
hope that is what you want to know.
======================
作者: Climbing    时间: 2004-9-14 09:47
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
抱歉,问题又来了,从Chris的描述来看,grub启动时先加载编译进grub的fr.lst文件(这个fr.lst文件名是固定的吗?),但并不执行它,而是先找(hd0,0)/grldr.lst(这个grldr.lst文件名又是固定的吗?),如果没有找到,这才执行fr.lst,而fr.lst的功能就是查找各个分区下的/grldr.lst,如果找到则加载。
所以涉及到的问题就是:
1、参数--enable-preset-menu=FILE中的FILE是用户自己定义的,还是就如Chris所说的fr.lst。
2、是不是由固定查找/boot/grub/menu.lst改成了查找/grldr.lst?
作者: Gandalf    时间: 2004-9-14 10:12
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?

这里有他提供的 diff 文件:
--------cut here-------------
diff -urN grub-0.95c/fr.lst grub-0.95/fr.lst
--- grub-0.95c/fr.lst1969-12-31 19:00:00.000000000 -0500
+++ grub-0.95/fr.lst2004-07-21 12:53:26.000000000 -0400
@@ -0,0 +1,6 @@
+default=0
+timeout=0
+
+title load grldr.lst
+findroot /grldr.lst
+configfile /grldr.lst
diff -urN grub-0.95c/stage2/asm.S grub-0.95/stage2/asm.S
--- grub-0.95c/stage2/asm.S2004-07-21 12:14:51.000000000 -0400
+++ grub-0.95/stage2/asm.S2004-07-21 12:03:27.000000000 -0400
@@ -97,7 +97,7 @@
.string VERSION
VARIABLE(config_file)
#ifndef STAGE1_5
-.string "/boot/grub/menu.lst"
+.string "/grldr.lst"
#else   /* STAGE1_5 */
.long0xffffffff
.string "/boot/grub/stage2"
diff -urN grub-0.95c/stage2/grldrstart.S grub-0.95/stage2/grldrstart.S
--- grub-0.95c/stage2/grldrstart.S2004-07-21 12:14:20.000000000 -0400
+++ grub-0.95/stage2/grldrstart.S2004-07-21 12:03:27.000000000 -0400
@@ -585,7 +585,7 @@
jmppre_stage2_start//ljmp$0, $0x8200

default_config_file:
-.ascii"(hd0,0)/boot/grub/menu.lst"
+.ascii"(hd0,0)/grldr.lst"

.byte0/* mark the end of ascii zero string */
-----------------cut here--------------------

作者: Climbing    时间: 2004-9-14 10:20
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
我明白了,我只要在grub-0.95目录下建立一个grub.lst,内容如下:
default=0
timeout=0
title load menu.lst
findroot /boot/grub/menu.lst
configfile /boot/grub/menu.lst
然后编译时加上一个:--enable-preset-menu=grub.lst
ok,现在的grub就会自动寻找每个分区/boot/grub/menu.lst,将找到的第一个作为默认启动菜单,当然,启动时默认还是找(hd0,0)/boot/grub/menu.lst。
作者: Gandalf    时间: 2004-12-7 19:47
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?

在 GMEditor 里内建的 grldr 已使用了这种方法。 ;)
作者: Climbing    时间: 2004-12-7 20:21
标题: [求助]Grub for NTLDR的默认启动菜单如何设置?
呵呵,在我的编译中,我将preset-menu做的很大很全,基本上有各种常用的功能,当然timeout不再是0了,如果找不到默认的menu.lst,grub就会启动这个preset-menu,一样也很好用。
当然,现在的问题就是grldr必须在(hd0,0)根目录下有一份拷贝,否则在很多情况下还是启动不正常(grub根本就启动不起来)。我就觉得grldr挺死心眼儿的,干什么非抱着(hd0,0)不放啊。




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