无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: zhaohj
打印 上一主题 下一主题

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
2611#
发表于 2012-5-28 10:58:30 | 只看该作者
原帖由 不点 于 2012-5-26 14:05 发表
你能肯定不是那句的问题?你试验了?如果试验证实了,请明确一下,不要含糊。

iftitle 本来就是 “条件title”,它在显示菜单之前就要确定是否该显示了。所以,其中的条件很早就开始解析了。

你把那 fd0  ...

好的,我换一下最新版的grldr,不用那个条件语句,测试后报告。

报告:大侠说的对。换用最新版grldr,只要不用那个语句,不论在bios中是否关闭软驱,速度都很快。

[ 本帖最后由 一望无垠 于 2012-5-28 12:05 编辑 ]
回复

使用道具 举报

2612#
发表于 2012-5-28 15:42:36 | 只看该作者

回复 #2615 一望无垠 的帖子

呵呵,貌似几天前楼上在我帖里提到问题时,我已经回帖表达了
不要用那种语句、应该用zhaohj大提供的语句
的意思。
回复

使用道具 举报

2613#
发表于 2012-6-8 18:26:38 | 只看该作者
原帖由 一望无垠 于 2012-5-28 10:58 发表

好的,我换一下最新版的grldr,不用那个条件语句,测试后报告。

报告:大侠说的对。换用最新版grldr,只要不用那个语句,不论在bios中是否关闭软驱,速度都很快。


现在重新搞了一遍,应该更准确了:

  1. iftitle [if exist /MKRL/Win7PE/NV7PEKR1.IMG || find --set-root /MKRL/Win7PE/NV7PEKR1.IMG] 启动Win7PE(自适应模式)
  2. debug 1
  3. echo 正在以自适应模式加载WIn7PE,请稍后……
  4. set mem=
  5. checkrange 0x1:0x40000 read 0x8298 && set mem=
  6. calc *0x82b9&0xff || set mem=--mem ! set mem=
  7. dd if=(md)0+1 of=()/boot/grub/temp bs=512 count=1 || set mem=--mem
  8. if /i "%@root%"=="(cd)" set mem=--mem
  9. if /i "%@root%"=="(pd)" set mem=--mem
  10. if /i "%@root%"=="(fd0)" set mem=--mem
  11. if /i "%@root%"=="(fd1)" set mem=--mem
  12. map %mem% /MKRL/Win7PE/NV7PEKR1.IMG (hd0) || map --mem /MKRL/Win7PE/NV7PEKR1.IMG (hd0)
  13. map %mem% /MKRL/Win7PE/NV7PEKRL.IMG (0x9E) || map --mem /MKRL/Win7PE/NV7PEKRL.IMG (0x9E)
  14. map --mem ()/boot/TinyTools.LZMA (0xCE)
  15. map --mem /MKRL/Win7PE/MOUNT.GZ (hd17)
  16. checkrange 0x0 read 0x60006 && map --e820cycles=3
  17. map --unmap=0x5
  18. map --hook
  19. echo Finished loading!
  20. chainloader (hd0,0)/bootmgr
  21. root (hd0,0)
  22. boot
复制代码

这个应该万无一失,而且不会出现因为软盘司机的问题
回复

使用道具 举报

2614#
发表于 2012-6-11 22:43:22 | 只看该作者
title  1. 启动 Native WIN7PE 网络版echo -e \n$[0003]  正在加载Win7PE 网络版一级内核!echo -e \n$[0003]  此过程可能需要几分钟。。。。。。再加载这句echo -e \n$[0003]  正在加载Win7PE 网络版一级内核!echo -e \n$[0003]  此过程可能需要几分钟。。。。。。乱码。字体文件加载了,别的菜单显示正常。不知怎么办了

[ 本帖最后由 2011gg6698 于 2012-6-12 00:52 编辑 ]
回复

使用道具 举报

2615#
发表于 2012-6-13 10:37:01 | 只看该作者
报告06.06版的一个小问题:
set m=(md)0x3000+0x10
......
configfile %m% 无效
回复

使用道具 举报

2616#
 楼主| 发表于 2012-6-15 08:12:16 | 只看该作者
原帖由 xhwfq 于 2012-6-13 10:37 发表
报告06.06版的一个小问题:
set m=(md)0x3000+0x10
......
configfile %m% 无效


(md)0x3000开始的不是安全区域,是内核或外部命令需要使用的地方,明确禁止用户使用。
目前,0x60000开始的1KB,0x40000~0x44ff(20KB)可以作为用户临时使用内存,其他32M内都不要使用,尽量远离32M内。
回复

使用道具 举报

2617#
发表于 2012-6-15 08:42:21 | 只看该作者
原帖由 zhaohj 于 2012-6-15 08:12 发表


(md)0x3000开始的不是安全区域,是内核或外部命令需要使用的地方,明确禁止用户使用。
目前,0x60000开始的1KB,0x40000~0x44ff(20KB)可以作为用户临时使用内存,其他32M内都不要使用,尽量远离32M内。

1.教程中就是用(md)0x3000+0x10存放"动态"菜单的.
2.改为configfile (md)0x3000+0x10就可以了.
3.以前的老版本用configfile %m%也可以.
所以我觉得是是新版引入的小bug,特意报告一下,修正不修正都无所谓.
回复

使用道具 举报

2618#
 楼主| 发表于 2012-6-15 11:01:14 | 只看该作者
写入到内存6M开始的长度为8K的区域,也不是不可以,关键要看你在调用"动态"菜单前有没有那些命令会破坏这些区域。
高级用户会自己判断,一般用户建议不要使用。
回复

使用道具 举报

2619#
发表于 2012-6-15 11:47:51 | 只看该作者

回复 #2621 xhwfq 的帖子

下次更新教程会改正这个。。。新版不建议放在那个位置  最安全的地方是64M以后的空间
回复

使用道具 举报

2620#
发表于 2012-6-15 12:54:13 | 只看该作者
改成set m=(md)0x200+0x10果然好了,感谢楼上两位大大指导.
回复

使用道具 举报

2621#
 楼主| 发表于 2012-6-21 14:17:09 | 只看该作者
今天测试pxe启动win7PE,修改了bcd,加入:
ramdisktftpblocksize 8192
想不到bootmgr加载wim速度这么快,大概提高8~16倍。
------------------
看来grub4dos的pxe模块有提升空间。
回复

使用道具 举报

2622#
发表于 2012-6-21 15:42:03 | 只看该作者
你自己可以修改 pxe detect 的参数,让 blksize=8192 即可。

这个 8192 不一定被所有的 pxe bios 支持(不支持时,有死机的可能性)。grub4dos 采用了保险的初始值 1408。
回复

使用道具 举报

2623#
 楼主| 发表于 2012-6-21 17:39:46 | 只看该作者
grub4dos内部肯定有限制,目前最大值是1432,只要超过1432就无法从tftp下载。
测试了几台机器,ramdisktftpblocksize 8192都没有问题,WIM太奇妙了,100M多的WIM加载到内存不到5秒钟。
回复

使用道具 举报

2624#
发表于 2012-6-21 18:04:37 | 只看该作者
好像没有这样的限制,你可以看看源码。

如果超过 1432 就失败,那可能是你的 PXE BIOS 有此限制而已。bootmgr 有可能是用自己的 pxe 驱动来做的,不用主板的 PXE BIOS,那当然就不同了。
回复

使用道具 举报

2625#
发表于 2012-7-11 10:14:07 | 只看该作者

grldr会导致win8的bootmgr不能识别exfat格式

U盘采用exfat格式,用win8的bootmgr可以正常识别并引导PE,用grldr(改名为bootmgr)也能识别出exfat并引导PE(ISO方式)。
但如果grldr以chainloader /xxx/bootmgr方式引导win7PE时,出现0xc0000225错误,不能读取U盘中的bcd文件。
然而如果U盘采用NTFS或FAT32格式,就不会有上述问题的。
这个过程“U盘MBR”→bootmgr(由grldr改名)→xxxmgr(由win8的bootmgr改名),就会导致win8的bootmgr识别不了exfat
回复

使用道具 举报

2626#
发表于 2012-8-2 12:09:53 | 只看该作者
提个小小的建议:
      grub4dos读盘时,有个进度提示是以8m为单位的,对于快速的介质,该提示一闪而过,没什么用,而对于慢速的U盘,该提示半天才跳一次,简直象死机一般,能不能改为每读1m提示一次,这样比较好.
回复

使用道具 举报

2627#
发表于 2012-8-6 10:14:03 | 只看该作者
附件为一个 4M 大小的硬盘分区映像(无MBR)。

map --mem (cd)/4m.img (hd)  ----- 正常;
map (cd)/4m.img (hd)  ------ 出错,见图。

使用 Imdisk 以及 DiskGenius 制作的这种分区映像都出现这样的状况。


ls (hd2,3)/  --- 显示为正确的映像内容


制作为带分区表的硬盘映像,均正常。

[ 本帖最后由 canmao 于 2012-8-6 10:20 编辑 ]

4M.IMG.7z

1.34 KB, 下载次数: 43, 下载积分: 无忧币 -2

回复

使用道具 举报

2628#
发表于 2012-8-6 11:00:37 | 只看该作者
是你理解不到位引起的吧?当然,那也可能是 grub4dos 的文档含糊不清引起的。

对于无 MBR(即,无分区表) 的分区映像,它本身是一个文件系统(即,volume 卷)。当使用 --mem 把它 map 成一个硬盘时,由于传统的硬盘都是含有分区表的,所以,grub4dos 会自动在其前面添加一个磁道,同时也填写适当的分区表以及 MBR 的代码。此时,这个虚拟的文件系统(卷)将成为 (hdX,0),就是说,它将成为虚拟硬盘的第一个分区。

当不带 --mem 时,不会为其添加含有分区表的 MBR 磁道(因为实现起来很费事;但严格来说,也有可能实现它)。所以,不带 --mem 时,最好把它 map 为软盘,而不要 map 为硬盘。如果你非要把它 map 为硬盘,那么,你要明白,你这个虚拟硬盘就没有分区表了,它完全就是一个 volume,从虚拟硬盘的第一扇区开始,它就是一个文件系统。因此,像你图片中的情况,你用 ls (hd2)/  应该可以列出这个文件系统中的文件。而

ls (hd2,0)/
ls (hd2,1)/
ls (hd2,2)/
ls (hd2,3)/

等等,都属于错误用法。至于说 ls (hd2,3)/ 能够成功列出文件,那也许是你这个映像的特别设计(映像的第一扇区同时包含有效的分区表和 BPB 表,这样的双重结构),也许是一种巧合。
回复

使用道具 举报

2629#
发表于 2012-8-6 12:21:31 | 只看该作者

回复 #2632 不点 的帖子

明白了,谢谢不点!!!
回复

使用道具 举报

2630#
发表于 2012-8-11 01:42:31 | 只看该作者
0.45c版引导不了u盘,开机死机。
回复

使用道具 举报

2631#
发表于 2012-8-13 10:36:21 | 只看该作者
g4d好久没有更新了!是不是要出正式版了?期盼着!
回复

使用道具 举报

2632#
发表于 2012-9-9 09:01:04 | 只看该作者
目前制作小字库很方便,体积也很小,能否把字库像内置菜单一样尾续在grldr
回复

使用道具 举报

2633#
发表于 2012-9-10 08:25:19 | 只看该作者
技术总是有它的局限性的。GRLDR 有总体积限制,好像不能够超过 384K,超过 384K 之后,能否正常运行,不太清楚。512K 是又一个坎。如果超过 512K,引导扇区代码可能根本无法成功加载 GRLDR。

如果引导扇区可以加载超大的文件(比如达到 20M),那就可以把字库续尾在 GRLDR 后了。

看看 yaya 对此有无把握。如果 yaya 能够在 0.4.6 中实现,那就太好了。
回复

使用道具 举报

2634#
发表于 2012-9-10 11:13:59 | 只看该作者
反对将字库尾续到GRLDR中去,小字库有时候会很鸡肋。
回复

使用道具 举报

2635#
发表于 2012-9-10 11:44:06 | 只看该作者

回复 #2638 xianglang 的帖子

小字库我也不赞成,因为它只适合于少数国家、地区的语言。

要加载,就应该加载大字库,包括全部国际化语言字符集(65536 个基本字符)。

所以我希望在 0.4.6 系列中支持加载任意大的 GRLDR 到扩展内存中,这样,这个问题也就可以彻底解决了。
回复

使用道具 举报

2636#
发表于 2012-9-11 08:28:47 | 只看该作者
尾续不等于固定,用户可以自行尾续想要的字库。在使用grub4dos的用户中应该有很多只是需要要菜单汉化(本地化),
也许只有区区几十个字符,若添加尾续字库功能也不会破坏现有的用法,只是多了一个选择,也减少因字库路径引起的问题。
回复

使用道具 举报

2637#
发表于 2012-9-11 09:16:22 | 只看该作者
说的也是。

内置菜单其实就是一个内嵌文件。现在的意思是说,再增添一个内嵌文件,内容是字库。应该可以做。
回复

使用道具 举报

2638#
发表于 2012-9-12 11:10:17 | 只看该作者
@不点
   有时间、精神好的时候能弄个内嵌了字库的测试版吗?最好支持gz压缩的字体!
回复

使用道具 举报

2639#
发表于 2012-9-13 23:40:38 | 只看该作者

回复 #2637 不点 的帖子

尾可以很大,为存取提供方便即可,grldr不一定读入它。最早的续尾例子:
http://bbs.wuyou.net/forum.php?m ... p;page=1#pid1829895
回复

使用道具 举报

2640#
发表于 2012-9-14 08:32:26 | 只看该作者
意义不一样                                                     .
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 09:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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