我尝试在诺基亚 IP710 防火墙上运行 Debian Linux,但无法使其正确启动:每次都会出现内核恐慌。
该防火墙具有 Pentium III 1Ghz 和 512MB RAM。它没有 vga、非常有限的 BIOS(即没有 pxe/netboot)、没有 cdrom 驱动器或 USB 端口。它的操作系统是诺基亚IPSO,基于FreeBSD。
IPSO是从32MB CF卡上启动的,上面有引导加载程序,操作系统位于40GB硬盘上。
我从 qemu 中将 Debian (Wheezy) 安装在 4GB 紧凑型闪存上,后来又安装在 32MB 硬盘上作为 /boot。当在 qemu 或 x86 瘦客户端上启动时,这两种操作系统都可以正常工作。
但是,它们在防火墙上每次启动时都会崩溃并显示以下日志:
[ 2.676304] BUG: unable to handle kernel paging request at ffff8000
[ 2.680166] IP: [<c1010aec>] io_apic_write+0xb/0x13
[ 2.680166] *pde = 01442067 *pte = 00000000
[ 2.680166] Oops: 0002 [#1]
[ 2.680166] Modules linked in:
[ 2.680166]
[ 2.680166] Pid: 1, comm: swapper Not tainted 3.2.0-4-486 #1 Debian 3.2.32-1
[ 2.680166] EIP: 0060:[<c1010aec>] EFLAGS: 00010086 CPU: 0
[ 2.680166] EIP is at io_apic_write+0xb/0x13
[ 2.680166] EAX: ffff8000 EBX: 00000031 ECX: 01000000 EDX: ffff8000
[ 2.680166] ESI: 01000000 EDI: 0001a929 EBP: 00000002 ESP: dec2dea0
[ 2.680166] DS: 007b ES: 007b FS: 0000 GS: 00e0 SS: 0068
[ 2.680166] Process swapper (pid: 1, ti=dec2c000 task=dec1ec00 task.ti=dec2c000)
[ 2.680166] Stack:
[ 2.680166] 00000010 00000002 c1010b5f 00000246 0001a929 01000000 c1010b95 0001a929
[ 2.680166] 01000000 00000010 66858080 dec2df20 c1315489 00000010 c1011974 0001a929
[ 2.680166] 01000000 00000001 00000000 00000002 0001a929 01000000 c1448d44 00000010
并在调用跟踪之后:
[ 2.680166] EIP: [<c1010aec>] io_apic_write+0xb/0x13 SS:ESP 0068:dec2dea0
[ 2.680166] CR2: 00000000ffff8000
[ 2.680166] ---[ end trace 6f619dcb164ee6d0 ]---
[ 2.680206] Kernel panic - not syncing: Attempted to kill init!
[ 2.684175] Pid: 1, comm: swapper Tainted: G D 3.2.0-4-486 #1 Debian 3.2.32-1
我也尝试了内核3.2.35,结果相同。
还有一堆与 PCI 相关的错误消息:
[ 2.467037] pci 0000:00:02.0: address space collision: [mem 0xff000000-0xff03ffff pref] conflicts with 0000:00:01.0 [mem 0xff000000-0xff03ffff pref]
[ 2.488165] pci 0000:04:06.0: no compatible bridge window for [mem 0xff000000-0xff03ffff pref]
[ 2.620180] pci 0000:00:03.0: enabling device (0000 -> 0003)
[ 2.624179] pci 0000:00:03.0: can't find IRQ for PCI INT A; probably buggy MP table
[ 2.628186] pci 0000:00:03.1: enabling device (0000 -> 0003)
[ 2.632174] pci 0000:00:03.1: can't find IRQ for PCI INT B; probably buggy MP table
其中 512 条消息(引脚 0-255,两次):
[ 1.172083] Unable to reset IRR for apic: 255, pin :3
我想知道如何解决这些崩溃问题。我读过的大多数文档(例如Documentation/oops-tracing.txt
)都没有提到内核在启动时崩溃的情况。
从控制台保存的完整引导日志是这里。
编辑:根据 @jordanm 的建议,我运行了 memtest 过夜(11 小时)。一切顺利,没有任何错误:
Memtest86+ v4.20 | Pass100% #######################################
Pentium III 999.6MHz | Test 81% ###############################
L1 Cache: 16K 9342 MB/s | Test #8 [Modulo 20, Random pattern]
L2 Cache: 256K 4253 MB/s | Testing: 196K - 512M 512M
L3 Cache: None | Pattern: ab46c0e3-17
Memory : 512M 406 MB/s |-------------------------------------------------
Chipset : CNB20HE (ECC : Detect / Correct) Scrub+
WallTime Cached RsvdMem MemMap Cache ECC Test Pass Errors ECC Errs
--------- ------ ------- -------- ----- --- ---- ---- ------ --------
11:06:12 512M 0K e820 on off Std 9 0
-----------------------------------------------------------------------------