【夢を超えた】Mac版XM6iを使ってNetBSD/x68kを動かすという話【夢の、頂きへ】

急にお金M68Kアーキテクチャコンパイルされたバイナリが必要になることってありますよね。

そんなときあなたならどうしますか?
誰かに借りるにしても、理由を説明して頭を下げないといけない・・何より人間関係が気まずくなるのだけは避けたいものですよね。
そんなあなたにおすすめなのが、即日融資でお金を借りるXM6iにNetBSD/x68kをインストールしてコンパイルする方法です。

XM6iとは?

XM6i - クロスプラットフォーム X68000/X68030 エミュレータだそうです。
XM6i - クロスプラットフォーム X68000/X68030 エミュレータ

X68000/X68030というのは1987年3月28日にシャープが発売したパーソナルコンピューターだそうです。
X68000 - Wikipedia

オープンソースカンファレンス広島のjapan netbsd users groupのブースでは毎年X68000/X68030を使って、すごーい!たーのしー!ことをやっているので、興味がある人は見に行ってみると変なスイッチが入ったり入らなかったりするかもしれません。
OSC2016広島 (2016/11/27) 発表スライド

インストール方法とMac版の問題

配布元のダウンロードページに
http://xm6i.org/download.html

Mac 版について

ver 0.53 から SDL2 を使用しているため、 サウンドなし版、あり版の区別はなくなりました。 
Mac OS X 10.8 でビルドし、10.11 でも動作を確認しています。 それ以外のバージョンについては分かりません。
 

とあったので、ダウンロードして、展開し、バイナリを実行したところ、異常終了してしまいました。

とっても困っていたところ、@LabDrunkerさんに"MacPortsを使ってGCC5を入れて、/opt/local/lib以下のlibstdc++が使われるようにしたら、動くようになりました。"という貴重なアドバイスを頂きました。

どうして、この解決方法に気づいたのか質問してみたところ、

とのご回答をいただきました。ぼんくら物理学者... だと... こいつ…かなりの切れ者...

確かにotoolを使ってxm6iがリンクしている共有ライブラリを調べてみると、/opt/loca/lib以下のlibstdc++が使われているようです。

実験として/opt/localを掘って/usr/libにシンボリックリンクをはってみましたが、xm6iが異常終了してしまいました。

これは@LabDrunkerもおっしゃっていますが、gcc5からlibstdc++ではデフォルトで新しいABIを利用するようになっているためと思われます。(そしてMac版xm6iはgcc5を使ってコンパイルされているためと思われます)

早速MacPortsから、gcc5をインストールしてみました。



問題が解決したので、XM6iが起動するようになりました!

NetBSD/x68kのインストール

早速準備が整ったので、NetBSD/x68kをインストールしてみます。

やり方は、@tsutsuiiさんのページに詳しい方法が書いてありますので、参考にしてください。
NetBSD/x68k on XM6i ver 0.41 - クロスプラットフォーム X68000/X68030 エミュレータ

インストールCD ISOイメージ

http://ftp7.jp.NetBSD.org/pub/NetBSD/iso/6.1.3/ の
iso ディレクトリ内の NetBSD-6.1.3-x68k.iso (約162MB) をダウンロードして c:\XM6i\NetBSD\ に置く。

もちろん、OSのバージョンは適宜読み替えてください。

インストールには数時間かかりますが、きっとうまくいくはず... です...

↓ちなみに失敗例

無事インストールすることが出来ました!

失敗した原因は


です。

よって、ノリでインストールしなければ、インストールに時間はかかるものの問題無くNetBSD/x68k on XM6i Mac版の環境を楽しむことが出来ます!

Mac版XM6iのネットワークの設定は

 Mac OS X 版では Nereid イーサネットエミュレーションのホスト側に bpf(4)
  を使用しており、ホストマシンを介して外部ネットワークとの通信が可能です。
  ただし Mac OS X 側の制約によりホストマシン自身との通信は行えません

とあります。

Mac版のXM6iを試すような人にパソコンを一台しか持っていない人なんていないと思いますので、問題ないと思います。

ああ・・次はpkgsrcだ...