この記事は、NetBSD Advent Calendar 2019の10日目の記事です。
はじめに
ウェブを検索してみると、NetBSD/amigaをWinUAEというm68kを搭載したAmigaというマシンでNetBSD/amigaを動かした記録が見付かります。 ですが、なかなか手元で再現させられる情報がまとまっていないように見えました。 折角、Amiga ForeverでAmigaマシンのROM (Kickstart ROMと呼ばれています)とWorkbenchというAmigaDOSのGUI環境を 購入したので、試行錯誤してみました。
Kickstart ROMとWorkbenchを入手する
Amiga ForeverでAmiga Forever Plus Editionを購入すると、以下の2つのファイルが手に入ります。
- amiga-os-310-a3000.rom (Kickstart ROMのバージョン3.1で、A3000マシン用)
- workbench-311.hdf (Workbench 3.1のHDDイメージ)
Amigaマシンを設定する1
68030を搭載したA3000をベースに設定することにしました。 WinUAEのQuickstartでA3000を選択し、Set configurationボタンを押します。 . メモリーもZ3 Fastを適当に増やしておきます。
HDイメージを用意する
当面の目標としては、NetBSD/amigaの起動するSCSI-2接続のHDDイメージ(.hdfファイル)を作成することです。 ですが、私はSCSI-2接続のHDDディスクイメージをWorkbench 3.1のhdtoolboxコマンドで設定することができませんでした。 これは、私がAmigaDOSについて何も知らないためである可能性が高いです。 とりあえず、SCSI-2接続ではなく、UAE (uaehf.device)という接続にすることで解決できました。
.hdf HDDディスクイメージファイルを作成してしまえば、SCSI-2で接続し直すだけで良いです。 Wrokbench3.1アイコンから、Toolsアイコンを選択し、Toolsウィンドウの右端まで移動してHDToolBoxをダブルクリックすることで、 HDToolBoxを起動します。
次に、.hdfファイルを1GBの容量で作成します。1GBを超えるとHDToolBoxで正常に扱えないようです。 1GB以上で作成したいので、これについては、もっと追求すべきかもしれません。 その上で、HDToolBox上で、Define a New Drive TypeでRead Configurationを実行します。 .hdfファイルを接続し直した際にも、これをする必要がありますし、パーティション設定を初期化したい場合にもこれを実行すると良いようです。 Partitioning Driveを選択し、ルートファイルシステムとスワップ領域用のパーティションを作成します。 HDToolBoxの操作性が全く分からないので、既定値の500MBずつのまま進めました。 (ですが、最終的にスワップ領域を使えない状態になってしまっています。) UDH0をルートファイルシステム、UDH1をスワップ領域にします。 Advanced Optionにチェックし、Bootableにチェックし、Change...ボタンから下図のように設定する必要があります。 細かい設定値はインストール手順書に書かれています。 注意点としては、これもまた書かれていますが、Identifierを手入力した際に、Enterキーを押さないと、0x0になってしまうという点です。 また、Add/Update...ボタンから、事前にIdentifierを登録しておいて、それを選択して使うこともできるはずですが、 .hdf HDDディスクイメージファイルに書き込む際にエラーを発生してしまったので、避けた方が良いかもしれません。 (これもまた、私がAmigaDOSについて何も知らないからだと思いますが。)
※スワップパーティションのIdentifierの値を間違っていました。正しくは、0x4e425301
です。こうすることで、ちゃんとスワップ領域として認識されました。(2019-12-18追記)
その上で、WindowsホストのディレクトリーをVF:にマウントし、そこに、AmigaDOS用のxstreamtodevコマンドとminiroot.fs (これは事前に圧縮を解除しておきます)を 置いておき、以下のように実行し、スワップ領域にminiroot.fsを書き込み、インストーラーを起動させる準備をします。
cd VF: xstreamtodev --input=miniroot.fs --rdb-name=UDH1 (書き込みの進捗状況が表示される。されない場合はターゲットのディスクの指定が間違っている。)
Amigaマシンを設定する2
まずはCPUを実機と同程度の速度に制限するのを止め、最速でエミュレートするようにします。 Fastest possibleを選択します。 また、MMUも必要ですので、MMUを有効にします。
チップセットはFullECSを選択しておきました。 これが一番画面が広いように感じたというだけです。
いろいろ試しましたが、Graphics boardとして、Picasso IV (Village Tronic)/Picasso IV (128k)を選択することで、NetBSD/amigaのブートメッセージを画面表示できるようになりました。 これは、NetBSD 8.0 on Amiga A3000 (WinUAE), Picasso IV graphicsを参考にしました。
ここで、UAE1:に接続されている.hdf HDDディスクイメージファイルをSCSI-2接続に変更します。 合わせて、NetBSD/amigaのインストールISOイメージをSCSI接続のCD-ROMドライブに挿入しておきます。
WinUAEを再起動したら、一息置いてマウスも右と左のボタンを同時に押します。 すると、Amiga Early Startup Control画面に入ることができます。 Boot Options...ボタンから、左側のペインでUDH1を選択し、Useボタンを押して元の画面に戻って、Bootボタンで起動すると、NetBSD/amigaのINSTALLカーネルが起動します。 ちゃんと.hdf HDDディスクイメージファイルをSCSI-2接続に変更しておけば、ルートファイルシステムが見付からないということはないはずです。
NetBSD/amigaのインストールは、インストーラーの促す通りです。 setsの展開には時間がたっぷりかかりますので、気長に進めるのが良さそうです。
最後に、AmigaNet (Hydra Systems)というEthernetアダプターを有効にし、ed(4)
として認識された状態のdmesgを掲載しておきます。
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 9.99.20 (GENERIC) #0: Fri Dec 6 21:45:14 UTC 2019 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/amiga/compile/GENERIC total memory = 264 MB avail memory = 255 MB Amiga 3000 (m68030 CPU/MMU m68882 FPU) memory segment 0 at 07800000 size 00800000 memory segment 1 at 40000000 size 10000000 memory segment 2 at 00000000 size 00200000 timecounter: Timecounters tick every 10.000 msec Kernelized RAIDframe activated mainbus0 (root) clock0 at mainbus0: CIA B system hz 100 hardware hz 709379 timecounter: Timecounter "CIA B" frequency 709379 Hz quality 100 Calibrating delay loop... 46/1024 us a34kbbc0 at mainbus0 ser0 at mainbus0: input fifo 512 output fifo 32 par0 at mainbus0 kbd0 at mainbus0: CIA A type Amiga ms0 at mainbus0 grfcc0 at mainbus0 grf0 at grfcc0: width 640 height 400 colors 4 ite0 at grf0: rows 0 cols 0 repeat at (30/100)s next at (10/100)s has keyboard fdc0 at mainbus0: dmabuf pa 0x1e3658: dmabuf ka 0x727658 fd0 at fdc0 unit 0: 3.5dd 80 cyl, 2 head, 11 sec [9 sec], 512 bytes/sec ahsc0 at mainbus0 scsibus0 at ahsc0: 8 targets, 8 luns per target aucc0 at mainbus0 audio0 at aucc0: playback audio0: slinear_be:16 2ch 28867Hz, blk 40ms for playback spkr0 at audio0: PC Speaker (synthesized) zbus0 at mainbus0: i/o size 0x00400000 grfcl0 at zbus0 pa 0x200000 man/pro 2167/21 grf3 at grfcl0: width 640 height 480 colors 16 ite3 at grf3: rows 60 cols 80 repeat at (30/100)s next at (10/100)s has keyboard grfcl: 4MB Picasso IV being used grfcl1 at zbus0 pa 0x400000 man/pro 2167/22 ite at grfcl1: not configured grfcl2 at zbus0 pa 0xea0000 man/pro 2167/23 ite at grfcl2: not configured ed0 at zbus0 pa 0xe90000 man/pro 2121/1ed0: Ethernet address 52:54:05:32:33:34 board at zbus0: pa 0xec0000 man/pro 2011/82 not configured timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0 scsibus0: waiting 2 seconds for devices to settle... cd0 at scsibus0 target 0 lun 0:cdrom removable sd0 at scsibus0 target 1 lun 0: disk fixed sd0: 1024 MB, 8322 cyl, 4 head, 63 sec, 512 bytes/sect x 2097152 sectors 4 views configured root on sd0a dumps on sd0b root file system type: ffs kern.module.path=/stand/amiga/9.99.20/modules WARNING: preposterous TOD clock time WARNING: using filesystem time WARNING: CHECK AND RESET THE DATE!
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。