PCIバスのSPARC機にPC用のATAカードを挿す話は(昔)ありましたが……
- Ultra 5 にPC用の安価な ATA-100インターフェースを増設してディスクアクセスを高速化する (web archive)
- PC用の安価なATA100カードをSolaris(SPARC)で使う
- http://trashbox.homeip.net/nownow/20061018/
SATAカードを挿したのは見かけなかったので残しておく。
PCI(Expressではない)のSATAカードを探すと、2023年3月現在、ふつーに買えそうなのはSiI3114のものだけです。(SILと書かれている商品もありますが、正しくはSIIの2文字目だけ小文字。)
こいつをPCIスロットに挿してOpenBoot PROM (OBP) の show-devs
で見ると /pci@1f,0/pci@5/raid@1
というデバイスが生えてます(最後の @1
はPCIカードを挿した場所による)。
ide
じゃなくて raid
と認識されるのでbootはできませんが、他のデバイスからNetBSD/sparc64をbootすれば、普通にsatalinkとして認識されて、普通に読み書きできます。
上記のリンク先の記事では、bootも含めてSolarisで普通に使うために(SolarisでドライバのあるCMD649の)RAID機能を殺すためにジャンパを切ったりROMを抜いたりしていますが、私の場合は(特にSolarisで使う予定はないので)NetBSDで認識できるカードであれば良くて、bootしたいとしてもOBPをうまく騙せれば良い(?)ということになります。
というか、使っているSiI3114カードのRAID機能を殺す方法が良くわからないし、たとえ殺したとしても多分Serial ATA controllerになるだろうから、結局IDE Controllerであるかのように騙してやらないといけないのは変わらない。
騙す方法は、NetBSD/sparc64 FAQ を真似して nvedit
で
dev /packages/SUNW,builtin-drivers
: class010400
f 9 my-space + " config-b!" $call-parent class010100
;
device-end
というのを書いて、nvstore
と setenv use-nvramrc? true
してやればOK。
FAQのと違うのは class018000
を class010400
にしただけです。つまりRAID controller (010400) を普通のIDE controller (0101xx) であるかのように騙しています。(元の018000はOther mass storage controllerとのこと。)
あとOBPのforthに不慣れな人(自分)向けの注意点としては " config-b!"
の最初の "
の後のスペースを忘れないようにすることでしょうか。
これで、reset-all
した後に show-devs
で見ると /pci@1f,0/pci@5/ide@1
と騙されてくれて、boot もできるようになりました。
nvalias disk10 /pci@1f,0/pci@5/ide@1/disk@0,0
boot disk10
Solarisの場合はOBPを騙すとOS側にも影響が出るようですが、NetBSDの場合は最初から無関係に(RAID controllerではなく)ただのSerial ATA controllerとして扱うようなので問題ない(?)です。
なお、速度に関しては標準のATA66と変わらないので期待しない方が良いです。(PCIバスなのでしょうがない。)
どちらかというと、HDD故障などでいまさらATAのHDDを調達しなくても、どこの御家庭でも余っている(?)SATAのHDDを使いまわせるのが良いところでしょうか。
関係ないですが、ATA-SATA変換器(いくつか試した)経由でSATA SSDをオンボードIDEに繋いでもbootできなかったです。NetBSDから普通に読み書きはできるのですが。原因不明。