お願いお助けOpenBSD

10年前に新品で購入したPCにインストールできるメジャーなOSが減ってきた。思案した結果、ひとまずOpenBSDベースの河豚板を使ってみることにした。

件のPCは、ピノーが販売していたSizka Super-microDXという、少し癖のある代物だ。*1

何しろCPUがVortex86DXというx86互換の32bit SoCである。動作周波数は800MHz。メモリはオンボードのDDR2メモリが512MBだ*2

猛者ならFreeDOSを使ったり*3他のPCでクロスコンパイルしたOSを導入したりするかもしれないが、私はめんどくさがりなので、出来合いのビルド済み汎用OSをインストールして使用したい。したいのだが、セキュリティを気にして現行のOSから選択しようとすると、候補が少ないのだ。

インストール可能なOSが減ってきた理由は、Vortex86DXがサポートする命令セットの古さにある。Vortex86DXはi586*4の命令セットに概ね対応している*5。このSoCでOSを動かすためには、OSのバイナリはi586以前の命令で構成されている必要がある。i686*6以降の命令が含まれていると、実行時に該当する命令にたどり着いた時点でCPU例外が発生してストールする。

最近のLinuxx86-64のみのディストリビューションも多いのだが、x86(32bit)版をリリースしているものであっても、その中身は「i686以降をサポートする」だったりする。多種多様なアーキテクチャをサポートしているDebianでも、Debian 9 (stretch) にてi586はサポート対象外となっている*7

FreeBSD i386も、13.0-RELEASE以降ではi686が最低ラインだ。一方で12.x系はi586でも動作する……はずなのだが、なぜか12.2-RELEASE以降のGENERIC kernelのバイナリにはi686命令であるCMOVが含まれているため、i586では動作しない。この問題はFreeBSDのBugzillaに挙がっているようだが、先行きは不透明だ。

どうしたものかと思案していたところで、Vortex86DXを搭載したPCにてNetBSD 9.2とOpenBSD 7.0が動作したとの情報を発見した。

NetBSDOpenBSDなら、最近のビルドでも問題なく使えるようだ。

ということで勉強もかねて触ってみようと思ったのだが、誤解かもしれないが素のNetBSDOpenBSDはどちらもインストールが(他のOSと比較して)面倒くさい印象があるのでパス。NetBSDておくれLive Imageは良さそうだが、Vortex86DXで動かすには重そうなので*8、今回はパス。河豚板は起動時にコンソールを指定できるだけでなく、設定で永続化できるので、丁度よさそうだった。

今回は、あまり手間をかけずに環境を構築できる河豚板を使用して、OpenBSDCLI環境を構築することにした。まだ河豚板 7.1 202205011を入れただけの状態だが、今のところ問題なく動作している。

後で気づいたのだが、個体の問題なのか私のSuper-microDXは熱が原因らしきバスエラーが発生することがあるので、システムの利用と設定等の保存(ファイルシステムへの書き込み)を分離できる河豚板は割とマッチしているかもしれない……設定保存中にバスエラーが起きませんように。

*1:メディアなどで「煙草箱サイズ」と書かれていたが、個人的には、サイズ感はAppleの60W MagSafe電源アダプタに近いと思う。アレを1.3倍ぐらい厚くした感じだ。

*2:メモリは333MHz駆動らしいのだが、DDR2のメモリチップ規格に333MHzなんて存在しないので、意味を図りかねている。Vortex86DXのDDR2コントローラはDDR2-667までサポートしているようだが、DDR2-667(つまりメモリチップが667MHz駆動)の時のバスクロックは333MHzなので、このことを指し示しているのだろうか? それともクロックを下げてDDR2-400(400MHz駆動)よりも低い333MHzでメモリチップを動作させているのだろうか?

*3:CPU内蔵のフラッシュメモリがフロッピディスクドライブとして認識できるようになっていて、しかも出荷時にFreeDOSがインストールされている。

*4:初代PentiumMMX Pentiumの世代。

*5:噂によれば、実は一部のあまり使われない命令には対応していないらしいが……。

*6:Pentium ProPentium II~4の世代。

*7:正確に言えば「NOPL以外の全てのi686命令に対応しているi586 CPU」はサポートしている。でもそれって「ほぼi686」だよね。

*8:GUI前提っぽいので。