Mac-On-Linux 奮闘記 (失敗編)
TROUBLE REPORT
Mac-On-Linux
Mac-On-Linux は、PowerPC Linux 上で、Macintosh をエミュレーションするソフトウェアです。
描画速度はあまり速くないそうですが、PowerPC をネイティブに操作するそうなので、処理速度的にはかなりいいそうです。ROM イメージをつかうので、互換性もかなりいいとか・・・。
ということで、実験もかねて使用してみることにします。
今回は、以前に Vine Linux 2.1CR for PPC を G4 Dual へインストール で紹介した Vine Linux を使用します。
ultra0 にはすでに MacOS 9 が HFS+ 上にインストールされていて、ultra1 に Vine Linux がインストールされています。
ROM イメージの取得
まず、ROM イメージの準備です。
今回使用する Macintosh は、いわゆる New World 機で Mac OS 9 が導入されていますので、システムフォルダにすでに ROM イメージが用意されています。
システムフォルダ内の Mac OS ROM というファイルがそれで、うちの Macintosh だと、容量は 4.9MB だそうです。
フロッピーで、などというようには運べなそうなので、Linux でもマウントできる HFS フォーマットのドライブにコピーすることにしました。
まず、Mac OS を起動して、システムフォルダ内の "Mac OS ROM" を、HFS パーティションへコピーします。
続いて、再起動して今度は Vine Linux を起動します。
先ほど "Mac OS ROM" ファイルをコピーしたパーティションをマウントして、そのディレクトリへ移動します。今回は /dev/hdb15 がそれにあたりました。それを、/mnt/HFS にマウントしたとします。
cd /mnt/HFS
strip_nwrom "Mac OS ROM" /usr/lib/mol/rom/rom.nw
これで、ROM イメージの導入は完了です。
設定ファイルの確認
ROM イメージの導入が終わったら、つづいて設定ファイルの編集です。
/etc/molrc を編集することになるのですが、Vine Linux 2.1CR の場合、すでに必要項目の設定が終わっているようなので、ざっと確認する程度にします。
Vine Linux のページを見ると、最低限必要な設定の項目は次のようになっています。
- ram_size
- blkdev
- resolution
- depth
- keyboard_id
- mouse_protocol
ram_size:
Mac-On-Linux が使用するメモリ容量を設定します。Vine Linux の設定では 32 となっているようです。今回はとりあえず、256 くらいに設定してみることにします。
blkdev:
どのデバイスを MOL で使用するかを記述してあるそうです。/dev/hda や /dev/hdb がかかれているので、とりあえずこのままにしてみます。
resolution:
起動時の解像度です。Vine Linux では、640/480/75 となっていました。横/縦/周波数 の順で並べられています。とりあえず、800/600/75 にすることにします。
depth:
発色数です。Vine Linux の設定どおり、32 を使うことにします。
keyboard_id:
キーボードの種類です。Vine Linux の標準では Apple Extended Keyboard が指定されています。とりあえず、これを使用してみることにします。
mouse_protocol:
マウスの種類を指定するところです。Vine Linux 2.1CR のカーネルでは、どの種類のマウスも usb として使用するそうなので、usb と記述します。
起動させようとするが…
ROM イメージと設定ファイルの準備が終わったら、いよいよ Mac-On-Linux の起動です。
コマンドラインから、startmol と入力します。
起動音とともに Mac-On-Linux が起動しました。・・・、がすぐに停止してしまいました。あれ?
画面に出力されたうち、エラーメッセージのようなものを抜き出して見ます。
- Opening the video-mode database '/etc/fb.modes': そのようなファイルやディレクトリはありません
- ----> (disk_open) Opening /dev/sdb: そのようなデバイスはありません
- ----> (disk_open) Opening /dev/sda: そのようなデバイスはありません
- SIGNAL セグメンテーション違反です in thread main-thread
- セグメンテーション違反です
という状況なので、まずは不要と思われる blkdev の項目を削除することにします。blkdev: の /dev/sda と /dev/sdb の項目を削除しました。
また、/etc/fb.modes というファイルがないということなので、その部分を参照している設定部分を削除します。Vine Linux のページにあった、必須項目には含まれていないので、消してしまって問題ないでしょう。
一応、詳細は man fbset や man fb.modes で参照できるそうですが、今回はとりあえず後回しにして削除します。
さて、これでエラーの原因となった部分が取り除かれたはずです。ふたたび、startmol を実行します。
やはり、セグメンテーション違反で終了です。
途中で変更した、ram_size や resolution などを元に戻してみましたがやはりだめでした。
思い切って、Vine Linux のページの必要項目だけを設定した molrc ファイルを用意してみました。すると、今度は真っ黒画面になって停止こそしていしまいましたが、ウィンドウは表示されるようになりました。
しかしながら、その先がいっこうにすすみません。
しょうがないのでもう一度、ディフォルトの設定ファイルに戻してみました。そして、そのなかで、start_on_console と enable_console_video、そして enable_xvideo の項目を no に変更してみました。すると、いままで発生していたセグメンテーション違反は表示されなくなりました。ただし、ウィンドウすら表示されなくなりましたが・・・。
断念
Mac-On-Linux のページを見てみると、ユーザガイド のページに mol-0.8.53-2.ppc.rpm が公開されていたので、それで再び試してみることにします。ダウンロードしてアップグレードを行います。
ところが mol-0.8.53-2.ppc.rpm をインストールしたら、startmol でエラーが発生するようになってしまいました。なんでも mol というモジュールが見つからないということです。
一度、mol-0.8.53-2.ppc.rpm を削除して、mol-0.8.50-0vl2. を再インストールしなおしました。すると、startmol 自体は起動し、以前のとおりのセグメンテーション違反まで復帰することができました。
しかし、それ以上がどうしてもできません。
Dual CPU のシステムには対応していないのでしょうか・・・。時間ばかりが過ぎてしまい、なかなか解決の糸口がつかめないので、残念ですがとりあえず、断念することにしました。