我找到了一台配备 AMD Athlon XP 和 256 MB RAM 的旧 PC,因此我尝试安装 Debian 9 并将其用作测试服务器。
安装完成后没有出现任何问题,但是当我第一次尝试启动系统时,问题开始出现。我通过在 StackExchange 上搜索或使用 BIOS 成功解决了某些问题:
- 即使未安装软盘驱动器,系统也会尝试加载软盘驱动器(在 Bios 中禁用软盘支持)
- “ACPI 错误:方法执行失败”(在 Bios 上禁用 ACPI)
- “警报!UUID=...不存在。正在进入 shell!” (在 GRUB 启动参数中将“root=UUID=...”替换为“root=/”)
修复所有这些之后,还有一个我无法修复:
调用轨迹:
[<ca2f6c82>]?转储堆栈+0x55/0x73
[<ca16879a>]?恐慌0x94/0x1d8
[<ca06c15e>]? do_exit+0x9fe/0xa00
[<ca06c196>]? SyS_退出+0x16/0x20
[<ca00372a>]? do_fast_syscall_32+0x9a/0x160
[<ca5b6d62>]? sysenter_past_esp+0x47/0x75
内核偏移 0x9000000 从 0xc1000000 (重定位范围:0xc0000000-0xce7effff)
--[ 结束内核恐慌 - 不同步:试图杀死 init!退出代码 0x00000100
几分钟后:
随机:crng 初始化完成
分区是使用以下格式手动创建的:
- sda1 - /boot - 200mb
- SDA2 - / - 39.5GB
- sda3 - 交换 - 2GB
以防万一,我使用了 x86/i386 的网络安装程序这里。
¿我可以做什么来修复/绕过这个内核恐慌错误?
答案1
内核恐慌只是系统无法找到真正的根文件系统的结果。
您不能将其用作root=/
引导参数,因为在使用引导参数时,系统尚未挂载真正的根文件系统,并且需要此引导参数来知道真正的根文件系统在哪里。指定root=/
尝试使用临时 initramfs 根目录作为包含根文件系统的设备,这是完全错误的并且无法工作。
如果您的分区列表正确,您应该使用root=/dev/sda2
。
答案2
解决方案是安装非 PAE 内核。
由于某些奇怪的原因,Debian 9 安装程序在最近的 PC 上使用了 PAE 内核,即使这是一台没有 PAE 支持的旧 PC(具有讽刺意味的是,非 PAE 内核在其描述中说“适用于较旧的 PC”,在这种情况下)没有使用)。
首先,我在“恢复模式”下启动安装程序,选择 /dev/sda2 并将 /dev/sda1 安装为 /boot。
到达命令行后,我更新了包缓存(sudo apt-get update
)并执行了apt-cache 搜索对于“linux-image”包(又名内核):
apt-cache 搜索 linux-image
结果是(减少):
linux-image-4.9.0-6-686 - 适用于旧电脑的 Linux 4.9
linux-image-4.9.0-6-686-dbg - linux-image-4.9.0-5-686 的调试符号
linux-image-4.9.0-6-686-pae - 适用于现代 PC 的 Linux 4.9
linux-image-4.9.0-6-686-pae-dbg - linux-image-4.9.0-5-686-pae 的调试符号
linux-image-4.9.0-6-686-rt-pae - 适用于现代 PC 的 Linux 4.9,PREEMPT_RT
linux-image-4.9.0-6-686-rt-pae-dbg - linux-image-4.9.0-5-686-rt-pae 的调试符号
所以我安装linux-image-4.9.0-6-686
来诊断故障所在,结果是系统启动并显示登录屏幕。
之后我删除旧内核并开始使用该系统。