无忧启动论坛

标题: grub4dos默认预置菜单问题 [打印本页]

作者: 1549957235    时间: 2013-12-19 21:01
标题: grub4dos默认预置菜单问题
本帖最后由 1549957235 于 2013-12-24 17:28 编辑

if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘,比如(fd0)或(hd0)

要设置当前ud为根磁盘不是应该这样:if "%@root%"=="(ud)" && calc *0x82A0=*0x8280  吗?
作者: 不点    时间: 2013-12-21 13:04
本帖最后由 不点 于 2013-12-21 13:22 编辑

如果是从 ud 启动的,就把当前盘设置为 ud 所在的宿主盘的盘号。

似乎这样做,也没什么好处吧?

chenall 是不是可以考虑修改一下?

我觉得,最好不要改变当前盘和当前分区号。

如果能够判断出 ud 的宿主盘是 (fd0),那么可以增加一个 “查找 (fd0) 里面的 menu.lst” 的命令。但是,不要更改当前盘号以及分区号。


备注:当前盘设置为 ud 是对的,因为更安全。ud 的扇区更靠近磁盘开头,所以,它比物理位置靠后的 PBR 扇区有更大的成功率。访问较大的扇区号,甚至会产生死机。因此,默认的菜单,应该照顾安全性,最大限度地保证启动的成功率。


备注2:甚至或许可以干脆注释掉这句。让 ud 启动的情况,不再查找可见区的 menu.lst 文件。用户或第三方开发者可以自己添加相应的命令。但作为随 grub4dos 发行的默认内置菜单,其成功率是最要紧的。所以,我们应该尽量消除这样的安全隐患。大家知道,ud 启动通常用于 U 盘,而 U 盘的毛病很多。正是在这样极端的情况下,才需要 ud 启动。因此,ud 启动时,应该着重考虑 “成功率” 问题,而不是使用的 “方便性” 问题。世上没有完美的事情,无论怎么做,总是有缺憾的。因此,这是哲学的 “权衡” 问题。




作者: 1549957235    时间: 2013-12-21 15:42
本帖最后由 1549957235 于 2013-12-21 17:39 编辑
不点 发表于 2013-12-21 13:04
如果是从 ud 启动的,就把当前盘设置为 ud 所在的宿主盘的盘号。

似乎这样做,也没什么好处吧?


如果是用U盘启动那这个设定就没有效果了吗?
那么他将根设备设定为(fd0)或(cd0),有什么意义?
chenall 是什么?

原文:
title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst
#设置本项菜单的标题

errorcheck off
#关闭错误检查模式
configfile /boot/grub/menu.lst
#尝试加载/boot/grub/目录下的menu.lst文件
configfile /grub/menu.lst
#尝试加载/grub/目录下的menu.lst文件
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘,比如(fd0)或(hd0)
if "%@root:~1,1%"=="f" && find --set-root --devices=f /menu.lst && configfile /menu.lst
#如果当前ROOT是fd设备,则在所有的fd设备根目录下查找menu.lst文件,找到的话就将该设备设为根,并加载该菜单文件
find --set-root --ignore-floppies --ignore-cd /menu.lst && configfile /menu.lst
#以上尝试均失败时在所有设备的根目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件
find --set-root --ignore-floppies --ignore-cd /boot/grub/menu.lst && configfile /boot/grub/menu.lst
#上一个查找失败时在所有设备的/boot/grub/目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件
find --set-root --ignore-floppies --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
#上一个查找失败时在所有设备的/grub/目录下查找menu.lst文件,忽略软驱和光驱设备,找到的话就将该设备设为根,并加载该菜单文件
errorcheck on
#打开错误检查模式
commandline
#进入命令行模式

作者: stevenldj    时间: 2013-12-23 16:31
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘,比如(fd0)或(hd0)

我的理解:
如果是从 (ud) 启动,则将 U 盘的可见区设置为 root,而不是 (ud) 区。“不点”老大说这样做不好,容易引起启动失败。

chenall 是什么?

自己在论坛搜一下吧。



作者: 1549957235    时间: 2013-12-24 17:27
stevenldj 发表于 2013-12-23 16:31
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘, ...

chenall是指更新维护grub4dos的大神吗?  我不明白为什么在这里说
听你这么一解释我就明白了.





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