にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ

2018年02月25日

世界の全ての機器を制覇するOS NetBSD Bochs 起動バグ調査 その23 #NetBSD

Screenshot from 2018-02-25 07-18-04.png

今回はx86エミュレータのBochs上でのNetBSDを検証します。
Bochsなんて使わないよ、という人が沢山いるかもしれませんが
これはこれで一応重要です。
Linuxは動いて、Windowsも動いて、FreeBSDも動いて
NetBSDだけ起動しない状態なんですよね

●BochsとNetBSD
Bochsは昔からあるx86エミュレータです。
x86のOSの安定性と移植性を優先していて、
動作速度は遅いですがありとあらゆるOS環境で使えます。
一番有名なのがiPhoneでしょうか?
iPhoneでWindowsXPや7が動いた、というのはほぼBochsです。
Androidでもよく使われます。
ARMの場合、Qemuと違ってBochsは浮動小数点演算を使わないので
RISCコアなARMではBochsはQemuより速いです。
実は過去にご報告がありまして、それを読んでチェックしています。









NetBSDの本家HPではi386はBochsで動くと書いてありますが、
実際は動きません。
どこのバージョンから起動しなくなったのか検証してみました。

●Bochsの使い方とNetBSDのインストール方法
Bochsは基本的に選択的UIで数字コマンドを入力して設定します。
端末から使うコマンドは3つです。

bximage:HDDイメージファイルを作成する。Qemuと共通
bochs:エミュ本体。
.bochrc:bochsの設定ファイル。別ファイル名でも可能。
*.img、*.iso:起動に使うイメージファイル

NetBSDのISOファイルは本家HPからダウンロード。
bximageコマンドでHDDイメージを作成。数GB以上で。
端末からbochsコマンドで起動するとCUIでメニューが出ます。
選択的に数字を入力することで、設定できます。
最初のメニューで(3)を選ぶとオブションが選択して、
保存するとファイルに自動的に設定が残ります。

・CPU設定
(5)⇒(5)CPU⇒IPS:15000000
・メモリ設定
(7)⇒(1)⇒(1)⇒512,512
・ディスクイメージ設定
(12)⇒(4)⇒YES、DISK、
 空イメージファイル名(〜.img)選択、後はそのままエンター
(12)⇒(5)⇒YES、CDROM、ISOファイル名(〜.ISO)、エンター
・ブート設定
(12)⇒(15)⇒(2)⇒cdrom
(12)⇒(15)⇒(3)⇒disk
・設定の保存
(4)⇒.bochrc
・起動
(6)

●Bochs動作テスト
ISOファイル起動時にフリーズします。
i386の公式ISOファイルを使っています。
・NetBSD6.0:OK
・NetBSD6.0.6:OK
・NetBSD6.1.4:OK
・NetBSD6.1.5:OK
・NetBSD7.0:NG
・NetBSD7.1:NG
・NetBSD7.1.1:NG
・NetBSD8.0Beta:NG

NetBSD7.0以降に混入したバグと推定。
ちなみにNetBSD6.1.5 Amd64でも同じ現象。
という事は・・・?

iPhoneなどでNetBSDを使いたい人は
NetBSD6.1.5のi386を推奨します。

Screenshot from 2018-02-25 07-54-56.png

●ておくれLiveイメージの動作検証
NetBSD6.1.5のておくれLiveイメージをBochsでテストします。
まずはここからダウンロードします。


http://teokurebsd.org/netbsd/liveimage/20150705-6.1.5/liveimage-i386-emu-20150705-6.1.5.img.gz


後は展開してimgファイルにした後に、
HDDディスクイメージとして起動します。
ちょっと長いですが、ファイル名を正確に入力します。

・ディスクイメージ設定
(12)⇒(4)⇒YES、DISK、
 イメージファイル名(〜.img)選択、後はそのままエンター

でブートをHDDにするかCDROMを外して起動します。
恐らく立ち上がるはずです。


●動作環境と動作速度
CF-NX2のBochs2.6.5です。
NetBSDは6.1.5のISOからインストールして起動まで確認。
IPSは15000000位
IPSというのは1秒あたりの命令数でCPUクロックに該当します。
推定Pentium200MHz相当でしょうか?
CPUベンチマークを測定しないとよく分かりません。

IPSでのCPU速度とフレーム数は反比例します。
IPSを上げればエミュ速度はあがりますがフレーム数が下がります。
もうちょっとIPSを上げてCPUクロックを上げて
負荷を上げた方が良いかもしれません。
速すぎてフレームが飛んでしまいます。

●まとめ
iPhoneでx86とNetBSDをエミュるにはBochsがどうしても必要です。
とりあえずNetBSD6.1.5ならBochsで起動できる事がわかりました。
とりあえずエミュレータで実験する際にはこれを使います。
まあ、ね。
数あるOSの中でNetBSDだけ起動しないんですよ。
それが気になって仕方がなかっただけです。
僕みたいな極端なOS環境をテストする人には特に。
バグが直るかは直接的な原因が分からなければ不透明なので、
今後の課題でしょうか?
posted by kapper at 08:08 | Comment(0) | NetBSD
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

にほんブログ村 IT技術ブログへ
にほんブログ村

Linux ブログランキングへ