星期一, 二月 05, 2007

RHEL4 kernel 4G MEM && SMP "冲突"问题

宝德的服务器,安装的 RHEL4,内核编译中是支持大内存的(64G),支持 SMP 对称多处理。但换上4条三星的 1G 内存后,系统启动出错:
target 0:0:0: FAST-80 WIDE SCSI 168.0MB/s DT(12.5ns, offset 62)
sym0:0: ERROR(20:0) (d-2d-2f) (3e/18/80) @ (scripta 7f0:150003d8)
sym0: script cmd = 88080000
sym0: regdump: ...
sym0: RCI STATUS = 0x2000
sym0: SCSI BUS reset detected
sym0: SCSI BUS has been reset
......
以上信息反复出现,系统无法启动。但使用单处理器的内核却可以启动系统!而且使用 Windows 也是可以启动的,在 BIOS 中也是可以正常识别的。

所以只可能是系统本身的问题。为此查看内核的 config 文件:
sh# grep -i 'MEM' config
......
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
......
可以看到有 HIGHMEM4G 和 HIGHMEM64G,在 make menuconfig 的 "Process type and features" ->"High Memory Support"中也可以看到。既然已经有 64G 的支持,为什么还需要 4G 呢?这是一个疑点,也是一个突破点。通过查看 help,大致可以了解,如果内存在 1~4G 之间,最好使用 4G 支持,如果内存多于 4G,则应使用 64G。

按此思路重新编译内核后,OK。

没有评论: