我正在尝试在一台非常旧的计算机上升级软件:具有 16 MB RAM 的 Pentium MMX。它当前运行的是 2.4.37.11 内核。
我已经配置了一个最小的非模块化 4.14 内核,它可以完成 2.4 内核所做的所有事情,并尝试从它启动。使用 LILO 引导会产生以下输出:
boot: gentoo-4.14.3
Loading gentoo-4.14.3.................................
BIOS data check successful
此时,屏幕短暂闪烁,然后系统冻结。
如果我从另一个系统添加另外 32 MB RAM,则 4.14 内核可以正常启动,并free
显示内核使用略多于 4MB 的 RAM。内核在启动期间是否需要一定的最小 RAM 量?
答案1
最新的内核没有最低内存限制要求(或者即使有,也远低于 16 MB)。他们拥有的只是最低限度的记忆地址。
对于内核的大部分早期历史,x86 内核默认加载到物理内存地址 0x100000,正好位于经过特殊处理的第一个兆字节 RAM 之上。从 2.6 系列开始,通过配置符号添加了设置不同加载地址的功能CONFIG_PHYSICAL_START
,并且在 2.6.31 中,默认值更改为 16MB 标记,以解决各种硬件问题。
因此,崩溃是由于系统尝试在物理地址 0x1000000 加载内核,该地址刚好超出内存顶部。正如您可以想象的那样,这效果并不好。根据内核版本,修复方法是更改CONFIG_PHYSICAL_START
(在配置菜单中称为“加载内核的物理地址”)或相关的CONFIG_PHYSICAL_ALIGN
(称为“内核应对齐的对齐值”)。