今おうち鯖のカーネルは Debian 謹製 2.4.18 に XFS パッチを当てて使ってるのだけど,さすがに古い気がするので,2.4.27 にアップグレードしてみた。
するとイーサネットドライバ (r8169 2.2) が原因でカーネルパニック発生。
NETDEV WATCHDOG: eth0: transmit timed out
eth0: no Rx buffer allocated
Unable to handle kernel NULL pointer dereference at virtual address 00000068
printing eip:
d08bb5c4
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<d08bb5c4>] Not tainted
EFLAGS: 00010286
eax: c13ba9f4 ebx: 000000cf ecx: c13ba9f4 edx: 00000000
esi: ffffffff edi: cffb8b30 ebp: cc4d5000 esp: c028be5c
ds: 0018 es: 0018 ss: 0018
Process swapper (pid: 0, stackpage=c028b000)
Stack: 00000011 d08dc000 00000013 c13ba800 c13ba9f4 00000000 000000b8 00000040
00000000 d08bb72c c13ba800 c13ba960 d08dc000 cc77e220 04000001 0000000b
c028beec c13ba960 c0109963 0000000b c13ba800 c028beec 00000160 c02a6a60
Call Trace: [<d08bb72c>] [<c0109963>] [<c0109ade>] [<c011fe9e>] [<c011c852>]
[<c011c796>] [<c011c5ba>] [<c0109b0d>] [<c0106d10>] [<c0106d10>] [<c0106d10>]
[<c0106d10>] [<c0106d33>] [<c0106d99>] [<c0105000>] [<c0105027>]
Code: 83 7a 68 00 74 0a 68 2d 03 00 00 e8 08 cf 85 ef 89 d8 03 82
<0>Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
<0>Rebooting in 30 seconds..
2.4.26 にダウングレードしてみると,古いイーサネットドライバ (r8169 1.2) が入っててカーネルパニックは発生しなかったが,今度は Auto-negotiation で 100Mbps になってしまう。
だからといって Force-mode にして 1000Mbps を指定するとリンクが確立しない。
ドライバが古いからなのか?
しばらく試行錯誤するも,敗北して元の 2.4.18 に戻すことに。
これには自前でコンパイルしたイーサネットドライバ (r8169 2.2) が入ってるものの,カーネルパニックは発生しないし,ちゃんと 1000Mbps でリンクアップする。
うーむ……。
やっぱカニさんチップは避けとけば良かったかも。