无忧启动论坛

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

还在使用 GNU Grub 0.9.7 的朋友请注意

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-5 23:28:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
还在使用 GNU Grub 0.9.7 的朋友,如果你的计算机内存已经 超过了 2G ,请看看如下的语句执行时会出现什么情况?

title  0.                           Ghost 11.5.1

kernel /boot/grub/memdisk raw c=125 h=4 s=36 floppy
initrd /boot/image/msdos/ghost.zip

呵呵,会出现这样的错误:

selected item can't fit into memory  (大概的情况)

这就是说,这样的语句是不能正确执行的。

那么,在怎么办呢?方法有两个:

1.改用最新的 Grub4DOS 。最新的 Grub4DOS 已经修正了 4G 内存时的情况。可以正常执行上述语句。

2.继续使用 GNU Grub 0.9.7。但要将上述语句修改为:

title  0.                           Ghost 11.5.1

#强制将 内存设定为 128M
uppermem 131072
kernel /boot/grub/memdisk raw c=125 h=4 s=36 floppy
initrd /boot/image/msdos/ghost.zip




uppermem 131072 的意思是强制让 grub 认为计算机的内存只有 128M。这样理解:

在这种情况,凡是用 initrd 虚拟的磁盘,都会被放在 128M以内的地方。即使你有4G以上的内存,grub 也会这样做。

这样,就避免了计算机内存大于2G时,grub 无法处理的问题。

我猜测,uppermem 语句 对 map 指令也有类似的影响。

请大家试试。

[ 本帖最后由 blank007 于 2010-10-5 23:30 编辑 ]
2#
发表于 2010-10-6 11:47:39 | 只看该作者
我用map,早就不用memdisk了
回复

使用道具 举报

3#
发表于 2010-10-6 11:50:25 | 只看该作者
呵呵,grub 0.97现在用的人不多了,都用grub4dos或grub2了。
回复

使用道具 举报

4#
发表于 2010-10-7 00:22:43 | 只看该作者
基本上只有在linux系统发行在09年6月以前的发行版中存在的、默认的比较多用grub0.97进行引导!grub0.97好象已经停止研发有4年多了,老了。意义不大了。
现在国际上主流的linux发行版基本不使用grub4dos,估计是认为grub4dos“不正统”吧。多是采用比较“正统”的grub2。
回复

使用道具 举报

5#
发表于 2010-10-7 09:26:32 | 只看该作者
确实老了,好像从06以后就没再用过这个了。
回复

使用道具 举报

6#
发表于 2010-10-12 19:06:04 | 只看该作者
新版的 grub4dos 确实可以访问超大的内存了。但是,mini98 却不能在大内存下运行。

今天我刚刚在一台有 4G 内存的电脑上启动 mini98.gz,失败。用以下方法启动,可以成功:

  1. map --mem=0x200000  /mini98.gz (hd0)
  2. map --hook
  3. chainloader (hd0)+1
  4. root (hd0,0)
  5. boot
复制代码


此处,--mem=0x200000 就表示将映像放置在内存 1G 处。也就是说,1G 以上都被虚拟磁盘占据。win98 的操作系统只能发现 1G 的内存,所以,启动成功。

我试过 --mem=0x400000,而 win98 启动失败。也就是说,2G 内存仍然失败。估计比 2G 稍微低一点,就可以成功了。
回复

使用道具 举报

7#
 楼主| 发表于 2010-10-12 21:01:41 | 只看该作者

回复 #6 不点 的帖子

呵呵。阁下也来回帖?荣幸之至啊。
新版的 Grub4dos 取消了 uppermem 指令。
而我还是喜欢用 gnu grub 0.97 。
这个现象是我在无意中发现的。因为在以前,我用 gnu grub 0.97 ,试图启动内存大于4g 的计算机时,除了 winpe 能启动外,凡涉及 memdisk 和 initrd 指令的各类系统均不能启动。后来,仔细看了看 其中的指令,试了一下。果然,uppermem 指令起作用了。
回复

使用道具 举报

8#
发表于 2010-10-13 12:50:48 | 只看该作者
uppermem 的目的是限定内存的容量。map --mem=... 也可达到一样的效果。被内存盘所占据的内存,都不能被操作系统使用了,所以,这间接达到了限定内存的目的。

uppermem 对内存的操作有副作用,因此取消了。grub4dos 的内存操作很规范(简化了),都是通过 int15 来实现的,与操作系统能够良好兼容。uppermem 受 multiboot 规范的影响。而 grub4dos 已经把 multiboot 隔离开来了,不启动 multiboot 内核的时候,不使用 multiboot 的相关代码。而 uppermem 却和 multiboot 的内存搅和在一起。因此把 uppermem 去掉了。
回复

使用道具 举报

9#
发表于 2010-10-14 00:06:49 | 只看该作者
呵呵,老版本的早就没用了,也没注意有这问题
!~
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-29 03:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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