无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
1321#
发表于 2011-10-2 23:55:47 | 只看该作者

回复 #1310 chenall 的帖子

如果ud盘无可见区,bd又当指向哪里?
回复

使用道具 举报

1322#
发表于 2011-10-3 00:11:43 | 只看该作者
2011-10-02版grldr测试:
菜单中的goto 命令在0pe菜单中有时会失灵。换用fallback --go正常。

[ 本帖最后由 zxw 于 2011-10-3 00:47 编辑 ]
回复

使用道具 举报

1323#
发表于 2011-10-3 00:43:00 | 只看该作者

回复 #1325 Plantsoot 的帖子

没有可见区?嗯,有这种可能。bd指向了一个不存在的设备?
回复

使用道具 举报

1324#
发表于 2011-10-3 08:32:30 | 只看该作者
试试这个

另外没有可见区,访问的应该是(ud)的内容.没有可见区时分区号是0,所以访问的应该是整个磁盘的内容即(ud)

你们可以试一下,因为后面的版本有直接支持fb的文件系统,即使不从fb启动也可以访问.

[ 本帖最后由 chenall 于 2011-10-3 08:33 编辑 ]

grub4dos-0.4.5b-2011-10-03.7z

263.3 KB, 下载次数: 65, 下载积分: 无忧币 -2

回复

使用道具 举报

1325#
发表于 2011-10-3 09:08:35 | 只看该作者

回复 #1328 chenall 的帖子

没有可见区的情形暂时无法测试,#1326反馈的问题已解决。
回复

使用道具 举报

1326#
发表于 2011-10-3 11:01:32 | 只看该作者

回复 #1324 fdd_ds 的帖子

你自己搜相关的帖子吧。这种问题,都不是 grub4dos 的问题。

pseudo 等人解决过这类问题。你可以搜搜看。

顺便说,这问题之所以没人答复,就是因为这是已经弄明白了的问题,不属于 grub4dos 的 bug。

-------

补充:

如果你觉得是新版 grub4dos 的 bug,你可以帮助开发者找出首次出现 bug 是在哪一天?

[ 本帖最后由 不点 于 2011-10-3 11:07 编辑 ]
回复

使用道具 举报

1327#
发表于 2011-10-3 11:55:15 | 只看该作者
ud无可见区和有可见区的情况稍微对比了一下。
新旧版本对于ud盘,boot_drive 的定义是不同的。
另外,grldr不放在ud,放在可见区貌似会找不到文件。

这个测试可能没什么意义……








[ 本帖最后由 Plantsoot 于 2011-10-3 12:09 编辑 ]
回复

使用道具 举报

1328#
发表于 2011-10-4 03:38:58 | 只看该作者
(bd)的问题就在本帖前面都讨论过很多次了,无非就是一个“第一启动设备的问题”,这是个很实用的需求。
Chenall可以考虑个方案增加一个变量来记录,对于明确用grldr启动的应用,会方便不少。在有新的实现之前,只能通过修改grldr内置菜单来自己记录。

(bd)目前的实现我觉得挺方便,通过合理的组织文件目录,可以用的统一的方式来访问菜单所在设备的文件。比如U盘可能被识别为FDD或HDD时,虽然有其它方法也能判断,但没有(bd)方便。
在多个分区同时存在可用的menu.lst,要命的是它们还有部分文件或目录相同时,第一启动设备相对于目标分区,显然后者更重要。
回复

使用道具 举报

1329#
发表于 2011-10-4 08:24:51 | 只看该作者
原帖由 不点 于 2011-10-3 12:44 发表
我想把 dd 的默认缓冲区移动到扩展内存上

关于内存使用,我们以前有这样的描述:
引用:
现在 grub4dos 本身对常规内存的占用情况如下:

00000~10000 被 grub4dos 的程序代码和堆栈占用。
10000~20000 为 grub4dos 将来的代码和数据保留。
20000~30000 被 dd 命令的磁盘缓冲区占用。grub4dos 内核中的自动几何参数探测的缓冲区也占用这个区域。
30000~38000 被 grub4dos 内核中的常规磁盘读写缓冲区占用。
38000~40000 保留给 grub4dos 将来的扩展。

用户程序可以使用 0x40000 以上的空间。但建议只使用少量的空间,例如几个 KB。
但是现在发现,这样做不太安全。由于 geometry 命令有可能破坏 0x20000 处的内容,所以,使用 dd 命令的时候,就不安全了。

因此,想把 dd 命令的默认缓冲区移动到扩展内存中。

在扩展内存中,位于 3M 开头的一部分空间,目前是不是没有使用?我不知道 chenall 使用了没有。

这样,0x20000 处的空间,就专门供 geometry 使用了。

这样就安全了,因为 很多命令都可能调用 geometry ,如果 geometry (擅自)修改了内存,很容易引起冲突。尤其是 dd 命令也有可能调用 geometry 命令。打开文件,读写文件,都可能有调用 geometry 的动作。

而让这个空间被 geometry 专用,就不会冲突了。

原帖由 不点 于 2011-10-3 14:24 发表
已经把 dd 的 buffer 从 0x20000 挪动到 0x100000 (即 1M 处)了。

希望别的代码没有使用 1M 处的 64K 空间。

顺便说,也终于把 0x50000 - 0x5FFFF 的空间腾出来了,可供用户使用了。

测试一下吧。  


http://bbs.znpc.net/viewthread.p ... fromuid=29#pid48944

[ 本帖最后由 chenall 于 2011-10-4 08:27 编辑 ]
回复

使用道具 举报

1330#
发表于 2011-10-5 13:21:05 | 只看该作者

回车正常进入命令行。此时,再作如下图操作:



不点2011-10-01版本,输入M回车后会正常回到内置菜单。
而2011-10-04版本如图还是命令行,此时按Esc可回到内置菜单。
======================================
追踪了一下,2011-10-02版本、不点2011-10-03版本,也不能正常回到内置菜单。
应该是2011-10-02版本对“批处理相关代码微调”引进了bug.

[ 本帖最后由 zxw 于 2011-10-5 13:49 编辑 ]
回复

使用道具 举报

1331#
发表于 2011-10-5 13:53:38 | 只看该作者

回复 #1334 zxw 的帖子

我的测试是正常的...??
回复

使用道具 举报

1332#
发表于 2011-10-5 13:55:45 | 只看该作者

回复 #1335 chenall 的帖子

前提是先按图1按c回车进入命令行,再作图2的操作。貌似是r217精简代码所致。

[ 本帖最后由 zxw 于 2011-10-5 13:57 编辑 ]
回复

使用道具 举报

1333#
发表于 2011-10-5 14:36:40 | 只看该作者
这个是正确的,因为进入命令行时还是处于批处理的进程中。

这时再从这个进程里面启动批处理,执行CONFIGFILE。

因为configfile命令需要没有任何进程的情况下才会启动。

如果是在批处理中会自动退出所有进程。但是COMMANDLINE需要用户手工退出。

你的第一个测试按C进入命令行之后这时的批处理还没有退出,
再次启动一个批处理,执行了configfile,它就直接返回前一个批处理的环境,只要退出了这个批处理configfile才会被执行。

之前的版本没有处理这个问题,所以可以启动,但是前一个进程占用的内存和环境就无法释放了。

configfile命令比较特殊,它是不可返回的命令,为了尽量减小影响,要求没有任何进程运行时才会执行。

[ 本帖最后由 chenall 于 2011-10-5 14:39 编辑 ]
回复

使用道具 举报

1334#
发表于 2011-10-5 14:38:11 | 只看该作者

回复 #1337 chenall 的帖子

但2011-10-01前的版本configfile一直可以退出批处理环境.


>>之前的版本没有处理这个问题,所以可以启动,但是前一个进程占用的内存和环境就无法释放了。
>>configfile命令比较特殊,它是不可返回的命令,为了尽量减小影响,要求没有任何进程运行时才会执行。

执行configfile命令后,本来就没想要返回,我个人认为应该无条件退出批处理环境。

哦,这样就无法释放前一个进程占用的内存和环境么?

[ 本帖最后由 zxw 于 2011-10-5 14:47 编辑 ]
回复

使用道具 举报

1335#
发表于 2011-10-5 14:47:13 | 只看该作者

回复 #1338 zxw 的帖子

之前的版本虽然可以运行,但是实际上没有并没有退出批处理环境,占用了一个进程号。。

你可以尝试一下用旧版的看看运行几次之后将会无法运行任何批处理。有时可能会重启或死机。。
回复

使用道具 举报

1336#
发表于 2011-10-5 14:52:01 | 只看该作者

回复 #1339 chenall 的帖子

明白了,以前测试过,运行6次后会重启。原来新版解决的就是这个。嗯,这样更强壮了。

[ 本帖最后由 zxw 于 2011-10-5 15:06 编辑 ]
回复

使用道具 举报

1337#
发表于 2011-10-5 17:33:33 | 只看该作者
我用10.04更新的grub4dos里面的ldr
也用了最新的unifont,中文可以显示。
但是color命令不管用,都是黑色的

是什么回事呢
回复

使用道具 举报

1338#
发表于 2011-10-5 17:50:21 | 只看该作者

回复 #1332 tuxw 的帖子

这种明显的需求老大们好像不感兴趣!
回复

使用道具 举报

1339#
发表于 2011-10-5 22:10:32 | 只看该作者
MESSAGE菜单链接到unifont (bd)/BOOT/GRUB/FONTS菜单
一般都会发生乱码现象。但是可以用这个方法解决
例如:第一个菜单
debug off
root (bd)
checkrange 0x80 read 0x8280 && set bd=hd
checkrange 0x0 read 0x8280 && set bd=fd
checkrange 0x9f:0xff read 0x8280 && set bd=cd
checkrange 0x21 read 0x8280 && set bd=pd
checkrange 0x23 read 0x8280 && set bd=ud
unifont --unload
default 3
gfxmenu ()/BOOT/GRUB/MESSAGE || find --set-root /BOOT/GRUB/MESSAGE && gfxmenu ()/BOOT/GRUB/MESSAGE
configfile (md)4+8
title 【 4 】  运行可见区外置PE/LINUX >>>
configfile ()/ABC/ISO.LST || find --set-root /ABC/ISO.LST && configfile ()/ABC/ISO.LST

第二个菜单(即处于另一个分区的ISO.LST文件)
debug off
find --set-root --ignore-floppies /BOOT/GRUB/USB_ACC.0PE
command --set-path=(bd)/BOOT/GRUB/
unifont (bd)/BOOT/GRUB/FONTS
background 004A00
foreground ffffff
set n=按下序号数字并回车,将进入相应菜单
default 12
title
clear
title          ☆ 外置PE/Linux菜单 ☆
clear
title ────────────────────────────
clear
title  03  加载FIRADISK模块-(fd0)  \n\n   加载FIRADISK.IMG到(fd0),完成后返回此菜单。
cat --length=0 ()/BOOT/IMGS/FIRADISK.IMG || find --set-root ()/BOOT/IMGS/FIRADISK.IMG
map --mem ()/BOOT/IMGS/FIRADISK.IMG (fd0)
map --hook
cat --length=0 /ABC/ISO.LST || find --set-root /ABC/ISO.LST
configfile /ABC/ISO.LST

有了find、command --set-path、unifont 这三行,不管第二个菜单处于哪个分区,和第一个菜单分列在多么不同的设备上,都不会发生中文乱码现象。
这是我经过多次试验得出来。

但是,这几天换了10月新版的grldr,发现这个方法失效了。应该是新版关于bd新定义的影响,

也可能以前我是利用了旧版grldr的bug实现的吧……

但是换了新版后,我仍然希望实现这个功能,应该怎么做呢?

附:所有菜单编码仍然使用utf-8 不必改别的.
测试用的第一个菜单位于C盘,第二个菜单位于F盘。C盘有/BOOT/GRUB/目录,F盘无。

[ 本帖最后由 tingyue-wu 于 2011-10-5 22:36 编辑 ]
回复

使用道具 举报

1340#
发表于 2011-10-5 23:50:35 | 只看该作者
checkrange 0x23 read 0x8280 && set bd=ud
这个新版g4d不灵了吧。
回复

使用道具 举报

1341#
发表于 2011-10-6 03:33:17 | 只看该作者
10月4日的改动,有太多的问题。我目前发现的就有这两个:

1、原来执行 configfile (hd0,0)/menu.lst 之后,bd 和当前root都会变成 (hd0,0),可现在保持不变了。这是严重的不兼容。

2、同样执行上述  configfile (hd0,0)/menu.lst 之后,timeout 也强制变成 0 了,menu.lst 中设置的 timeout 不起作用。

目前没问题的版本是 9 月 28 日的。

[ 本帖最后由 不点 于 2011-10-6 03:35 编辑 ]
回复

使用道具 举报

1342#
发表于 2011-10-6 08:10:24 | 只看该作者

回复 #1345 不点 的帖子

1.我试了一下,好像是正常的啊,很早的版本就是这样子的,configfile不会改变当前root(这个或许是BUG),很早的时候我就发现了,只是觉得这个是正常的。

   新版的改动
   rd,configfile (rd)+1不改变boot_drive,
   fb,  从fb启动时不会额外处理boot_drive,即恢复原来的样子。
   因为目前没有比较好的办法确定是否从fb启动的,前面的版本只是判断了ud是否存在,处理看起来是正常的,其实有BUG, 从fb启动后,再chainloader 任意一个grldr都不会改变boot_drive,因为(ud)还存在。

2.我试了好像没有问题啊。我没有改动这一部份的内容。
回复

使用道具 举报

1343#
发表于 2011-10-6 08:15:39 | 只看该作者

回复 #1342 hhh333 的帖子

你们也许认为这个处理很简单,其实是挺麻烦的,需要的变动太大,并且还会造成不兼容的后果。

还有一点,这个boot_drive的值并不一定正确,这个取决于启动GRLDR的程序是否有把正确的值传递过来。所以也就没有什么意义了。

也许以后考虑内置一个只读变量@boot,在GRLDR启动初始化的时候就写入到变量中。这样就解决问题了,可能会比较简单一些。
回复

使用道具 举报

1344#
发表于 2011-10-6 09:02:28 | 只看该作者

回复 #1342 hhh333 的帖子

1343楼我的需求似乎也没人关注呢。
回复

使用道具 举报

1345#
发表于 2011-10-6 09:19:06 | 只看该作者

回复 #1348 tingyue-wu 的帖子

抱歉,我从来没有用过gfxmenu,你的问题,我也没有看明白。

另外,你可以看看前面的贴子
还有这里
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

新的版本改动相关
回复

使用道具 举报

1346#
发表于 2011-10-6 13:03:41 | 只看该作者

回复 #1347 chenall 的帖子

有需求就想尽一切办法解决,我们有时候会碰到到了实在不想再努力即将放弃的那一刻却突然柳暗花明了!

“也许以后考虑内置一个只读变量@boot,在GRLDR启动初始化的时候就写入到变量中。这样就解决问题了,可能会比较简单一些....”

也是一个好办法。

虽然这个@boot设备也许不特别准确,但只要是grldr认为的“第一启动设备”就OK了!寻找真正的“第一启动设备”确实有意义但也许真的是“不可能完成”的任务。我们现在能够做的是尽量确定“grldr认为的第一启动设备”。

另外,想问一下如果grldr调用grldr时,第一个的@boot与第二个的@boot如何处理?是不是总是最后一个的@boot?还是无论调用多少个总是第一个的@boot?这个还真有点复杂!

[ 本帖最后由 hhh333 于 2011-10-6 13:05 编辑 ]
回复

使用道具 举报

1347#
发表于 2011-10-6 13:31:28 | 只看该作者

回复 #1350 hhh333 的帖子

要不@boot和@boot-1两个变量
@boot表示永远是第一个grldr所处的位置是bd
@boot-1表示当下里,最后一个调用的grldr所在位置是bd

怎么样呀
回复

使用道具 举报

1348#
发表于 2011-10-6 14:06:36 | 只看该作者

回复 #1350 hhh333 的帖子

GRLDR再调用另一个GRLDR时就相当于重启了全新的环境,以新的为准,并且所有的以前的变量都会消失。

说实在的GRLDR再调用GRLDR感觉完全没有必要。
回复

使用道具 举报

1349#
发表于 2011-10-6 15:49:05 | 只看该作者

回复 #1352 chenall 的帖子

貌似我用grldr(有挂unifont),再去调用改名了的grldr(没加载unifont)启动menu.lst,造成全部的乱码
回复

使用道具 举报

1350#
发表于 2011-10-6 16:47:51 | 只看该作者

回复 #1353 小豪diao 的帖子

调用改名了的grldr

就是取消所有之前参数,一切都重新设置了

所以你必须重新加载unifont
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-23 23:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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