NetBSD/amiga-current on WinUAE Amiga m68k emulator

この記事は、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イメージ)
実際の手順は、NetBSD/amiga 7用のインストール手順書の通りに進めてみます。

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 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

plgarc/wip/llama.cppでpkgsrcのBLASサポートを探る

この記事は、 NetBSD Advent Calendar 2024 の13日目の記事です。 llama.cppを使ってみる 以前に、 NetBSD/amd64でllama.cppを使ってみる という記事で llama.cpp を使ってみていました。 あれか...