提到一个在32位系统中常见却容易被忽视的问题:明明安装了4GB内存,但实际可用容量往往只有3.2GB左右。这种情况虽然不算新鲜,但许多用户首次遇到时仍会感到困惑和不知所措。
一、问题现象
在32位操作系统下,4GB内存只能被识别出约3.2GB,剩余的800MB仿佛被系统“隐藏”了起来。
二、原因分析
查阅相关资料后,问题的根源十分清晰:32位x86架构下,CPU的物理寻址能力天然被限制在4GB以内。要突破这一硬件瓶颈,需要借助Intel的PAE(物理地址扩展)技术。以Windows NT为例,只需在boot.ini文件后添加/pae参数即可启用支持。而RHEL 5默认安装时不会自动检测超过4GB的内存,因此需要手动安装kernel-PAE内核包。
针对当时使用的Fedora 6系统,只需执行以下两条命令即可完成配置:
# yum install kernel-PAE
# yum remove kernel
三、实际操作与问题
按照上述命令执行并重启后,系统却无法正常启动,报错提示找不到2.6.18-1.2798.fc6文件。无奈之下,只能使用光盘进入Linux rescue模式进行修复:
sh-3.2# chroot /mnt/sysimage/
sh-3.2# ls /boot/
查看/boot目录,发现新安装的PAE内核文件initrd-2.6.22.14-72.fc6PAE.img和vmlinuz-2.6.22.14-72.fc6PAE已经存在。问题根源在于GRUB引导菜单中仍然引用了旧内核名称。于是手动修改配置文件:
sh-3.2# vim /boot/grub/grub.conf
将引导配置中的内核版本由2.6.18-1.2798.fc6修改为2.6.22.14-72.fc6PAE。保存文件并重启后,系统顺利进入正常状态。
四、总结
回顾整个操作流程,步骤本身并没有错误:安装kernel-PAE并删除旧内核。但问题在于删除旧内核后,GRUB引导菜单并未自动更新,仍然指向已删除的内核文件。更省事的做法是:在执行完两条命令后、重启之前,先检查/boot/grub/grub.conf配置,将内核文件名与ls /boot/列出的版本号对应,或使用uname -a确认当前运行的内核。一个小细节的注意,就能避免一次繁琐的救援折腾。
