NetBSD/dreamcast: NetBSD/dreamcast の使い方
序 (トップ)
“NetBSD を動かすために Dreamcast を買ったところです。どうしたらいい?”何が問題なのかさえわかっていれば、 Sega Dreamcast で NetBSD を動くように するのはいたって簡単なことです。このドキュメントは、 DC/NetBSD 初心者に加えて NetBSD 初心者も対象としています。ただし、ある程度の UNIX 的な知識は 前提としています。このドキュメントに載せた情報は、 port-dreamcast メーリングリストのアーカイブ、 Marcus Comstedt のホームページ http://mc.pp.se/dc/ 、 BeTips.net http://www.betips.net 、 Josh Tolbert's Dreamcast How-to、 および筆者個人の試行錯誤の結果から選りすぐりました。
システムをまともに使うためには書き込み可能なファイルシステムが必要なので、 この HOWTO では Dreamcast をネットブートさせることに集中します。 CD からのブートはテスト用には便利ですし、 “ただのお遊び”でそうしたい人たちもいるので、 CD からのブートに関する簡単な説明もしておきます。
必要なもの (トップ)
下記のものが必要です:
- Dreamcast ゲーム機 (2000 年 9 月以前に製造されたものをおすすめします (それより後に製造されたものでも動いたとの情報もありますので、 メーリングリストのアーカイブで確認してください))
- Dreamcast キーボード
- オプション - Dreamcast マウス (本稿執筆時点ではドライバーがありません。 あなたが書いてみませんか?)
- Windows が動いている PC
- NetBSD が動いている PC (Linux や他の *BSD でもよいはずです。 BeOS は step 3 が行なえません)
- ブランク CD-R (CD-RW は Dreamcast では読めません)
- Josh のサイト (または ミラー) で配布されているブート可能な NetBSD カーネル。
- “mkhybrid” と CD を焼くためのプログラム (筆者は BeOS で CD Burner を使っていますが、ふつうは “cdrecord” でしょう)
ブータブルカーネル CD を作る (トップ)
- ダウンロードしたカーネルを適当な場所に展開します。 audio.raw と kernel.raw というファイルがあるはずです。
- 最初に audio.raw をオーディオトラックとして焼きます。残りのセッション用に
ディスクをオープンしたままにしておいてください。 cdrecord
では以下のようにします:
# cdrecord dev=0,1,0 -multi -audio audio.raw
もちろん、この dev=0,1,0 は、お使いのシステムに合った値に変える必要が あります。これは cdrecord -scanbus で調べられます。 - kernel.raw をデータとして焼きます。 cdrecord では以下のようにします:
# cdrecord dev=0,1,0 -multi -xa1 netbsd-kernel.raw
この "-xa1" オプションは、 cdrecord 2.01 で "-xa" に変わりました。 CD-R を XA mode 2 form 1, 2048 バイト毎セクターで焼くために必要なオプションは、 cdrecord のマニュアルページに書いてあります。お使いのバージョンの cdrecord で "-xa1" でも "-xa" でもうまくいかない場合は、 "-xa2" も試してみてください。
テスト CD を焼く場合:
- ダウンロードしたイメージを DiscJuggler を使って焼きます。この CD を Dreamcast に入れて電源を入れた際にブートメッセージが出れば、その Dreamcast は使えるということです; もしそのマシンが 2002 年 9 月より後に 製造されたものである場合は、 メーリングリストでお知らせください。
- CD 上にファイルシステムを作ってテストしたい場合:
- http://www.NetBSD.org から HPCSH tarball を取ってきて、適当な場所に置きます
-
/home/dreamcast/dev/
で# sh MAKEDEV all
を実行します - この配布物を CD に焼くため、 mkhybrid でイメージを作ります:
# mkhybrid -o DCBSD.img -V DCNetBSD -a -r /home/dreamcast/
-V
はボリュームラベル、-a
はこのディレクトリー以下の全ファイル、-r
は Rock Ridge 拡張 (必須ではないが、指定しても問題はない) を意味します。 - DiscJuggler CD を Dreamcast に入れて電源を入れます。ルート FS を尋ねるプロンプトでは “gdrom” と打ち込みます; ダンプデバイスを尋ねられたら “Enter” を押します。
- ブート CD を、さきほど作ったファイルシステム CD に入れ換えます
- ファイルシステムを尋ねるプロンプトで “cd9660” と打ち込みます; これでシングルユーザーモードに入るはずです。
NFS サーバー & ファイルシステムの準備 (トップ)
- Josh のサイトから world ファイルを取ってきます。
- このファイルを、お使いの *BSD/Linux PC の適当な場所に展開します。
-
/etc/exports
ファイルを用意します (書式については exports(5) マニュアルを参照) 。 Josh のサイトに例 があります。以下の点に注意してください:-
-maproot=0
します。さもないと、 Dreamcast はファイルシステムをマウントできません。 - 共有可能なネットワークかホストを指定します; さもないと、 全世界から書き込み可能になってしまい、 危険です。
-
- mountd と nfsd が動いていることを確認します; 動いていれば、
ps aux | grep '(mount|nfs)'d
でそれらが表示されます。表示されない場合、 それらを起動するため、 root で “mountd” と “nfsd” を実行します; 今後のブート時にこれらを自動的に起動するようにするため、/etc/rc.conf
を編集して、nfs_server=YES
,lockd=YES
,statd=YES
を書きます。 -
/etc/dhcpd.conf
を設定します (このファイルの書式は man dhcpd.conf(5) 参照) 。設定例が Josh のサイトにあります。このほか Alex Kirk のサイトにも例があります。dhcpd.conf
を書くときには以下の点に注意してください:- host セクションに Dreamcast の MAC アドレスを指定 *しなければ なりません* 。 MAC アドレスは BBA を見ればわかります; ステッカーに書いてあります。
- root-path オプションは、 world ファイルを展開した場所にする必要があります。
- domain-name-servers などのオプションは厳密には必要ありませんが、 書いておいたほうが簡単になります。
- dhcpd が動いていることを確認します; 動いていなければ
# sh /etc/rc.d/dhcpd start
します。いつでも DHCP が動くようにするため、/etc/rc.conf
を編集してdhcpd=YES
を書いておきます。 -
/home/dreamcast/dev/
で MAKEDEV スクリプトを実行します。これで、 他の必要なデバイスとともにコンソールが作られます。# sh MAKEDEV all
- Dreamcast 用のスワップファイルを作ります。任意のサイズにできますが、
経験上は 32-64MB が最適です (小さすぎると使い物になりませんし、
大きすぎると保守のために過大な物理 RAM を占有します) 。
スワップファイルは Dreamcast のルートとしてエクスポートする
ディレクトリーの下に置くようにします。
# dd if=/dev/zero of=swap bs=32k count=1024
(サイズが 32MB の場合) -
/home/dreamcast/etc/fstab
(または Dreamcast のルートとなる場所の etc/fstab ファイル) を編集し、適切なファイルシステムをマウントするようにします:192.168.2.69:/home/alex/dreamcast/dc / nfs rw,auto 0 0 /swap none swap sw 0 0 /kern /kern kernfs rw /proc /proc procfs rw 0 0 /dev/gdrom0c /mnt/gdrom cd9660 ro,noauto 0 0
やってみよう (トップ)
- CD を Dreamcast に入れて電源を入れます。 CD が正しく作れていれば、 見慣れた NetBSD のブートアップシーケンスが始まります。 もし、 2000 年 9 月より後に製造された Dreamcast でこれに成功したら、 メーリングリストでお知らせください。
- 問題が起きた場合、
/etc/exports
か/etc/dhcpd.conf
がおかしいのかもしれません。まずはこれらにくだらない間違いがないか、 再確認するとよいでしょう─私たちもそういう間違いをするので、気にしないように。 説明なしにエラーが出た場合は、/usr/src/sys/sys/errno.h
を見ると簡単な説明があります。 - 行き詰まったら、メーリングリストのアーカイブを見ましょう。 これは役立ちます。検索したい場合は Google の Advanced Search を使うのが最善です; ドメインを mail-index.NetBSD.org に絞り、検索語に “dreamcast” を含めるようにします。
- それでもうまくいかなければ、メーリングリストに投稿してください。 問題の詳細を書き、関連するエラーメッセージ/設定ファイル/ログファイルを (サイズが小さければ) 引用してください。