久しぶりにマジメなネタ!(笑)
色々としたサーバ遊びの題材として、HP製のProLiant MicroServerを使っています。とにかく小さくて、何よりも新品が安く買えます。私は1万5千円位で購入しました(^ ^)/
先日、ちょっとしたテストでシリアルポート(RS-232C)を使いたかったのですが、何気なく機材の裏を見たら・・・シリアルポートが付いていない???
サーバ機だとUPSからのシャットダウン信号を貰ったのするので、てっきり付いているものと思いましたが無い。あぁぁぁ。
USBを使った仮想シリアルポートじゃなくて、「本物のシリアルポート」が欲しかったもので、これはカードを追加するしかないなと思い、探してみたら・・・無いんですね、今時は。結構高価な複数のシリアルポートをサポートするボードはまだ流通している様ですが、そこまで必要ないしなぁ・・・と思案していたら、玄人志向さんで2S-LPPCIeというボードがあるのを見つけました。1ポートモデルの1S-LPPCIe/Uという製品もありましたが、PCIeはボードの固定の為に使うだけでUSBをシリアルに変換するだけみたいです。これじゃダメ。2S-LPPCIはPCIなのですが、PCIeを使いたいので2S-LPPCIeに決定。
さて、FreeBSD 9.2Rでは見事に認識しません!(笑)
チップのMCS9922に対応していないのですね。この辺りは色々と情報が出ていますが、2S-LPPCIeそのものでFreeBSDに対応されたこちらのサイトを参考にさせて頂きました。
先のサイトでは8.4にパッチを当てていますが、私は9.2で行きます(いや、なぜかMicroServerで8.4のインストールに失敗するんだ・笑)。
以下が8.4用のパッチでした。
--- ./sys/dev/puc/pucdata.c.orig 2013-03-28 22:04:51.000000000 +0900
+++ ./sys/dev/puc/pucdata.c 2013-06-19 11:07:09.000000000 +0900
@@ -1082,6 +1082,12 @@
PUC_PORT_2P, 0x10, 4, 0,
},
+ { 0x9710, 0x9922, 0xa000, 0x3002,
+ "NetMos NM9922 Dual UART",
+ DEFAULT_RCLK,
+ PUC_PORT_2S, 0x10, 4, 0,
+ },
+
{ 0xb00c, 0x021c, 0xffff, 0,
"IC Book Labs Gunboat x4 Lite",
DEFAULT_RCLK,
--- ./sys/dev/uart/uart_bus_pci.c.orig 2013-03-28 22:04:56.000000000 +0900
+++ ./sys/dev/uart/uart_bus_pci.c 2013-06-19 11:08:00.000000000 +0900
@@ -119,6 +119,7 @@
{ 0x9710, 0x9820, 0x1000, 1, "NetMos NM9820 Serial Port", 0x10 },
{ 0x9710, 0x9835, 0x1000, 1, "NetMos NM9835 Serial Port", 0x10 },
{ 0x9710, 0x9865, 0xa000, 0x1000, "NetMos NM9865 Serial Port", 0x10 },
+{ 0x9710, 0x9922, 0xa000, 0x1000, "NetMos NM9922 PCIe Serial Port", 0x10 },
{ 0x9710, 0x9900, 0xa000, 0x1000,
"MosChip MCS9900 PCIe to Peripheral Controller", 0x10 },
{ 0x9710, 0x9901, 0xa000, 0x1000,
ちょっとディレクトリが違ったりもしますが、上記を参考に9.2へパッチをあててkernelをリビルド。ついでにお約束の余分なドライバを削ってコンパクトのkernelを作りました。
こんな感じで認識されて、無事に使えていますよ?(^ ^)/
pci2: <ACPI PCI bus> on pcib2
uart2: <Non-standard ns8250 class UART with FIFOs> port 0xe800-0xe807 mem 0xfe8ff000-0xfe8fffff,0xfe8fe000-0xfe8fefff irq 16 at device 0.0 on pci2
uart3: <Non-standard ns8250 class UART with FIFOs> port 0xe400-0xe407 mem 0xfe8fd000-0xfe8fdfff,0xfe8fc000-0xfe8fcfff irq 17 at device 0.1 on pci2
良かった良かった!