
数年前にNetBSD/Dreamcastをつついさんに教えてもらいましたが、
ブログに残すのを忘れていてメモが残っていませんでした。
今回テストしなおしたのでブログに書いておきます。
テストするには母艦はNetBSD i386かamd64とエミュレータとしてgxemulが必要。
ブータブルCDを焼くには更にcdrecordが必要です。
●NetBSD/Dreamcast概要
NetBSDは移植性が高いOSでDreamcastでも動作しています。
しかし、DreamcastブートCDの仕様が特殊なのでNetBSDのFTPサーバにある
ISOファイルを焼いても起動しません。ご注意を。
詳細は英語ドキュメントですが、下記の公式HPに書いてあります。
日本語ドキュメントは情報が古くて使えません。
是非ご一読を。
NetBSD/dreamcast: How to use NetBSD/dreamcast
https://www.netbsd.org/ports/dreamcast/howto.htmlDreamcastの仕様として、
・4秒の無音ファイルを作り、オーディオトラックが必要
・IP.BIN
・IP.txt
・NetBSDのKernel
・NetBSDのイメージ本体
を1枚のディスクにちゃんと焼かないと起動できない仕組みになっているそうです。
読んだだけですけど、間違っていたらごめんなさい。
後はブロードバンドアダプタでアクセス出来る様にdhcpcdとSwapファイルも焼き込みます。
で起動させる訳ですね。
結構難しいですが、公式HPに情報がちゃんと書いてあります。
じゃあどうやってDreamcastのイメージファイルを作るのかと言いますと
pkgsrcにdc-toolsという自動作成アプリがあります。
多分、母艦がNetBSDからじゃないと動作しません。
ここでニワカユーザー、ハッカーの殆どが脱落する訳ですw
NetBSDの専門知識が必要です。そりゃ難しいですわね。僕も同じです。
あと、エミュレータとしてgxemulが自動で連動できる様になっています。
そちらも使います。pkgsrcからインストール可能です。
じゃあまずdc-toolsから
普通にpkgsrcからビルドしてインストール
cd pkgsrc/sysutils/dc-tools/
make && make install
次はエミュレータのgxemulも同じ様にビルド
cd pkgsrc/emulator/gxemul
make && make install
無事インストール出来ましたらホームフォルダに戻って
NetBSDをdc-toolsからダウンロード。
まずdc-burn-netbsdアプリの使い方を解説します。
端末からコマンドで指定します。
dc-burn-netbsd -k GENERIC -e
これでKernelをダウンロードして自動的にエミュレータで
NetBSDが起動します。
オプションは重要で解説ドキュメントが他にないので
しっかり目を通しておきます。
Usage: dc-burn-netbsd [opts]
-C : Clean work directory before starting
-b : Burn generated image to CD using cdrecord
-c opts : Set cdrecord opts (driveropts=burnfree gracetime=3)
-d dist : Take kernel/ & sets/ under dist dir - will not try to download
-e : Boot resultant image under an emulator (requires gxemul)
-h : This help
-i : Use existing ISO image. Assumed to be already bootable
-k type : Set kernel type (GENERIC) eg: GENERIC or GENERIC_MD
-l : Setup live cd - implies '-s base -K GENERIC' unless otherwise set
-s type : Include NetBSD release, type is base, std, x or list of sets
-t tmpd : Set temporary work directory to tmpd
-v vers : Set NetBSD version (7.0.1) use '?' for list
-kがNetBSDのKernel、-eがエミュレータ起動
これだけじゃ、起動するだけでなにも出来ません。
アプリがないんです。
オプションの-sが重要でこれがイメージ設定です。
*BSDを使っている人はご存知ですね?多分。
-eオプションでxにしておきます。
NetBSDのバージョンをするには-vオプション。
一例で端末からコマンド起動
dc-burn-netbsd -k GENERIC -s x -v 8.0 -e
でエミュレータ起動すると色々と質問されます。
root device:はgdrom0a、
terimnalタイプは[vt100」にしておきます。
後は全部エンターキーでそのまま指定なし。
するとやっとNetBSDが起動できます。
Xはメモリが無いのでしょうか?起動しません。
●CD-RにNetBSD/Dreamcastを焼く?
やっていませんが、ヘルプファイルには-bオプションをつけると
自動でCD-Rに焼いてくれるそうです。
まずCD-ROMドライブを認識させないと駄目らしいですけど。
dc-burn-netbsd -k GENERIC -b
類似情報はこちら
http://m-arai.s41.xrea.com/hos/DC/step2.html●インストールログ
bash-4.4# dc-burn-netbsd -k GENERIC -s x -e
Sets set to: base.tgz etc.tgz comp.tgz man.tgz misc.tgz modules.tgz tests.tgz text.tgz xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xserver.tgz
>> Download kernel if needed
download/7.0.1/kernel/netbsd-GENERIC.bin.gz: already present
>> Download sets if needed
download/7.0.1/sets/base.tgz: already present
download/7.0.1/sets/etc.tgz: already present
download/7.0.1/sets/comp.tgz: already present
download/7.0.1/sets/man.tgz: already present
download/7.0.1/sets/misc.tgz: already present
download/7.0.1/sets/modules.tgz: already present
download/7.0.1/sets/tests.tgz: already present
download/7.0.1/sets/text.tgz: already present
download/7.0.1/sets/xbase.tgz: already present
download/7.0.1/sets/xcomp.tgz: already present
download/7.0.1/sets/xetc.tgz: already present
download/7.0.1/sets/xfont.tgz: already present
download/7.0.1/sets/xserver.tgz: already present
>> Generate the ip.txt file and use to create IP.BIN bootloader
Setting CRC to B6D8 (was 0000)
Contents of data already match requirements
>> Create filesystem with boot loader
mkisofs: Warning: -C specified without -M: old session data will not be merged.
290410+0 records in
290410+0 records out
594759680 bytes transferred in 9.295 secs (63987055 bytes/sec)
Bootable image generated as dc-burn-netbsd-files/data.raw
>> Run emulator (gxemul -XEdreamcast -d co23965696:data.raw)
GXemul 0.6.0.1 Copyright (C) 2003-2014 Anders Gavare
Read the source code and/or documentation for other Copyright messages.
Simple setup...
net:
simulated network: 10.0.0.0/8 (max outgoing: TCP=100, UDP=100)
simulated gateway+nameserver: 10.0.0.254 (60:50:40:30:20:10)
simulated nameserver uses real nameserver 192.168.100.1
machine:
memory: 2 MB
cpu0: SH7750
machine: Dreamcast (200.00 MHz)
diskimage: data.raw
IDE CD-ROM id 0, read-only, 567 MB (1161704 sectors)
loading Dreamcast IP.BIN from IDE id 0 to 0x8c008000
Dreamcast boot filename: NETBSD.BIN (to be loaded to 0x8c010000)
ISO9660 boot:
"CDROM":NETBSD.BIN
extracted 2296996 bytes into /tmp/gxemul.8CWMs0W3eSZw
loading /tmp/gxemul.8CWMs0W3eSZw
removing /tmp/gxemul.8CWMs0W3eSZw
cpu0: starting at 0x8c000140
NOTE: This is a LEGACY emulation mode.
-------------------------------------------------------------------------------
●-vオプション
bash-4.4# dc-burn-netbsd -v ?
Official release versions:
- 1.6
- 1.6.1
- 1.6.2
- 2.0
- 2.0.2
- 2.0.3
- 2.1
- 3.0
- 3.0.1
- 3.0.2
- 3.0.3
- 3.1
- 3.1.1
- 4.0
- 4.0.1
- 5.0
- 5.0.1
- 5.0.2
- 5.1
- 5.1.1
- 5.1.2
- 5.1.3
- 5.1.4
- 5.1.5
- 5.2
- 5.2.1
- 5.2.2
- 5.2.3
- 6.0
- 6.0.1
- 6.0.2
- 6.0.3
- 6.0.4
- 6.0.5
- 6.0.6
- 6.1
- 6.1.1
- 6.1.2
- 6.1.3
- 6.1.4
- 6.1.5
- 7.0
- 7.0.1
- 7.0.2
- 7.1
- 7.1.1
- 7.1.2
- 7.2
- 8.0
Daily built versions:
- daily-HEAD-201903190900Z
- daily-HEAD-201903192200Z
- daily-HEAD-201903201230Z
- daily-HEAD-201903201940Z
- daily-HEAD-201903210830Z
- daily-HEAD-201903211740Z
- daily-netbsd-7-201903131220Z
- daily-netbsd-7-201903190450Z
- daily-netbsd-7-0-201903112330Z
- daily-netbsd-7-0-201903171100Z
- daily-netbsd-7-1-201903141540Z
- daily-netbsd-7-1-201903200820Z
- daily-netbsd-8-201903160740Z
- daily-netbsd-8-201903170510Z
- daily-netbsd-8-201903191600Z
- daily-netbsd-8-201903210240Z
- daily-netbsd-8-201903220040Z
Daily built branches (will take latest version):
- daily-HEAD
- daily-HEAD-lint
- daily-HEAD-llvm
- daily-netbsd-7
- daily-netbsd-7-0
- daily-netbsd-7-1
- daily-netbsd-8