突然フリーズするようになり、電源再投入すると再起動してしばらく順調に稼働するものの、数時間後にはまたフリーズする。/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
マザーボードの交換は神経を使う。稼働中のインスタレーションとの互換性が心配なのは以下の点。
- 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の日付をチェックすると更新されており、このファイルを内容を見ると、eth2とeth3という新しいデバイスが追加されている(このマザーボードには、オンボードとPCI32スロットの二つのNICがついている)。これらが新しいマザーボードで使えるNICなので、これらのエントリを基に新しいマザーボード用のネットワークスクリプトファイルを作る。
RedHat/Fedora/CentOS系のディストロでは、ネットワークデバイスは/etc/sysconfig/network-scripts/ifcfg-***(「***」はネットワークデバイス名、「eth0」「eth1」など)というファイルに記述されているので、先ほどの/etc/udev/rules.d/70-persistent-net-rulesの情報とlspciの出力(NICのチップなどのコメントのみ)でifcfg-eth2とifcfg-eth3のファイルを作成し、「ifup eth2」を実行してみるとネットワークがつながった。
もう一度整理すると
- /etc/udev/rules.d/70-persistent-net-rules
- /etc/sysconfig/network-scripts/ifcfg-***
- デバイス名(eth0、eth1、…)
- MACアドレス
eth0とeth1を修正したら、ブート時からこれらのインタフェースが使えるようになった。
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 件のコメント:
コメントを投稿