如何使您的Xen-PAE内核工作超过4GB RAM(Debian蚀刻与GRUB)

如何使您的Xen-PAE内核使用超过4GB的内存(Debian Etch与GRUB)

版本1.0
作者:Falko Timme

如果您有一台超过4GB RAM的服务器,并希望在其上安装一个32位Debian Etch(在本教程中: Debian Etch和Xen从Debian存储库中 ),您将期望Xen-PAE内核可以查看所有的RAM,因为Xen-PAE内核支持高达64GB的内存。 事实上,由于GRUB引导加载程序中的错误,它仅识别约3.3GB的RAM。 本文介绍如何修复GRUB,以便所有的RAM被识别。

我不会保证这将为您工作!

1初步说明

这个bug也存在于64位Debian系统上 - 默认的Debian Xen内核也只能识别3.3GB的RAM。 以下过程对64位Debian蚀刻系统也是有效的,尽管我仅在32位Debian蚀刻系统上进行了测试。

我假设您已经根据本教程在您的系统上安装了Xen: Debian存储库中的Debian Etch和Xen

我已经在6GB RAM的系统上测试了这个。

如果您使用另一个引导加载程序而不是GRUB(例如lilo),请不要遵循本教程!

2检查你的记忆

你可以跑

cat /proc/meminfo

看看你的系统识别多少内存:

Debian-40-etch-32-minimal:~# cat /proc/meminfo
MemTotal:      3468288 kB
MemFree:       3237948 kB
Buffers:         55884 kB
Cached:          46124 kB
SwapCached:          0 kB
Active:          68820 kB
Inactive:        41412 kB
HighTotal:     2731012 kB
HighFree:      2667548 kB
LowTotal:       737276 kB
LowFree:        570400 kB
SwapTotal:     2104440 kB
SwapFree:      2104440 kB
Dirty:            3524 kB
Writeback:           0 kB
AnonPages:        8196 kB
Mapped:           3932 kB
Slab:            10140 kB
PageTables:        304 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   3838584 kB
Committed_AS:    50368 kB
VmallocTotal:   116728 kB
VmallocUsed:      3776 kB
VmallocChunk:   112612 kB
Debian-40-etch-32-minimal:~#

如你所见,系统只能识别约3.3GB ...

3重建GRUB

现在让我们重建GRUB引导加载程序。 我们需要dpkg-dev软件包:

apt-get install dpkg-dev

然后我们下载GRUB源码

apt-get source grub

...并安装所有要求来重建GRUB:

apt-get build-dep grub

我们必须修改GRUB源目录中的stage2 / common.c文件。 首先我们复制一个文件:

cd grub-0.97/
cp -a stage2/common.c stage2/common.c.original

然后我们打开它:

vi stage2/common.c

在第143行,你应该找到这个部分:

[...]
#ifndef STAGE1_5
  unsigned long cont, memtmp, addr;
  int drive;
#endif
[...]

修改如下:

[...]
#ifndef STAGE1_5
  unsigned long memtmp, addr;
  volatile unsigned long cont;
  int drive;
#endif
[...]

保存文件,然后构建新的GRUB包:

debian/rules binary

之后,我们可以安装新的GRUB软件包,如下所示:

dpkg -i ../grub_0.97-27_i386.deb

现在我们必须在我们的硬盘上安装GRUB。 我使用两个硬盘驱动器, / dev / sda/ dev / sdb (对于软件RAID1),所以我运行

grub-install /dev/sda
grub-install /dev/sdb

如果只有一个硬盘驱动器,那么运行grub-install只有一次。 确保您使用硬盘驱动器的正确设备名称(例如,代替/ dev / sda ,您的设备可能是/ dev / hda ),您可以通过运行

fdisk -l

)。

最后,现在是重新启动的时候了

reboot

4再次检查你的记忆

重新启动后,是时候再次检查内存。 如果一切顺利,系统现在应该会识别出全部内存:

cat /proc/meminfo
Debian-40-etch-32-minimal:~# cat /proc/meminfo
MemTotal:      6067200 kB
MemFree:       5902700 kB
Buffers:          1596 kB
Cached:          13964 kB
SwapCached:          0 kB
Active:          19316 kB
Inactive:         4408 kB
HighTotal:     5329732 kB
HighFree:      5299600 kB
LowTotal:       737468 kB
LowFree:        603100 kB
SwapTotal:     2104440 kB
SwapFree:      2104440 kB
Dirty:             784 kB
Writeback:           0 kB
AnonPages:        8160 kB
Mapped:           3932 kB
Slab:             8616 kB
PageTables:        324 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   5138040 kB
Committed_AS:    50388 kB
VmallocTotal:   116728 kB
VmallocUsed:      3776 kB
VmallocChunk:   112612 kB
Debian-40-etch-32-minimal:~#

正如你所看到的,我的系统正在识别我的6GB内存。

5链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏