Linux CD-ROM ゲームシステム |
||
YAMAMORI Takenori ●yamamori |
この記事を書くにあたり、筆者は実際の作業手順をメモに書き留めながら まず1枚目のCD-ROMゲームシステムを作成した。そして次に、HDDの内容等を すべていったん消去してゼロの状態に戻し、そこから書き留めたメモだけを頼りに 再度同じ手順でCD-ROMゲームシステムを作成して動作確認を行なうという方法で 全体を検証してある。
CD-ROMのみでブートするLinuxシステムを作る上でのポイントの一つは、 initrdをうまく使うことにある。initrdの中の linuxrcでCD-ROMをマウントし、real-root-dev を切替えて/sbin/initに制御が渡る部分がうまくいけば、 あとはブートFDを作成してEl ToritoのCD-ROMを焼けばいいのだ。
もう一つのポイントはリードオンリーファイルシステムへの対応である。 一般的に、/bin, /usr, /sbin などのディレクトリは、OSのインストール終了後は 新たなアプリケーションを追加インストールしない限り書き込みは発生しない。
一方、/varや/tmpはもちろん書き込みが発生する。 /etcは、システム設定変更がない場合はほとんど書き込みは発生しないが、 それでも一部のファイルは書き込みが発生する。
/dev は、設定変更をしない限り新たなデバイスファイルが増えることはないが、 デバイスファイルのパーミッションや所有者が、システム動作中に動的に変化する。
今回のシステムでは、本当は書き込みが発生するはずの /devや/etcについても、 強引にCD-ROMに固定してしまっている。/varについても、 /var/runと/var/lockについてはシンボリックリンクで /tmp以下に飛ばして対処したが、その他の/var についてはCD-ROMに固定されている。
このようにしてしまっても問題がなかったのは、 今回のシステムでは、シングルユーザモードでゲームが起動しさえすれば よかったからだ。
仮に、今回のようなゲームシステムではなく、普通のLinuxシステムを CD-ROMだけで起動するようにするには、/etc, /var, /devなどについて、 RAMディスクやシンボリックリンクをうまく使って対処しなければならないだろう。
また、今回のゲームシステムでは、Xの設定やサウンド・ジョイスティックの設定が CD-ROMに決め打ちされている。CD-ROMの作成後、実際にいくつかの別のPCに、 作成したCD-ROMを入れて起動させてみたところ、古いビデオカードを使ったマシンを 除いて、ゲーム自体はちゃんと起動した。XサーバとしてXF86_SVGAを 使用する設定になっているため、多くの場合これで対応できるのだ。 ただ、やはりサウンドやジョイスティックは、ハード環境が合わず、動かなかった。 これらのハードの違いを、システムのブート時に自動認識して設定できるように すればいいのだが、おそらく、いろいろなマシンでのブートテストが必要になり、 かなり地道な作業を要すると思われる。
いずれにしても、これらは今後の課題としたい。