我正在尝试在一台非常旧的计算机上升级软件:一台具有 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 量?
最近的内核没有最低内存要求(或者即使有,也远低于 16 MB)。他们拥有的是最小内存地址。
在内核的大部分早期历史中,x86 内核默认加载到物理内存地址 0x100000,就在经过特殊处理的第一兆字节 RAM 之上。从 2.6 系列开始,通过
CONFIG_PHYSICAL_START
配置符号添加了设置不同加载地址的功能,而在 2.6.31 中,默认值更改为 16MB 标记以解决各种硬件问题。因此,崩溃是由于系统试图在物理地址 0x1000000 处加载内核,该地址刚好超出内存顶部。可以想象,这并不好用。根据内核版本,修复是更改
CONFIG_PHYSICAL_START
(在配置菜单中称为“加载内核的物理地址”)或相关CONFIG_PHYSICAL_ALIGN
(称为“内核应对齐的对齐值”)。