在Windows Server 2012服务器上的HyperV安装的Oracle Linux 6.4版本,在增加内存容量后(有16G升至30G),操作系统无法启动。黑屏并报"PANIC: early exception 06 rip 10:ffffffff81c4b4ae error 0 cr2 0"。本文将介绍如何解决这个问题。
寻找原因
首先在网上搜索答案,找到的说法都指向Numa设置。Numa按我的理解可以认为,将多核的CPU按核同内存区域进行绑定,减少内存使用竞争,HyperV中虚拟机也默认开启了Numa功能。
具体关于Numa的介绍,可以参照微软官网上的介绍。
操作实现
先在HyperV上将虚拟机的内存设置成为动态内存。然后可以正常启动虚拟机。
直接修改/boot/grub/grub.conf文件。在kernel所在行的最后增加
numa=off
选项。
title Oracle Linux Server Red Hat Compatible Kernel (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_oraclerac1-lv_root rd_LVM_LV=vg_oraclerac1/lv_swap rd_NO_LUKS rd_LVM_LV=vg_oraclerac1/lv_root LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet numa=off
- 随后关闭操作系统,在HyperV上将内存再设置为静态内存,最后正常启动系统。