问题现象
将 Alpine Linux 的 OVA 镜像导入 VMware 后,启动时发生内核崩溃:
RIP: 0010:__amd_smn_rw+0x30/0x110
note: modprobe[2669] exited with irqs disabled
问题原因
升级内核后,amd64_edac 这个 AMD 内存纠错驱动被编译进了 initramfs。该驱动在 VMware 虚拟化环境下访问到了无效内存地址,导致内核崩溃。
为什么之前没问题? 老内核没有把这个模块打进 initramfs,升级内核后才出现。
解决方案
bash
# 1. 禁止加载这两个模块
echo "blacklist amd64_edac" >> /etc/modprobe.d/blacklist.conf
echo "blacklist edac_mce_amd" >> /etc/modprobe.d/blacklist.conf
# 2. 重建 initramfs(关键步骤)
mkinitfs
# 3. 重启
reboot
搞定。
深入底层
浅画了个流程图,大概是这样子:
