无忧启动论坛
标题:
grldr是如何实现对menu.lst的搜索的?
[打印本页]
作者:
wenliangyu
时间:
2011-2-13 09:45
标题:
grldr是如何实现对menu.lst的搜索的?
我16进制下查看Grub4Dos里的grldr,大概在偏移000003c0的行,看见有/menu.lst,请教这个是表示搜索当前根目录吗?还是表示会搜寻所有的分区的根目录?另在偏移00002010行,看见有0.97/boot/grub/menu.lst,这又表示什么意思呢?
我曾经看见某个版本的grldr中,可能是在偏移3c0行(当时未注意,只记得很靠前)有(hd0,0)/boot/menu.lst字样,结果grldr似乎只在这个位置找menu。我将它改为自己想要的地址(字符长度不一致),就会在我指定的地址找。但我不知道,这个修改menu.lst地址的代码,是不是必须从同一位置开始,结束的地址有什么限制?如果要指定多个地址该如何写呢?
后来我又在Grub4Dos里的grldr的末尾发现一些很像内置菜单的代码,用GrubMenu提取出来如下:
pxe detect
configfile
default 0
timeout 1
title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
errorcheck off
configfile /menu.lst || configfile /MENU.LST
configfile /boot/grub/menu.lst || configfile /BOOT/GRUB/MENU.LST
configfile /grub/menu.lst || configfile /GRUB/MENU.LST
find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
errorcheck on
commandline
title commandline
commandline
title reboot
reboot
title halt
halt
这个内置菜单很像设置了在多个地址寻找menu.lst。我想应该内置菜单不是GRLDR必须的吧。它是优先外部菜单还是优先内部菜单呢?我看论坛有说GRLDR对menu.lst的搜索默认地址就是/menu.lst、 /boot/grub/ 、/grub/menu.lst。难道它就是内置菜单实现的?
那么没有内置菜单的话会在哪里寻找呢?是不是3c0行?3c0行与内置菜单谁优先呢?
如果我将grub装入了MBR,所谓GRLDR对menu.lst的搜索默认地址就是/menu.lst、 /boot/grub/ 、/grub/menu.lst,这个根目录是指哪个分区呢?是不是grldr所在的分区?或者是所有分区?
作者:
2011wuchen
时间:
2011-2-13 14:05
这个我也感兴趣。刚开始接触。
我的grldr用grldr editor.exe提取出如下代码,共同研究探讨一下:
default 0
timeout 1
fallback 1
title find /menu.lst
find --set-root --ignore-floppies /menu.lst
configfile /menu.lst
title find /boot/grub/menu.lst
fallback 2
find --set-root --ignore-floppies /boot/grub/menu.lst
configfile /boot/grub/menu.lst
title find /grub/menu.lst
fallback 3
find --set-root --ignore-floppies /grub/menu.lst
configfile /grub/menu.lst
title commandline
commandline
title reboot
reboot
title halt
halt
我的menu.lst内容如下:
# menu.lst produced by grb4dosconf
color white/blue black/cyan white/black cyan/black
timeout 10
default 0
title lupu-510
find --set-root --ignore-floppies /puppy/initrd.gz
kernel /puppy/vmlinuz pmedia=atahd psubdir=puppy
initrd /puppy/initrd.gz
title UNetbootin
find --set-root --ignore-floppies /unetbtin/menu.lst
configfile /unetbtin/menu.lst
title Windows Vista/2008/7
find --set-root --ignore-floppies /bootmgr
chainloader /bootmgr
title Windows NT/2000/XP
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
title Windows 9x/Me
find --set-root /io.sys
chainloader /io.sys
title Grub4Dos commandline\n(for experts only)
commandline
title Reboot computer
reboot
title Halt computer
halt
title Puppy Linux (pup2usb)
root (hd0,5)
kernel /puppy/vmlinuz PMEDIA=idehd PSUBDIR=puppy
initrd /puppy/initrd.gz
title Puppy Linux (pup2usb)
root (hd0,5)
kernel /puppy/vmlinuz PMEDIA=idehd PSUBDIR=puppy
initrd /puppy/initrd.gz
title Puppy Linux (pup2usb)
root (hd0,5)
kernel /puppy/vmlinuz PMEDIA=idehd PSUBDIR=puppy
initrd /puppy/initrd.gz
以下是boot.ini的代码:
[boot loader]
timeout=15
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /NoExecute=AlwaysOff
C:\AVLDR="启动中天维护杀毒版WinPE系统"
C:\ubnldr.mbr="UNetbootin"
C:\wubildrd.mbr = "Ylmf_OS-hd"
C:\GRLDR="Puppy Linux (pup2usb)"
作者:
wenliangyu
时间:
2011-2-15 21:31
http://bbs.znpc.net/viewthread.php?tid=3290
bean 发表于 2007-5-6 22:23
缺省菜单是在grldr第二扇区中,找到/menu.lst并把它改为/rising/menu.lst就行了。
也可以修改内置菜单,把它改为这样:
timeout 1
fallback 1
title find /rising/menu.lst
find --set-root --ignore-floppies /rising/menu.lst
configfile /rising/menu.lst
title find /boot/grub/menu.lst
fallback 2
find --set-root --ignore-floppies /boot/grub/menu.lst
configfile /boot/grub/menu.lst
title find /grub/menu.lst
fallback 3
find --set-root --ignore-floppies /grub/menu.lst
configfile /grub/menu.lst
title commandline
commandline
title reboot
reboot
title halt
halt
不过使用这种方法时,要确定在根目录里没有menu.lst文件,否则会直接使用该菜单,而不使用内置的菜单。
作者:
wenliangyu
时间:
2011-2-15 21:40
看了这些,但还是有点不肯定。第二扇区缺省菜单、内置菜单、外部菜单,三者的优先级是怎样的?从bean以前的描述,似乎是首先根据第二扇区的指定位置寻找外部菜单,如果找不到,就使用内置菜单,内置菜单采取find和configfile搭配,实现对外部多个位置寻找菜单并加载。如果还找不到,就使用内置菜单。
作者:
chenall
时间:
2011-2-15 23:22
与其花这么多时间找这些相对来说不是很重要的东西,
还不如花点时间认真读一下GRUB4DOS_README
相信会有帮助的。
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3