无忧启动论坛

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

[已解决] grub4dos默认预置菜单问题

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-19 21:01:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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  吗?
2#
发表于 2013-12-21 13:04:54 | 只看该作者
本帖最后由 不点 于 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 启动时,应该着重考虑 “成功率” 问题,而不是使用的 “方便性” 问题。世上没有完美的事情,无论怎么做,总是有缺憾的。因此,这是哲学的 “权衡” 问题。



点评

如果是用U盘启动那这个设定就没有效果了吗? 那么他将根设备设定为(fd0)或(cd0),有什么意义? 原文: title find /menu.lst, /boot/grub/menu.lst, /grub/menu.lst #设置本项菜单的标题 errorcheck off #  详情 回复 发表于 2013-12-21 15:42

评分

参与人数 1无忧币 +5 收起 理由
1549957235 + 5

查看全部评分

回复

使用道具 举报

3#
 楼主| 发表于 2013-12-21 15:42:36 | 只看该作者
本帖最后由 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
#进入命令行模式
回复

使用道具 举报

4#
发表于 2013-12-23 16:31:57 | 只看该作者
if "%@root%"=="(ud)" && calc *0x82A0=*0x82b9&0xff
#如果当前ROOT是(ud),设置当前磁盘为(ud)所在磁盘,比如(fd0)或(hd0)

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

chenall 是什么?

自己在论坛搜一下吧。


点评

chenall是指更新维护grub4dos的大神吗? 我不明白为什么在这里说 听你这么一解释我就明白了.  详情 回复 发表于 2013-12-24 17:27

评分

参与人数 1无忧币 +3 收起 理由
1549957235 + 3

查看全部评分

回复

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-14 03:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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