Ratoc REX-PCI15PM (SiI 3124) で e-SATA


我らが?浪速の電子機器メーカーであるラトックシステムさんのPCIバス用e-SATAカードを購入。PCI-Express用の倍くらいの値段するカードだが、新品の半値の中古カードを発見。可動部はないから特に問題なさそう。

外箱

マニュアルを読むと、Windows のデバイスマネージャでは SiI 3124 が搭載されたカードのようです。

何も気にせず店頭在庫で購入したのですが、ネットで調べると 8.0-RELEASE で experimental にサポートされた siis ドライバで動くとのことらしいのですが、まともに動かすには 8-STABLE か 9-CURRENT でとのこと。ちょうどマシンは 8-STABLE で運用中だったので好都合。

ただ素の 8-STABLE ではどうやっても dmesg に現れず。kldload /boot/kernel/siis.ko で動くとの情報もありましたが、うまくいかず。/boot/loader.conf に siis.ko と ahci.ko を追加してもうまくいかず。

カスタムカーネルを作ったのですが /usr/src から make KERNELCONF=SIIS (カーネルコンフィギュレーションファイルの内容は後述)でカーネルを作ってインストールしてもなぜか GENERIC がロードされてしまい、いい加減いらっときたのでこうしました。

(注)正しくは make buildkernel KERNCONF=SIIS で、KERNEL じゃない、というオチでした。


ちなみにマシンは IBM xSeries 205 です。内蔵 HDD はエミュレートじゃないガチのSCSIですがRAIDではなく単に36GBのHDDが1本繋がっているだけ。REX-PCI15PM は BIOS ROM がないので特に考えることなく増設できます。

(1) カーネルコンフィギュレーションファイル SIIS を作成。
最初は不要なデバイスを全部消すつもりでしたが、2.xあたりとはデバイスの数が段違いなので、IPv6だけ消してあとは諦めました。
--- /usr/src/sys/i386/conf/GENERIC      2010-10-18 13:49:31.000000000 +0000
+++ /usr/src/sys/i386/conf/SIIS 2010-10-20 02:55:21.000000000 +0000
@@ -18,10 +18,10 @@
 #
 # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.519.2.11 2010/08/11 07:11:20 bschmidt Exp $

-cpu            I486_CPU
-cpu            I586_CPU
+#cpu           I486_CPU
+#cpu           I586_CPU
 cpu            I686_CPU
-ident          GENERIC
+ident          SIIS

 # To statically compile in device wiring instead of /boot/device.hints
 #hints         "GENERIC.hints"         # Default places to look for devices.
@@ -37,7 +37,7 @@
 options        SCHED_ULE               # ULE scheduler
 options        PREEMPTION              # Enable kernel thread preemption
 options        INET                    # InterNETworking
-options        INET6                   # IPv6 communications protocols
+#options       INET6                   # IPv6 communications protocols
 options        SCTP                    # Stream Control Transmission Protocol
 options        FFS                     # Berkeley Fast Filesystem
 options        SOFTUPDATES             # Enable FFS soft updates support
@@ -93,13 +93,21 @@
 device         fdc

 # ATA and ATAPI devices
-device         ata
-device         atadisk         # ATA disk drives
-device         ataraid         # ATA RAID drives
-device         atapicd         # ATAPI CDROM drives
-device         atapifd         # ATAPI floppy drives
-device         atapist         # ATAPI tape drives
-options        ATA_STATIC_ID   # Static device numbering
+#device                ata
+#device                atadisk         # ATA disk drives
+#device                ataraid         # ATA RAID drives
+#device                atapicd         # ATAPI CDROM drives
+#device                atapifd         # ATAPI floppy drives
+#device                atapist         # ATAPI tape drives
+#options       ATA_STATIC_ID   # Static device numbering
+
+# Modular ATA
+device         atacore
+device         atapci
+device         ataintel
+options                ATA_CAM
+
+device                 ahci

 # SCSI Controllers
 device         ahb             # EISA AHA1742 family
@@ -159,6 +167,9 @@
 device         pst             # Promise Supertrak SX6000
 device         twe             # 3ware ATA RAID

+# optional e-sata IF
+device         siis
+
 # atkbdc0 controls both the keyboard and the PS/2 mouse
 device         atkbdc          # AT keyboard controller
 device         atkbd           # AT keyboard
※ 重村さんのブログを参考にさせていただきました。感謝。

で、以下のように昔ながらの方法でコンパイル。
cd /usr/src/sys/i386/conf
config SIIS
cd ../../compile/SIIS
make depend
make kernel
make kernel-install
これで /boot/kernel がちゃんと置き替わったことを目で確認。

ちなみにブートディスクが U-ATA な人はこのカーネルだとデバイス名が変わるので、ちゃんと準備しないと起動しなくなって CD ブートで救援することになるのでご注意を。(うちは SCSI だから関係ない。これも好都合でした)。あるいは従来のataデバイスでブートディスクはハンドルできるようにしておくのがよろしいかと。

で、再起動します。

dmesg がこれ。

Copyright (c) 1992-2010 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 8.1-STABLE #0: Wed Oct 20 03:12:54 UTC 2010
    root@xxxxxxxxxxxxxxxx:/usr/src/sys/i386/compile/SIIS i386
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz (2798.66-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0xf27  Family = f  Model = 2  Stepping = 7
  Features=0xbfebfbff
  Features2=0x4400
real memory  = 1073741824 (1024 MB)
avail memory = 1036148736 (988 MB)
ACPI APIC Table: 
ioapic0  irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0:  on motherboard
acpi0: [ITHREAD]
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, e00000 (3) failed
acpi0: reservation of 1000000, 3f000000 (3) failed
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
cpu0:  on acpi0
pcib0:  port 0xcf8-0xcff on acpi0
pci0:  on pcib0
agp0:  on hostb0
pcib1:  at device 1.0 on pci0
pci1:  on pcib1
vgapci0:  mem 0x83000000-0x83ffffff,0x88000000-0x8fffffff irq 16 a
t device 0.0 on pci1
uhci0:  port 0xb000-0xb01f irq 16 at device 29.
0 on pci0
uhci0: [ITHREAD]
usbus0:  on uhci0
uhci1:  port 0xb040-0xb05f irq 19 at device 29.
1 on pci0
uhci1: [ITHREAD]
usbus1:  on uhci1
ehci0:  mem 0x92c00000-0x92c003ff irq 23 at d
evice 29.7 on pci0
ehci0: [ITHREAD]
usbus2: EHCI version 1.0
usbus2:  on ehci0
pcib2:  at device 30.0 on pci0
pci2:  on pcib2
siis0:  port 0x7000-0x700f mem 0x80a00000-0x80a0007f,0x80a08000-0
x80a0ffff irq 17 at device 1.0 on pci2
siis0: [ITHREAD]
siisch0:  at channel 0 on siis0
siisch0: [ITHREAD]
siisch1:  at channel 1 on siis0
siisch1: [ITHREAD]
siisch2:  at channel 2 on siis0
siisch2: [ITHREAD]
siisch3:  at channel 3 on siis0
siisch3: [ITHREAD]
bge0:  mem 0x80a10000-
0x80a1ffff irq 19 at device 3.0 on pci2
miibus0:  on bge0
brgphy0:  PHY 1 on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
bge0: Ethernet address: 00:02:55:__:__:__
bge0: [ITHREAD]
vgapci1:  port 0xa000-0xa0ff mem 0x91000000-0x91ffffff,0x90400000-
0x90400fff irq 23 at device 4.0 on pci2
ahc0:  port 0x7800-0x78ff mem 0x80a02000-0x80a02fff
 irq 22 at device 5.0 on pci2
ahc0: [ITHREAD]
aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
isab0:  at device 31.0 on pci0
isa0:  on isab0
atapci0:  port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xb480-0
xb48f irq 18 at device 31.1 on pci0
ata0:  on atapci0
ata0: [ITHREAD]
ata1:  on atapci0
ata1: [ITHREAD]
pci0:  at device 31.3 (no driver attached)
pci0:  at device 31.5 (no driver attached)
acpi_button0:  on acpi0
atrtc0:  port 0x70-0x77 irq 8 on acpi0
fdc0:  port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on acpi0
fdc0: [FILTER]
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
ppc0:  port 0x378-0x37f irq 7 on acpi0
ppc0: Generic chipset (EPP/NIBBLE) in COMPATIBLE mode
ppc0: [ITHREAD]
ppbus0:  on ppc0
plip0:  on ppbus0
plip0: [ITHREAD]
lpt0:  on ppbus0
lpt0: [ITHREAD]
lpt0: Interrupt-driven port
ppi0:  on ppbus0
atkbdc0:  port 0x60,0x64 irq 1 on acpi0
atkbd0:  irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
atkbd0: [ITHREAD]
psm0:  irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model IntelliMouse Explorer, device ID 4
uart0:  port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: [FILTER]
uart1:  port 0x2f8-0x2ff irq 3 on acpi0
uart1: [FILTER]
pmtimer0 on isa0
orm0:  at iomem 0xde000-0xecfff pnpid ORM0000 on isa0
sc0:  at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0:  at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
p4tcc0:  on cpu0
Timecounter "TSC" frequency 2798664068 Hz quality 800
Timecounters tick every 1.000 msec
(noperiph:siisch0:0:-1:-1): rescan already queued
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 480Mbps High Speed USB v2.0
ugen0.1:  at usbus0
uhub0:  on usbus0
ugen1.1:  at usbus1
uhub1:  on usbus1
ugen2.1:  at usbus2
uhub2:  on usbus2
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 6 ports with 6 removable, self powered
ada0 at siisch0 bus 0 scbus0 target 0 lun 0da0 at ahc0 bus 0 scbus4 target 0 lun 0
da0:  Fixed Direct Access SCSI-3 device
da0: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
da0: Command Queueing enabled
da0: 34715MB (71096640 512 byte sectors: 255H 63S/T 4425C)
ada0:  ATA-8 SATA 2.x device
ada0: 300.000MB/s transfers (SATA 2.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 953869MB (1953525168 512 byte sectors: 16H 63S/T 16383C)
cd0 at ata1 bus 0 scbus6 target 0 lun 0
cd0:  Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
Trying to mount root from ufs:/dev/da0s1a
bge0: link state changed to UP

なるほど、U-ATA 接続の CD-ROM は SCSI エミュレーションで cd0 になってますね。(従来のドライバなら acd0)

sysinstall でラベル設定することになるのですが、画面を呼び出すとちゃんと da0 か ada0 か聞いて来ます。

画面イメージ

ぐへへ。よだれが出そうなくらい大きなディスク。

ポートマルチプライヤ対応のカードですが、その辺は試してません。それでも PCI スロットしかないマシンでファイルサーバ的に使うのであればこれはありがたいです。

ada とかって何ぞやといった詳しいことは後藤さんの FreeBSD Dairy Topics の記事をご覧あれ。



筆者の FreeBSD なページ へ戻る