2008年9月2日火曜日

O2にOpenBSD 4.3をインストール

我が家にはR12000を積んだO2がある。2〜3年前にOpenBSDを導入したっきり放置していたのだが,現在執筆中の書籍で「遅いマシン」での動作検証が必要になったので引っ張り出して最新OS環境をインストールすることにした。Linuxは現在もR10000系に未対応なので,OpenBSDかNetBSDを選ぶことになる。


選択したのはOpenBSD 4.3。リリース日が新しいうえ,コンソール・ドライバがO2のビデオ・カードに対応しているからだ。NetBSDにもすでにコードは入ってるようだが,OpenBSDでは安定版で使えるのが嬉しい。以前はシリアル・コンソールを使わざるを得ず,少し面倒だった。クロスのシリアル・ケーブルって使おうとすると見当たらないんだよなぁ(←部屋を整理しろ)。


それでいつものように「cd43.iso」を落としてきてCD-ROM作成してブート…と行きたかったのが,イメージの問題なのかドライブの問題なのか「media error」が出てブートしない。「install43.iso」もダメだし,NetBSDのイメージもブートしなかった。ARCSからファイル・システムが見えないのでイメージの問題だと思うのだが,こうもそろってダメということはドライブの問題かもしれない。ちなみにIRIXのインストールCDはきちんと読めたしブートもした。


仕方なくDHCP/TFTPサーバーを用意してネットワーク・インストールする。/etc/dhcpd.confに次の行を追加してdhcpdを起動。TFTPサーバーは面倒なのでWindowsで「Poor TFTP Server」を動かすことにした。192.168.0.103は,そのWindows機のIPアドレスだ。


host o2.localdomain {
option tftp-server-name "192.168.0.103";
next-server 192.168.0.103;
filename "bsd.rd";
hardware ethernet 08:00:69:XX:XX:XX;
fixed-address 192.168.0.99;
}

これでARCSから「bootp()bsd.rd」を実行すればインストーラが起動する。あとは通常のインストール作業と同じだ。インストーラ起動後は,特に問題もなくOpenBSDがインストールできた。


ちなみにLinuxでR10000系のO2がサポートされないのは,キャッシュの整合性を保つためのハードウエアが不足していることで,メモリー・アクセスの投機的実行によってデータが破壊される可能性があるため(参照)。安全に稼働させるにはカーネルの重要なコードを先頭8MBエリアに配置するなどの対策を採る必要があるようだが,そこまでの改造はできないということなのだろう。NetBSDもこの辺の問題が未解決のようで,「DMA転送が始まると不安定になる」ようだ。


じゃあOpenBSDはどうなのか,というと,インストール用ドキュメントに次のように書いてある。


On O2's with R10000 CPUs the Speculative Dirty problem is not
handled in any special way. However, so far, we have not seen
any problems from this behaviour.

「何も対策してないけど別に問題ないしー」……で,ですよねー。まぁ,OpenBSD/sgiのページに一応未解決の課題として挙げられてはいる。

0 件のコメント: