无忧启动论坛

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

[求助] grub4dos如何取得内存大小

[复制链接]
跳转到指定楼层
1#
发表于 2013-12-17 09:22:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
grub4dos如何取得内存大小

若我想用grub4dos判断电脑安装内存达到1G、2G、4G、8G时,作出不同的处理。如何才能取得内存大小赋给一个变量,若能取得,其单位是G、M还是KB,诚请各位指点,谢谢!
2#
发表于 2013-12-17 09:33:49 | 只看该作者
你研究一下 grub4dos 的 displaymem 命令的输出结果,就可以知道你的内存分布情况了。

另外,你需要了解 BIOS 的 INT15/E820 内存规范。请搜索 Internet 获得相应的资料。

点评

谢谢,我先看一下,不行再请教  详情 回复 发表于 2013-12-17 11:02
回复

使用道具 举报

3#
 楼主| 发表于 2013-12-17 11:02:45 | 只看该作者
不点 发表于 2013-12-17 09:33
你研究一下 grub4dos 的 displaymem 命令的输出结果,就可以知道你的内存分布情况了。

另外,你需要了解 ...

谢谢,我先看一下,不行再请教
回复

使用道具 举报

4#
发表于 2013-12-17 13:26:06 | 只看该作者
也可以直接读取0x8298的值  是可用的扩展内存大小(以 KB 为单位)

判断当前物理内存大小:
checkrange 0:0x80000 read 0x8298            ...0-512 MB
checkrange 0x80001:0x100000 read 0x8298    ...512~1024 MB
checkrange 0x100001:-1 read 0x8298          ...1024 MB 以上

点评

谢谢指点,不知2G、4G、8G又如何判断?  详情 回复 发表于 2013-12-17 15:33
回复

使用道具 举报

5#
 楼主| 发表于 2013-12-17 15:33:24 | 只看该作者
sratlf 发表于 2013-12-17 13:26
也可以直接读取0x8298的值  是可用的扩展内存大小(以 KB 为单位)

判断当前物理内存大小:

谢谢指点,不知2G、4G、8G又如何判断?

点评

自己可以计算下 512M的是 512M×1024=524288KB=0x80000 2G的是2048M×1024=2097152KB=0x200000KB 同理算4G和8G  详情 回复 发表于 2013-12-17 17:24
回复

使用道具 举报

6#
发表于 2013-12-17 17:24:39 | 只看该作者
qj_tzy 发表于 2013-12-17 15:33
谢谢指点,不知2G、4G、8G又如何判断?

自己可以计算下  512M的是 512M×1024=524288KB=0x80000

2G的是2048M×1024=2097152KB=0x200000KB  同理算4G和8G
回复

使用道具 举报

7#
发表于 2013-12-17 18:16:18 | 只看该作者
Sratlf,你说的办法应该是不能解决问题的。

0x8298 处,记录的是从 1M 开始的连续可用内存的量(单位是 KB)。它不代表系统总内存。在有些电脑上,它只有 14M 大小。它也不可能达到 4G。

0x82C0 处的 64 位值,表示的是 4G 以上部分的连续可用内存的量(单位是 KB)。所以,如果系统有 4G 内存,那么 0x82C0 处就要大于 0。如果系统有 8G 内存,则 0x82C0 处的内存量应该大于 4GB。如果系统低于 4G 内存,则 0x82C0 处应该是 0。如果系统内存低于 4G,则内存是碎片式的,grub4dos 没有汇总这些碎片,因此需要用户自己用 bios 的 int15/E820 规范来确定这些碎片的位置和大小。

点评

猜测LZ需要的就是可以被GRUB4DOS利用的最大连续可用内存吧 这点LZ可以说说是做什么用途 看有么有其他办法 4G以上这个确实不太清楚 没在4G内存以上机器上用过。。。。  详情 回复 发表于 2013-12-18 09:34
看了sratlf 及你们两位的指点,我迷茫了,不知该如何解决  详情 回复 发表于 2013-12-17 20:34
回复

使用道具 举报

8#
 楼主| 发表于 2013-12-17 20:34:26 | 只看该作者
不点 发表于 2013-12-17 18:16
Sratlf,你说的办法应该是不能解决问题的。

0x8298 处,记录的是从 1M 开始的连续可用内存的量(单位是  ...

看了sratlf 及你们两位的指点,我迷茫了,不知该如何解决
回复

使用道具 举报

9#
发表于 2013-12-18 09:16:34 | 只看该作者
本帖最后由 不点 于 2013-12-18 09:28 编辑

qj_tzy 兄,我的不成熟看法是,自己动手,丰衣足食。

grub4dos 有 “两面性”。一面是它的 “易用性”,一面是它的 “难用性”。

“易用” 是说它的普通操作很简单,无需了解深层技术知识,是 “傻瓜化” 处理,所以,很容易 “照葫芦画瓢”,用户只要会模仿,就能使用。

“难用” 是说,当你想更深入了解 grub4dos 时,你会发现,grub4dos 提供的功能不够用,因而觉得很 “茫然”,或者 “束手无策”。

为什么会出现 “难用” 的现象呢?那主要是因为 grub4dos 一直处于不断开发完善的过程中,还没有人填补所有的死角,因此就有某些 “难用” 的情况出现。遇到 “难用” 的情况时,最好自己下功夫学习相关知识,把自己武装成一个黑客。这 “难用” 的部分,难不住黑客,黑客总有办法解决它。grub4dos 既是给普通人用的,也是给黑客用的。甚至 grub4dos 主要是给黑客用的。如果谁有兴趣,可以调查一下,有多少人了解 grub4dos 是个啥东西?应该没有几个人真正了解。我周围的人几乎全都不了解,只有少数几个经常给人修电脑的高手,才知道 grub4dos 是个什么玩意。这些修电脑的人,在我看来,可以称为高手,也可以算是潜在的黑客。黑客无非就是高手中的高手,了解的知识更深、更细一些罢了,没什么神秘的。

回复

使用道具 举报

10#
发表于 2013-12-18 09:34:12 | 只看该作者
不点 发表于 2013-12-17 18:16
Sratlf,你说的办法应该是不能解决问题的。

0x8298 处,记录的是从 1M 开始的连续可用内存的量(单位是  ...

猜测LZ需要的就是可以被GRUB4DOS利用的最大连续可用内存吧  这点LZ可以说说是做什么用途  看有么有其他办法

4G以上这个确实不太清楚   没在4G内存以上机器上用过。。。。

点评

衷心感谢sratlf 、不点两位的悉心指点! 想自己动手,但苦于自己对grub4dos仅为一知半解,对解决以上问题感觉无能为力。 我是出于根据内存大小的不同情况,以不同方式加载内存系统的需要: 1.若内存在8G以上  详情 回复 发表于 2013-12-18 11:15
回复

使用道具 举报

11#
发表于 2013-12-18 09:50:17 | 只看该作者
无论是需要 “最大可用连续内存” 还是 “总内存”,都需要用户自己解决。目前 grub4dos 没有直接给出这些量值。

一般的情况下也确实不需要这些量值。假如真正需要的话,恐怕 grub4dos 的开发者早都提供了这些量值供用户使用。

回复

使用道具 举报

12#
 楼主| 发表于 2013-12-18 11:15:07 | 只看该作者
sratlf 发表于 2013-12-18 09:34
猜测LZ需要的就是可以被GRUB4DOS利用的最大连续可用内存吧  这点LZ可以说说是做什么用途  看有么有其他办 ...

衷心感谢sratlf 、不点两位的悉心指点!

想自己动手,但苦于自己对grub4dos仅为一知半解,对解决以上问题感觉无能为力。

我是出于根据内存大小的不同情况,以不同方式加载内存系统的需要:
1.若内存在8G以上,则以map --mem --top方式加载winviista或以后系统的ramos.img或ramos.vhd到高端内存,否则不运行此项。
2.若内存在4G以上,则以map --mem 方式加载win2000/xp/2003系统的ramos.img或ramos.vhd到低端内存,否则不运行此项。
3.若内存在2G以上,则以map --mem-max=2g分隔内存后加载win9x的ramos.img到低端内存,否则不分隔内存直接加载,若低于1G内存,不运行此项。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 01:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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