ビルドには以下が必要です。
The following are required for build.
- make (BSD make, not GNU make)
- C/C++ compiler which supports -std=c++14
- wxWidgets >= 3.0
- gettext
wxWidgets は NetBSD(pkgsrc) なら
pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 推奨) です。
If you use NetBSD(pkgsrc),
wxWidgets is pkgsrc/x11/wxGTK30 (OPTIONS:gtk2 is recommended).
アーカイブを展開したら以下のようにビルドします。
configure には環境変数 CC、CXX でコンパイラを指定することが出来ます。
また wx-config が標準的な名前で提供されていないために見付けられない場合には
環境変数 WX_CONFIG にパスを指定することが出来ます。
Extract the archive and build as following.
You can specify C/C++ compiler using environment variable CC and CXX
if configure cannot find standard name suitable compiler.
Also, you can specify wx-config path using environment variable WX_CONFIG
if configure cannot find wx-config.
% ./configure
% make depend
% make
% su
# make install
2つの実行ファイルがインストールされます。
nono が GUI 版実行ファイル、
nono-cli がコマンドライン版です。
Two executables will be installed.
nono is GUI executable and nono-cli is
command line executable.
VM の設定ファイルはその VM ディレクトリ内の nono.cfg です。
書式は
key = value 形式で1行1項目ずつです。
key と
value の前後の空白は取り除かれます。
また空行と "
#" で始まる行は無視します。
知らないキーの行も無視します。
VM configuration file is nono.cfg in the VM directory.
Its syntax is key = value format, one per line.
White spaces before and after key and value are ignored.
And, blank lines, lines beginning with "#", and
lines with unrecognized key are also ignored.
設定項目は次の通りです。
The configuration items are:
- vmtype = string
- VM 種別を指定します。
今の所 string に
指定できるのは luna (LUNA-I) だけですが、省略不可です。
Specifies the VM type.
For now, only luna (LUNA-I) can be specified for
string.
This field is mandatory.
- debugger-port = integer
- デバッガの TCP 待ち受けポート番号を指定します。
0 なら待ち受けを行いません。
デフォルトは 9999 です(適当)。
- ethernet-hostdriver = string
- イーサネットデバイスのホスト側ドライバを指定します。
none、tap、bpf が指定できます。
none ならホスト側とは一切通信を行いません。
tap か bpf かはホスト OS によってビルド時に決定します。
NetBSD なら tap です。
- ethernet-macaddr = string
- イーサネットデバイスの仮想マシン側の MAC アドレスを指定します。
XX:XX:XX:XX:XX:XX
形式で指定します。
auto なら自動的に決定します。
デフォルトは auto です。
- luna-dipsw1 = string
- 本体前面 DIPSW#1-1..#1-8 の内容を指定します。
"0" を DOWN、"1" を UP として、
これを8つ並べた形式で、前から順に #1..#8 に対応します。
デフォルトは 11110111 です。
Specifies status of the front panel DIPSW#1-1..#1-8.
"0" means DOWN and "1" means UP.
The first character corresponds to #1 and
the eighth character corresponds to #8.
The default value is 11110111.
各スイッチの内容はここ
(NetBSD/luna68k: Information) を参照してください。
See NetBSD/luna68k: Information about DIPSW.
- luna-dipsw2 = string
- 本体前面 DIPSW#2-1..#2-8 の内容を指定します。
書式は luna-dipsw1 と同じです。
デフォルトは 11111111 です。
Specifies status of the front panel DIPSW#2-1..#2-8.
The same syntax as luna-dipsw1 is used.
The default value is 11111111.
すべて "1"(UP) なら
NetBSD/luna68k のブートローダは自動的にカーネルをロードして実行し、
どれかでも "0"(DOWN) にするとプロンプトで停止するようです。
(本当は #8 だけで制御するつもりだったんじゃないかという気がします)
If the value is 11111111,
NetBSD/luna68k bootloader will automatically load and execute the kernel.
Otherwise, the bootloader will enter interactive mode.
(I doubt that they actually wanted to switch with only #8)
- mpu-clock = value
- MPU のクロック数を MHz 単位で指定します。
デフォルトは 20MHz です。
Specifies the MPU clock in MHz. The default value is 20MHz.
- prom-image = path
- 外部 ROM イメージファイルのパスを指定します。
path がファイル名のみなら VM ディレクトリとその親ディレクトリからこのファイル名を検索します。
path が相対パスなら VM ディレクトリからの相対パスになります (現在のディレクトリからではありません)。
空にすると内蔵 ROM を使用します。
デフォルトは空です。
Specifies the external ROM image file path.
If the path does not have any path delimiters,
the VM directory and then its parent directory will be searched.
If the path is a relative path,
it will be path from the VM directory, not from the current
directory.
If the path is empty, internal emulated ROM will be used.
The default value is empty.
実機を持っていない場合はこの値を空に (= デフォルトのままに) しておくと、
nono 内蔵のなんちゃって下位互換 ROM で起動します。
If you does not have the real LUNA machines,
you can boot with nono's internal downward compatible emulated ROM
if you set this field empty (or leave it as the default).
実機を持っている場合は ROM ファイルを指定することで実機 ROM で起動できます。
ROM ファイルは実機の 0x41000000-0x4101ffff (128KB) を保存したものです。
If you have the real LUNA machines,
you can boot with the real ROM spcifying the ROM file path.
The ROM file is extracted from 0x41000000-0x4101ffff (128KB) from
the real machine.
- ram-size = value
- 搭載する RAM サイズを MB 単位で指定します。
デフォルトは 16MB です。
Specifies the RAM size in MB. The default is 16MB.
- spc0-idN-image = devtype,path
- SCSI デバイスを指定します。N には 0 から 7 が入ります。
ID 7 は本体が使用しますので指定しないでください。
値はデバイス種別 devtype とイメージパス path
を ","(カンマ) で区切って並べた形式で、
今の所デバイス種別 devtype には "hd"(ハードディスク) のみ指定可能です。
ディスクイメージパスが相対パスなら VM ディレクトリからの相対パスになります。
Specifies SCSI device. N is 0 to 7.
But don't specify ID 7 because the host uses it.
The value is in a form of device type devtype and
the image path path separated by ","(comma).
For now, only "hd" (hard disk) can be specified for devtype.
If the path is relative path, it is from the VM directory.
例えば、nono.cfg と同じディレクトリに置いたディスクイメージ luna.img
を使う場合、
LUNA では通常 ID 6 をプライマリ HDD に割り当てるのでこんな感じになります。
For example, if you use disk image luna.img placed in the same
directory as nono.cfg,
since LUNA usually assigns ID 6 to the primary HDD,
write as following:
spc0-id6-image = hd,luna.img
- spc0-idN-writeprotect = integer
- 指定の SCSI デバイスへの書き込みを無視するかどうか指定します。
0 なら通常動作(書き込みを行う)です。
1 なら書き込みコマンドは成功したように振る舞いますが実際には
ディスクイメージに一切書き戻しません。
fsck を気にせずカーネルのデバッグとかを行いたい場合にはどうぞ。
何が起きるか意味が分からない人は指定しないでください。
デフォルトは 0 です。
Specifies whether nono ignores writing to SCSI devices.
0 means normal operation (writes to the devices).
If 1 is specified,
nono will not actually write back to the disk image
even though the write command is succeeded.
nono's SCSI devices acts as
write command is successfully done but it never writes back
to the actual disk image.
This is useful for kernel debugging because it does not require fsck
after the kernel hangs.
But don't use this flag if you don't understand this paragraph.
The default value is 0.
つついさんが NetBSD/luna68k 9.0 の liveimage を用意してくださっています
(いつもありがとうございます)。
Tsutsui-san has provided NetBSD/luna68k 9.0 liveimage for this
(Thanks as always).
- どこかに nono 用のディレクトリを用意し(例えば ~/nono/)、
その中に VM ディレクトリを用意します (例えば ~/nono/luna/)。
Create a directory for nono somewhere (for example ~/nono/),
and create subdirectory for individual VMs in it (for example ~/nono/luna).
- http://teokurebsd.org/netbsd/liveimage/20200518-luna68k/ から
イメージファイルをダウンロードして展開し、
VM ディレクトリ ~/nono/luna/ に置きます。
Download imagefile from
http://teokurebsd.org/netbsd/liveimage/20200518-luna68k/,
extract it and place it in the VM directory, ~/nono/luna.
- 同じく VM ディレクトリに設定ファイル nono.cfg を以下の内容で用意します。
Create a configuration file nono.cfg in the same VM directory, ~/nono/luna,
with following contents:
vmtype = luna
spc0-id6-image = hd,liveimage-luna68k-raw-20200518.img
- nono -c ~/nono/luna で起動します
(VM ディレクトリに自動的に NVRAM.DAT が作られます)。
Run as nono -c ~/nono/luna.
(It creates NVRAM.DAT automatically in the VM directory)
- Emulated ROM Monitor が起動するので、
初回は以下のように入力すると NetBSD が起動します。
The emulated ROM Monitor will be executed.
Then, only for the first time,
entering the following can boot NetBSD.
k
[Enter]
[Enter]
d
boot
g
x
この内容は NVRAM.DAT に記録されているので次回以降は直接 NetBSD が起動します。
The information you have just entered is recorded in NVRAM,
so next time it boots NetBSD automatically.
元ツイートはこちらOriginal tweet
。
設定ファイル nono.cfg に以下の行を追加します。
Add the following line to configuration file, nono.cfg.
ethernet-hostdriver = tap
次に VM ディレクトリかその親ディレクトリに nono-ifup、nono-ifdown
というスクリプトを用意します。
nono は tap(4) をオープンし、
そのデバイス名を引数にこれらのスクリプトを呼びます。
Then, prepare two scripts named nono-ifup and nono-ifdown
in the VM directory or its parent directory.
nono will open tap(4) and
invoke these scripts with the name of the device as an argument.
最もシンプルなケースだとおそらく
For example, in the simplest case, probably,
# brconfig bridge0 create
# brconfig bridge0 add wm0
のようにして用意しておいた bridge0 に対して、
(sudo の設定は別途行ってから)
次のような nono-ifup、nono-ifdown を用意すれば
wm0 の物理セグメントとブリッジできると思います。
If you setup bridge0 as above (and setup sudo) and
prepare the following nono-ifup, nono-ifdown scripts,
you can bridge between the guest network and host's wm0.
nono-ifup
#!/bin/sh
sudo ifconfig $1 up
sudo brconfig bridge0 add $1
nono-ifup
#!/bin/sh
sudo brconfig bridge0 delete $1
sudo ifconfig $1 down
パッチを提供してくださる場合は以下に同意したものとします。
If you provide a patch to nono, you must agree to the following conditions:
- 成果物が nono のライセンスに従って運用あるいは配布されること。
All your work are operated or distributed under the nono license.
- ライセンスが将来変わる可能性があること。
The license may be changed in the future.
- 著作部分に関して著作者人格権を行使しないこと。
Do not exercise your author's rights.
nono は以下の広告条項を含むソースコードを利用しています。
nono uses source code with the following advertising clause.
This product includes software developed by Gordon Ross
This product includes software developed by the University of California, Lawrence Berkeley Laboratory.