无忧启动论坛

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

[已解决] 写菜单时怎么保持根设备(初始启动设备)不变?

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-14 21:37:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不管内置 还是外置菜单,不管切换了多少个菜单,转过了几个分区、几个设备,不管用了多少个configfile命令

都能保持初始设备不变,这样的菜单开头怎么写/

我本来以为用find命令可行,例如每个菜单开头写上
debug off
find --set-root /BOOT/GRUB/USB_ACC.0PE
就能保持根设备不变了,但是其实不行,切换了几个菜单之后,一些命令就不能用了 如ls 、run(外部模块)等

应该怎么写开头?

得chenall指点 把菜单复制进内存再加载可以解决问题。

[ 本帖最后由 tingyue-wu 于 2011-8-15 11:32 编辑 ]
2#
发表于 2011-8-14 22:05:58 | 只看该作者
configfile (hd0,x)/menu.lst应该不会改变根吧,按我理解只是读取(hd0,x)/menu.lst配置菜单,

没刻意试过,

debug off

find --set-root /BOOT/GRUB/USB_ACC.0PE

不明白debug off的含义,但find --set-root /boot/grub/usb_acc.ope就已经改变根了啊。

我是菜鸟。

坐等高人。。。  - -b!

[ 本帖最后由 2011hcxp 于 2011-8-14 23:30 编辑 ]
回复

使用道具 举报

3#
发表于 2011-8-14 23:32:38 | 只看该作者
但按我理解的意思,如果不想改变根,就应该避免root (hd0,x)和find --set-root /出现在菜单中。
回复

使用道具 举报

4#
 楼主| 发表于 2011-8-15 07:40:53 | 只看该作者
find --set-root --ignore-floppies (bd)/BOOT/IMGS/FIRADISK.IMG
error 42:the leading DEVICE of the filename to find must be stripped off,and DIR for set-root must begin in a slash(/)

什么意思?

我的菜单命令是
find --set-root --ignore-floppies (bd)/BOOT/IMGS/FIRADISK.IMG
ls (bd)/BOOT/IMGS/
echo
echo
回复

使用道具 举报

5#
发表于 2011-8-15 08:20:35 | 只看该作者
目前只有configfile 一块内块菜单时不会改变(bd)的值.即configfile (md)x+y 的形式

所以你可以试试如下方法,先把菜单写入到内存中,然后再调用.

dd if=(xx)/path/file.lst of=(md)0x200+16
configfile (md)0x200+16
回复

使用道具 举报

6#
 楼主| 发表于 2011-8-15 09:23:28 | 只看该作者

回复 #5 chenall 的帖子

谢谢 指点 我试试
回复

使用道具 举报

7#
发表于 2011-8-15 10:18:57 | 只看该作者
dd if=(xx)/path/file.lst of=(md)0x200+16
configfile (md)0x200+16
又学了一招,这招够直接
回复

使用道具 举报

8#
 楼主| 发表于 2011-8-15 11:18:48 | 只看该作者
很好用 。现在不管串接多少菜单也不会出现命令失效的问题了,真的很强。甚至感觉切换菜单也快了(呵呵 纯属错觉)
回复

使用道具 举报

9#
发表于 2011-8-16 09:39:50 | 只看该作者
我也一直希望给configfile加个参数,以解决上面的问题。
实际使用环境用户都不希望configfile破坏(bd)及()
如configfile --ignore-init
----------------
不过现在事情也简单,可以使用setlocal
回复

使用道具 举报

10#
 楼主| 发表于 2011-8-16 10:24:31 | 只看该作者
setlocal  ??
设置临时环境变量 置顶教程有吗?

给个例子怎么写
回复

使用道具 举报

11#
发表于 2011-8-16 13:51:06 | 只看该作者
setlocal
configfile (xxxx)/xxxx/file.lst

在(xxxx)/xxxx/file.lst的第一行里面写上endlocal

这样就会恢复setlocal之后的变量变动,也同时恢复了原来的BOOT DRIVE

如果你的菜单需要用到变量,不建议使用,因为会恢复到之前状态.可能会影响执行结果.
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-24 01:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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