Archive: 2007/03/24

CentOSとSerial ATA

マンサクが彩る丘の向こうに日生港を望む
3/18 備前市日生町、みなとの見える丘公園にて

先日導入した「CentOS 4.4 64bits版」VIAVT8251によるSerial ATAインタフェースが認識されない問題へのトライ。

まず、CentOS 4.4ではkernelが「Serial ATAは無効」でビルドされているので、kernelの再構築が不可避である。

で、CentOSディストリビューション最新版のkernel-2.6.9-42.0.10.ELをビルドしなおすかと思ったのだが、それに問題があるから「Serial ATAは無効」にしているような気がするので、kernel.org mirrorからコミュニティ最新版の 2.6.20.4 でビルド。

# cd /usr/src/kernels
# tar jxfv ~/linux-2.6.20.4.tar.bz2
# cd /usr/src/
# ln -s kernels/linux-2.6.20.4 linux
# cp /boot/config-2.6.9-42.0.10.ELsmp .config
# make oldconfig
# make
# make modules_install
# installkernel 2.6.20.4 arch/x86_64/boot/bzImage System.map
新しいkernelで再起動すると
Initializing hardware...
でえらい時間がかかるようになった。VT8251の初期化に手間取っているのかと思いきや、/proc/modulesで見ると結局目新しいモジュールはロードされていなかった。

VIAのサイトを調べるとFedora Core 6用ながらSATA/PATA Driver Diskが提供されていたので早速パッチを適用する事に。ここで初めてsata_via.cを見てみたが、そもそもVT8251には全く対応してなかったらしい。なんだよ~

さて、パッチ作業は同梱のreadmeに従ってやればさほど難しい事はない。sata_viaとahciのありかが実際はdrivers/ataだったり、パッチのreject箇所を観てみるとテーブルの書き方が若干違ったりしたのでそこはかとなくいやな感じがしたが、意外にあっさりモジュール作成完了。

再び再起動すると

Initializing hardware...
はすんなり通過したもののやはりモジュールはロードされていなかった
# modprobe sata_via
コマンド投入すると何事もなくロードされたのでモジュールそのものは大丈夫っぽいので、取り敢えず/etc/modeprobe.conf
alias scsi_hostadapter ahci
alias scsi_hostadapter1 sata_via
と書いて強制的にロードされるようにしてみたび再起動。sata_viaはロードされているものの、SATAディスクを認識している気配はない。

というわけで本気で捜査開始。まずは「物理的にどうよ?」というわけでlspciに聞いてみる。

$ /sbin/lspci
00:00.0 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.1 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.2 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.3 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.4 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:00.5 PIC: VIA Technologies, Inc. K8M890CE I/O APIC Interrupt Controller
00:00.6 Host bridge: VIA Technologies, Inc.: Unknown device 6290
00:00.7 Host bridge: VIA Technologies, Inc. K8M890CE Host Bridge
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI bridge [K8T800/K8T890 South]
00:02.0 PCI bridge: VIA Technologies, Inc. K8T890 PCI to PCI Bridge Controller
00:0f.0 IDE interface: VIA Technologies, Inc. VT8251 AHCI/SATA 4-Port Controller
00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 07)
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90)
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 90)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8251 PCI to ISA Bridge
00:11.7 Host bridge: VIA Technologies, Inc. VT8251 Ultra VLINK Controller
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7c)
00:13.0 PCI bridge: VIA Technologies, Inc. VT8251 Host Bridge
00:13.1 PCI bridge: VIA Technologies, Inc. VT8251 PCI to PCI Bridge
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
02:00.0 VGA compatible controller: ATI Technologies Inc RV515 [Radeon X1300]
02:00.1 Display controller: ATI Technologies Inc RV515 [Radeon X1300] (Secondary)
04:01.0 Audio device: VIA Technologies, Inc. VIA High Definition Audio Controller
05:09.0 Multimedia controller: Unknown device 1745:2020
00:0f.0slotsに繋がっている事が判明。 続いて「デバイスIDはどうよ?」と尋ねたところ
$ /sbin/lspci -s 00:0f.0 -n
00:0f.0 Class 0101: 1106:3349
と応答。「0x3349」ですか。しかしSATA/PATA Driver Diskのパッチでは「0x5287」になってるんですけど?