如何使您的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链接
- Debian: http : //www.debian.org