[English] [Japanese]

Linux CD-ROM ゲームシステム

 
  YAMAMORI Takenori ●yamamori@kt.rim.or.jp

●シングルユーザモードでゲームが起動するようにする

ここで、loginせずに、いきなりゲームができるように、 シングルユーザモードでシステムが起動するように設定する。 そのためには、/etc/inittabを修正して、 システムのデフォルトのrun levelを1に変更する。

/etc/inittabの修正
id:3:initdefault:
   ↓
id:1:initdefault:

なお、/etc/inittabを設定したつもりでも、 そのあとにXconfiguratorを起動すると、 /etc/inittabのデフォルトrun levelが3または5に 書き換えられてしまうので注意が必要だ。

S99game の作成

シングルユーザモードでは、/etc/rc.d/rc1.d 以下のスクリプトが実行される。 そこで、/etc/rc.d/rc1.d/S99gameというシェルスクリプトを新たに作成して、 ここに、ゲーム起動のためのコマンド等を書く。 S99gameのパーミッションのxフラグも忘れずに立てておく。

なお、本来ならばrcスクリプトは、引数のstartをチェックしたり しなければならないが、それは省略している。 S99gameのリストを以下に示す。

●リスト /etc/rc.d/rc1.d/S99game
#!/bin/sh

/etc/rc.d/init.d/xfs start

PATH=/usr/X11R6/bin:/usr/local/bin:"$PATH"; export PATH
HOME=/root; export HOME
cd

mkdir /tmp/gamefd
umount /dev/fd0
until mount -t vfat /dev/fd0 /tmp/gamefd
do
  echo
  echo -n 'Insert game FD and type [ENTER] or q to skip: '
  read a
  if [ X$a != X ]; then
    break
  fi
done

xinit &

S99game の最初の方の“/etc/rc.d/init.d/xfs start”という行で、 フォントサーバを起動している。 これは、Vine 2.0の場合、XF86Configファイルのフォント設定が、 フォントサーバを使うようになっているためで、 xfsを起動しないとXサーバが起動しない。 別の方法として、XF86Configをフォントサーバを使わないように 設定変更してしまうことも考えられるが、ここではより簡単な方法として xfsを起動することにした。

次に、環境変数のPATHHOMEを設定している。

その後、FDのマウントを試みて、失敗した場合はメッセージを出し、 再度マウントを試みるようにしている。

/root/.xinitrc の作成

S99gameの最後の行でxinitを実行し、Xを起動している。 これにより、/root/.xinitrc の記述にしたがってXのアプリケーションが起動するので、 ここにゲームを起動するためのコマンドを書いておく。

●リスト /root/.xinitrc
exec circuslinux --digital

ここではウィンドウマネージャすら必要ないため、 このようにたった1行の単純な.xinitrcになる。

S99game.xinitrcの設定ができたら、 ここでゲームのセーブデータ用FDをumountしてドライブから抜いてから、

# /sbin/init 6

としてリブートしてみよう。すると、起動途中で

Insert game FD and type [ENTER] or q to skip:

と表示されるので、ゲームのセーブデータ用FDを入れて[ENTER]を押すと次に進む。 FDを入れずに q [ENTER]と入力すると、FDなしで次に進む。

そして、loginなしでいきなりゲームが起動するはずだ。 ここまでで、CD-ROMゲームシステムの完成時の外観がつかめたはずである。

○メンテナンス作業モード

ところで、S99game内でxinit&を付けて起動しているため、 ゲームの起動と並行してS99gameスクリプトは終了する。 そして、S00singleに処理が戻って、その中でシングルユーザシェルが起動される。 これにより、ゲーム中も仮想画面を切替え、シェル上でメンテナンス作業を 行なうことができる。 仮想画面の切替えは、

[Ctrl]+[Alt]+[F1] -- コンソール上のシェルの画面、
[Ctrl]+[Alt]+[F2] -- ゲームの画面、

となる。

シェル画面への切替え直後はプロンプトが見えないため、 一度[Enter]を押してみること。

なお、通常のマルチユーザモードでは6画面+Xの画面となるが、 それとは違って、この2画面のみになるので注意すること。 また、このシェルのPATHHOMEは、S99game 内で設定したものとは違うので、これも注意すること。

シングルユーザモードでのゲームの起動を確認したら、 いったんゲームを終了してからシェル上で、

bash# telinit 3

と入力することにより、通常のマルチユーザモードに移行することができる。 今後は、HDDからのブートのたびにゲームが起動してしまうため、 HDD上での作業を行なうために、ゲームを終了してtelinit 3 を実行することを覚えておく。

なお、シングルユーザモードのシェル上でexitと入力すると、 再度ランレベル1のスクリプトが実行され、再びゲームが起動する。


To 『Linux CD-ROM ゲームシステム』index


このページは、(株)アスキー TECH Linux Vol. 2 『CD-ROMだけですぐに遊べる! Linux ゲームシステム全解説!!』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
YAMAMORI Takenori 山森丈範
yamamori@kt.rim.or.jp