如何解决启动时的内核崩溃问题

如何解决启动时的内核崩溃问题

我尝试在诺基亚 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
 -----------------------------------------------------------------------------

相关内容