2013年8月4日

マザーボードの交換

ファイアウォールに使っているサーバが死にかけた。

突然フリーズするようになり、電源再投入すると再起動してしばらく順調に稼働するものの、数時間後にはまたフリーズする。/var/log/messageを見ても何ら情報はなく、ただただフリーズしているので、4年前に中古で買ったマザーボードの寿命と考え、新品と交換することにした。それまではwebpowerというネットワーク電源スイッチでpingで監視して自動電源再投入でしのぐ。

新しいマザーボードは近所のFry'sで一番安かったASUS製。
  • CPU: Celeron Dual Core 2.7GHz
  • Memory: DDR3 2GB x2 (=4GB)
  • Slots: PCIe x1, PCIX x1, 32bit PCI x2
  • PS/2: Mouse, Keyboard (separate)
  • VGA
  • 6Gb SATA x1, 3Gb SATA x5
古いマザーボードはPentium 4 (2.8GHz シングルスレッド)+ 2GBだったから、かなりのスペック向上である。メモリは本当は2GBで十分なのだが、今どき1GBのDDR3は売っていないので2GBのチップを使い、スピードを多少稼ぐためデュアルチャンネルメモリを選択で x2になった。32bit PCIは、手持ちのCaller ID用のモデムカードと二番目のNIC(ファイアウォールなのでLANとWANの両方が必要なのだ!)に必要。HDMIだとかSPI/Fだとかのマルチメディアポートもついているが、サーバには全く関係ない。PS/2のマウスとキーボードが付いているのは、10年前から使っているPS/2用KVMスイッチが使えるので助かる。HDDは当然稼働中のものを使う。

マザーボードの交換は神経を使う。稼働中のインスタレーションとの互換性が心配なのは以下の点。
  • SATAコントローラ
  • ビデオチップ
  • NIC(イーサネット)

いきなり稼働中のマザーボードを交換するようなせっかちはせずに、まずは裸の状態でテストして問題点を解決してから交換、と言う手順で行う。テストには別のマザーボード用に作ってあった(稼働することが証明されている)RAID1のインスタレーション(交換先と同じFedora 13)を使う。

ブートしない!

最初の躓きは全くブートしないこと。BIOSにも到達せず、何も動かない。「さてはCPUの装着時にピンを曲げたか?」と何度も点検するが異常なし。最終的には(当然のことながら)自分のチョンボと判明。電源スイッチ代わりにATX電源コネクタの緑と黒をショートしていたのが誤りで、フロントパネル用コネクタのピンを使うことで解決。

 電源コネクタの方法は他のマザーボードでは上手く行っていたのに、このマザーボードでは電源は入りCPUファンなども動き始めるのにそれ以上進まなかった。違いと言えば、他のマザーボードでは緑と黒のショートはモメンタリで電源投入後はショートを外しても投入されたままだったのにこのマザーボードではショートを外すと電源が切れてしまったこと。まぁインチキはいけませんね。

ルートデバイスが見つからない!

BIOSが走り、HDDを繋ぐとLinuxがブートし始める!SATAの問題はなさそう(SATAでトラブったことはないが…)。

ところがブートの段階で「ルートデバイスが見つからない!」というエラーで固まってしまう。ブートの進行状況のバーが伸び行く時にAlt+DでブートRCファイルの進行状況メッセージが表示されるはずなのだがそれができない。「さてはビデオの互換性の問題か?」とオンボードのVGAの代わりにPCIにVGAカードを挿してみるが同じこと。

仕方がないので、もう一度BIOSの設定をくまなくチェックする。試しにSATAの設定をデフォルトのIDEからAHDIに変えたらあっさり動いた。二つ目クリア!

NICが動かない

デスクトップが立ち上がり、ターミナルウィンドウを開いてifconfigを実行してみるが、ループデバイス(127.0.0.1)しか動いていない。SATAとビデオの問題とは違い、こちらは予想していたとおり。

まず、lspciを実行してNICデバイスがカーネルに認識されていることを確認。これはOK。

次に、/etc/udev/rules.d/70-persistent-net-rulesの日付をチェックすると更新されており、このファイルを内容を見ると、eth2eth3という新しいデバイスが追加されている(このマザーボードには、オンボードとPCI32スロットの二つのNICがついている)。これらが新しいマザーボードで使えるNICなので、これらのエントリを基に新しいマザーボード用のネットワークスクリプトファイルを作る。

RedHat/Fedora/CentOS系のディストロでは、ネットワークデバイスは/etc/sysconfig/network-scripts/ifcfg-***(「***」はネットワークデバイス名、「eth0」「eth1」など)というファイルに記述されているので、先ほどの/etc/udev/rules.d/70-persistent-net-rulesの情報とlspciの出力(NICのチップなどのコメントのみ)でifcfg-eth2ifcfg-eth3のファイルを作成し、「ifup eth2」を実行してみるとネットワークがつながった。

もう一度整理すると
  • /etc/udev/rules.d/70-persistent-net-rules
  • /etc/sysconfig/network-scripts/ifcfg-***
の二つのファイルの内容が一致するように
  • デバイス名(eth0eth1、…)
  • MACアドレス
を新しいハードウェアに合わせて修正してやる。

eth0eth1を修正したら、ブート時からこれらのインタフェースが使えるようになった。

h@spice:~$ cat /etc/udev/rules.d/70-persistent-net-rules
(一部省略)
# PCI device 0x1011:0x0019 (tulip)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:c0:f0:4c:e6:78", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
 
# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="60:a4:4c:b5:26:48", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


h@spice:~$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 09)
DEVICE=eth0
BOOTPROTO=none
HWADDR=60:a4:4c:b5:26:48
TYPE=Ethernet

(一部省略)

h@spice:~$  cat /etc/sysconfig/network-scripts/ifcfg-eth1
# Digital Equipment Corporation DECchip 21142/43 (rev 41)
DEVICE=eth1
HWADDR=00:c0:f0:4c:e6:78

TYPE=Ethernet
(一部省略)

h@spice:~$


明示的に「NAME=」が示されていないときは、eth0から順に名づけられるようだ。

さぁ、これで主要な問題は解決済だ。起動して24時間を過ぎて、今のところ新たな問題は見つかっていない。上手く行ったようだ。

0 件のコメント:

コメントを投稿