无忧启动论坛

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

grub4dos 外部命令 wenv [2010-10-17 ]

  [复制链接]
61#
发表于 2010-2-7 11:35:31 | 只看该作者

回复 #60 不点 的帖子

谢谢不点
我从来不用图形模式,怪不得我怎么试都没试出outline on 之后有什么区别

关于module
是不是就是说,载入 kernel 模块后
如果该引导系统还要求载入其他模块,除了initrd初始化内存模块,其他模块则必须通过module 或 modulenounzip载入
回复

使用道具 举报

62#
发表于 2010-2-7 12:32:12 | 只看该作者

回复 #59 NicTense 的帖子

手头有(fd0,0 )的环境吗?
这种环境下0PE(1220以后版本)能否直接启动?
回复

使用道具 举报

63#
发表于 2010-2-7 12:36:43 | 只看该作者

回复 #62 pseudo 的帖子

被我格式化成usb-fdd了
貌似我测试的结果,grub4dos无法处理(fd0,0)的情况,会导致mount分区错误
只要在内置菜单最开始加上这行
checkrange 0 read 0x8280 && checkrange 0 calc 0=*0x8208 >> 16 && root (fd0) && calc *0x8208 | 0xff0000
问题就解决了

这个跟0pe应该没什么关系
因为如果不修改以上内存值,则root分区和(bd)都是不可读的,u盘上任何文件包括menu.lst都无效,0pe也不例外


但是我目前不确定的是

在我的电脑上 grub4dos将启动设备定位为 (fd0,0)但是又无法mount分区,必须重新定位为(fd0)才能工作

这种情况对grub4dos来说,不知道是通性,还是特例

我不知道在其他电脑上,grub4dos是否能处理(fd0,0),反正在我的电脑上是不行的

[ 本帖最后由 NicTense 于 2010-2-7 12:40 编辑 ]
回复

使用道具 举报

64#
 楼主| 发表于 2010-2-7 22:39:06 | 只看该作者
可以试试以下的方法解决

checkrange 0 read 0x8280 && root (fd0) || calc *0x829c=0xffff

检测当前root设备是否为(fd0).如果是的话再检测(fd0)是否可以访问,
如果不行就修改为(fd0,0)
回复

使用道具 举报

65#
发表于 2010-2-7 23:02:25 | 只看该作者
回复 #63 NicTense 的帖子

还是想知道(fd0,0 )环境下0pe的情况,执行到哪句出问题。
如果卡在无参数root处(只为显示调试信息),可删掉该行(0pe的grldr内置菜单用fbinsttool编辑),应该就可以启动了。

回复 #64 chenall 的帖子

&&、||现在可以连用、嵌套了? 跟]]&等有何区别?
回复

使用道具 举报

66#
发表于 2010-2-7 23:14:03 | 只看该作者

回复 #65 pseudo 的帖子

其实不用测试的,你看菜单就知道在哪行,反正如果不加上面那行的话,读任何文件都会出错
root也会出错,返回false,但是不会影响继续执行下面的语句
用find是可以的,因为会重新定位root,但是find我不喜欢的原因是经常定位到硬盘去了(有同样目录同样文件的情况下)

&& ||是内部符号,]]&是外部命令的wenv的符号
&& ||的逻辑关系是,先从第一个顺序判断,当值与后面的符号相符时,则继续执行,否则,跳到后面的第一个!处继续执行
回复

使用道具 举报

67#
 楼主| 发表于 2010-2-7 23:19:26 | 只看该作者

回复 #65 pseudo 的帖子

这个新版未公开的功能

具体可以参考NicTense 的解释.还有本贴前几页也有相关的介绍.

另外calc也是新版的内部命令.
回复

使用道具 举报

68#
发表于 2010-2-7 23:20:38 | 只看该作者
原帖由 chenall 于 2010-2-7 22:39 发表
可以试试以下的方法解决

checkrange 0 read 0x8280 && root (fd0) || calc *0x829c=0xffff

检测当前root设备是否为(fd0).如果是的话再检测(fd0)是否可以访问,
如果不行就修改为(fd0,0)



这个方法如果像我那种情况就不能完美解决

root (fd0) 返回正,但是(bd)依然是(fd0,0),所以凡是用到(bd)的就会出错,比如

command的默认路径

我现在就是不知道有没有一些u盘是必须(fd0,0)才能读取,而(fd0)则不行的
回复

使用道具 举报

69#
 楼主| 发表于 2010-2-7 23:29:50 | 只看该作者
我CSPE里面就把CSPE所在文件夹设置为bd了

首先菜单前面用一句root (bd)
检测完以后再修改(bd)为当前root
calc *0x8280=*0x82A0
calc *0x8208=*0x829C

这样不管后面的命令用到多少find --set-root
都可以通过(bd)/cspe/xxx
来访问文件,省去了来回转换root的麻烦.
回复

使用道具 举报

70#
发表于 2010-2-7 23:52:31 | 只看该作者

回复 #66 NicTense 的帖子

ls ()/grldr会出错?
回复

使用道具 举报

71#
发表于 2010-2-7 23:55:38 | 只看该作者
原帖由 pseudo 于 2010-2-7 23:52 发表
ls ()/grldr会出错?


当然,()=(fd0,0),会显示无法mount当前分区的
回复

使用道具 举报

72#
发表于 2010-2-9 03:56:27 | 只看该作者
我将另外一个u盘格式化为usb-zip,这次更厉害
启动需要大概5分钟才能进入grub引导界面
进去后我看了一下
(bd)和(root)被定位为 (fd0,3)
由于zip格式天生异丙,唯一的一个分区是占用mbr中第4个分区项的
就是不知道为什么同样是zip,同样是写的第4项,之前那个就是 (fd0,0),而这个是 (fd0,3)

不过被认作(fd0,0)和(fd0,3)的后果相差很大
前者不影响引导到grub的速度,所以只须改写2个内存值就可以解决问题
而后者,到执行内置菜单第一行程序的时候就需要5分钟
改写内存值的命令行也要等5分钟才会被执行到。。。太郁闷了
我明天试试把 分区表的值改一下,把第4项复制到第1项看看怎么样
回复

使用道具 举报

73#
 楼主| 发表于 2010-2-9 13:15:08 | 只看该作者
嘿嘿,还是弃用ZIP格式吧,能HDD就用HDD
速度快,兼容性也比较好.
回复

使用道具 举报

74#
发表于 2010-2-9 15:27:44 | 只看该作者

回复 #73 chenall 的帖子

hdd的确是最好的,唯一的问题是默认情况下会占用第一硬盘位置,但这个对grub4dos来说不是问题,而且pe也有盘符整理程序

但是问题是,稍微老一点点的电脑,(3年以前的)很多都不支持hdd的

这种情况下,fdd也比zip强,特别是对grub4dos来说

看样子grub4dos对zip的容错处理非常差

不过zip有一个优势

就是既有可能被支持fdd的认作fdd,也有可能被支持hdd的认作hdd

只要能支持u盘启动的电脑,无论支持哪种格式,基本上都能检测到zip格式的u盘
剩下的问题就是能不能成功启动了

所以如果能找到zip被认出后却不能成功启动出错的原因所在,并解决了这个问题的话
zip格式是最有希望能在最多电脑上都能启动的格式
回复

使用道具 举报

75#
 楼主| 发表于 2010-2-9 17:33:32 | 只看该作者
OK,更新了,修正了当内存低于128MB时不能运行的问题.
回复

使用道具 举报

76#
发表于 2010-2-9 22:27:58 | 只看该作者
被忽悠了
我知道usb-zip出错的根本原因了
在启动初期,即执行内置菜单之前
grub4dos读到的是启动扇区的0扇区
然后在这里会卡上5分钟
但是从执行内置菜单开始
则会跳过前32个扇区,也就是(fd0)+1实际上是 (fd0)+32
然后就会卡死,如果这个时候把u盘拔出
再插入,则(fd0)的前32个扇区彻底被忽略
这时只要修正(bd)和root区就可以正常读写

而且我在两个电脑(一个海尔a10和一个微型u100)都是一样的结果
用bootice格式化的usb-zip

试了usboot格式化的usb-zip,区别就是bootice的zip格式是标准的zip格式,仅有一个分区位于最后一个分区项
而usboot则是设在第一个分区项,所以会有(fd0,3)和(fd0,0)的区别
但无论哪个,结果都是悲剧

算了,我放弃usb-zip了。。。。

[ 本帖最后由 NicTense 于 2010-2-9 22:48 编辑 ]
回复

使用道具 举报

77#
发表于 2010-2-9 23:04:03 | 只看该作者
对了,有个问题想确认一下
find的查找顺序是 优先从(bd)查找,还是按设备号的顺序查找

还有就是,是不是所有版本(不点和chenall的版本)都是统一的查找顺序的?
回复

使用道具 举报

78#
发表于 2010-3-8 17:08:02 | 只看该作者
原帖由 chenall 于 2010-2-4 18:48 发表
我想这样的grldr应该基本能够满足像
if xxx else之类的要求了

虽然效果不是很理想..但是勉强可以用.

新增加了一个 ! 符号必须配合&& ||使用.

前面的语句执行出错时就跳到!后面执行

例子
当echo外 ...


学到了,又
回复

使用道具 举报

79#
发表于 2010-5-9 21:03:12 | 只看该作者
时空不好进,在此反馈一个bug,可能与这个主题无关,但用最新版0503的splashimage出错,错误表现

     出错语句:splashimage /BOOT/GRUB/BACK.XPM.GZ。

1、当调用文件位于NTFS分区时出现,运行至此屏幕左上出现一个横线光标,但并未死机,且可“摸黑”进菜单项。
2、将文件解开,但NTFS分区形式不变,可以进入。
3、文件不变,但将磁盘格为FAT32,故障消失。
4、其他位于光盘上时也无问题。
回复

使用道具 举报

80#
 楼主| 发表于 2010-5-9 22:33:29 | 只看该作者
哪个版本可以,哪个版本不行?

还是哪版本以后全部不行?
回复

使用道具 举报

81#
发表于 2010-5-10 09:21:40 | 只看该作者

回复 #80 chenall 的帖子

刚才将手头有的版本都测试了一下,090331发布的0.44及其以后的到100503均不行,前面的版本未测试。
把我的图传一个给你吧: BACK.XPM.GZ (2.23 KB, 下载次数: 104)

这个应该是一个重要而明显的bug,以前难道没人碰到?应该是将g4d安装到NTFS时且使用压缩格式的背景时出现。应该不是我测试的问题,开始是bootmgr->grldr.mbr->grldr,后面又用ntldr->grldr,故障依旧。看过此帖的网友都可试一下。

[ 本帖最后由 hhh333 于 2010-5-10 09:49 编辑 ]
回复

使用道具 举报

82#
发表于 2010-5-10 09:34:22 | 只看该作者
哦...謝謝LZ分享 用上了額 哈哈 感恩~
回复

使用道具 举报

83#
发表于 2010-5-10 10:32:27 | 只看该作者
@hhh333
换个背景图试试?换个压缩后体积6K以上的。
回复

使用道具 举报

84#
发表于 2010-5-10 11:08:43 | 只看该作者
有个地方不理解,请大大解释一下:
0x800开始的8个扇区(4kb)存放的是内置菜单

动态执行命令
write (md)0x300+1 map --status\0
wenv run *0x60000
上面的0x300怎么理解?测试结果是正确的。
回复

使用道具 举报

85#
发表于 2010-5-10 11:47:50 | 只看该作者
@zhaohj:

0x300 是扇区序号。物理地址就是 0x300 * 0x200 = 0x60000 了。

@all

back.xpm.gz 文件有个对应的 8.3 格式的短文件名 backxp~1.gz,这个打开却是正常的。估计问题出在 NTFS 驱动程序内部。chenall 看看能否解决,实在不行,请 bean 来解决。

注意,在 grub 命令行之下,可以比较 FAT32 之下的和 NTFS 之下的内容相同的文件:

cmp (hd0,0)/back.xpm.gz (hd0,7)/back.xpm.gz

还可以用

cat --length=120 (hd0,0)/back.xpm.gz
cat --length=120 (hd0,7)/back.xpm.gz

来比较两个文件开头的差别。
回复

使用道具 举报

86#
发表于 2010-5-10 14:18:50 | 只看该作者
谢谢不点!
write写入设备时(此处是(md))以是扇区序号来表示的,如果是整个设备,表示整个设备的全部扇区。


做了两个IMG,一个fat,一个ntfs(启用压缩),没发现差异

[ 本帖最后由 zhaohj 于 2010-5-10 14:37 编辑 ]

Snap1.jpg (93.41 KB, 下载次数: 239)

Snap1.jpg
回复

使用道具 举报

87#
发表于 2010-5-10 14:53:15 | 只看该作者
在虚拟机硬盘上也未见差异

[ 本帖最后由 zhaohj 于 2010-5-10 15:02 编辑 ]

Snap2.jpg (104.57 KB, 下载次数: 248)

Snap2.jpg

Snap3.jpg (171.01 KB, 下载次数: 267)

Snap3.jpg
回复

使用道具 举报

88#
发表于 2010-5-10 15:07:14 | 只看该作者

回复 #83 pseudo 的帖子

确实与兄弟推测的一样,换了个41KB的压缩文件,故障消失!

[ 本帖最后由 hhh333 于 2010-5-10 15:09 编辑 ]
回复

使用道具 举报

89#
发表于 2010-5-10 15:17:33 | 只看该作者
发现一个问题,在NTFS上第一次读会读不出这个文件。可能这就是问题所在。我在真实机器上测试也是如此。
这个问题在虚拟机上可以重现!

而FAT上就不会出现这个问题。

[ 本帖最后由 zhaohj 于 2010-5-10 15:38 编辑 ]

Snap1.jpg (129.04 KB, 下载次数: 263)

Snap1.jpg
回复

使用道具 举报

90#
发表于 2010-5-10 15:54:18 | 只看该作者
进一步测试,find没问题,是不是gz有问题?

Snap1.jpg (90.53 KB, 下载次数: 255)

Snap1.jpg
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 19:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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