エミュレートされたハードウェア上で NetBSD を動かす エミュレーター上の NetBSD について はじめに 組み込みアプリケーションの開発や、 何らかの理由で現物が使えないハードウェアプラットフォーム上でソフトウェアのデモやテストをしたい場合、 どうしてもソフトウェアエミュレーターが必要となります。 エミュレーターは、時には一台のマシンでコンピューターネットワーク全体を動かすことさえできる、 究極の手段にもなります。そして、古き良き時代の PDP や VAX といった化石マシンがどのように動いていたかを (単なる興味から) 見てみたいという目的もあるでしょう。 この文書では、 NetBSD オペレーティングシステムを動作させるという観点で、 各種ハードウェアの相当品を紹介します。 エミュレーター上での NetBSD のセットアップ方法は? この質問への回答は、どのエミュレーターを使うかによって大きく異なります。 NetBSD をはじめとするゲスト OS をセットアップするために必要な情報は、 ほとんどの場合、エミュレーターの web サイトにすべて載っています。 詳細は、 をご覧ください。 NetBSD ポートとエミュレーターの対応一覧表 以下の表中、Yes は、最新の NetBSD リリース版 (またはカッコ内で記されているバージョン) に完全対応しているもの。 Untested は、 当該プラットフォームで NetBSD が使えるはずのもの (ただし未確認)。 Almost は、テスト中に若干の問題があったもの。 詳細は脚注をご覧ください。 ポート \ エミュレーター algor Yes amd64 Untested Yes Yes arc Yes Almost qemu 上の NetBSD/arc 5.0.2 は、 SCSI ディスク負荷が高くなると panic します。 cats Yes cobalt Yes dreamcast Yes Ram ディスクカーネルまたはライブ CD が必要です。ルートファイルシステムを NFS にすることは、まだできません。 evbarm Yes 動作するバージョンは NetBSD 2.1 が最後のものです。 GXemul の ARM エミュレーションに問題があるためです。 evbmips Yes gxemul は Malta をエミュレートします。 hpcmips Yes i386 Yes Yes ia64 Experimental このエミュレーターは、NetBSD/ia64 ポートの開発用プラットフォームとして使われています。 landisk Yes macppc Yes Almost ブート中にクラッシュします。 Untested netwinder Yes pmax Yes pmppc Yes prep Yes 動作するバージョンは NetBSD 2.1 が最後です。NetBSD 3.x は、 ディスクコントローラーの問題で動作しません。 Untested sgimips Yes sparc Yes Yes sparc64 Yes sun2 Yes sun3 Yes vax Yes ソフトウェアエミュレーター Bochs bochs プログラムは、C++ で書かれた移植性の高いオープンソースx86 PC エミュレーターです。ほとんどの普及しているプラットフォーム上で動きます。 bochs は、Intel x86 CPU、標準的な IO デバイス、 専用の BIOS のエミュレーションをおこないます。現在、bochs は、 386, 486, Pentium, Pentium PRO, AMD64 CPU をエミュレートするようコンパイルすることができます。 emulators/bochs でパッケージ化されています。 GXemul GXemul はマシンエミュレーターです。このエミュレーターの当初の目標は、 マイクロカーネルでマルチプロセッサーの実験をするための簡素な 64 ビット MIPS エミュレーターでしたが、 それ以外にもいろいろな使い方をすることができます。 シミュレーターのなかには CPU をシミュレートするだけのものもありますが、 GXemul は CPU 以外のハードウェアコンポーネントもシミュレートするので、 NetBSD, OpenBSD, Linux などのオペレーティングシステムに変更を加えることなく、 エミュレーターで実行することができます。 emulators/gxemul でパッケージ化されています。 QEMU QEMU は、エミュレート速度向上のために動的変換を使った、 高速(!)なプロセッサーエミュレーターです。 QEMU には以下の 2 種類の操作モードがあります。 フルエミュレーションモード。 このモードでは、QEMU はプロセッサーと各種周辺機器を含んだ完全なシステム (たとえば PC) をエミュレートします。これを使って、 PC をリブートすることなく複数のオペレーティングシステムを起動したり、 システムコードをデバッグしたりすることができます。 ユーザーモードエミュレーション (Linux ホスト専用)。 このモードでは、QEMU は、ある CPU 用にコンパイルされた Linux プロセスを、 異なる CPU 上で動作させることができます。これを使って、 Wine Windows API エミュレーターを動作させたり、 クロスコンパイルやクロスデバッグをより簡単におこなったりすることができます。 emulators/qemu でパッケージ化されています。 PearPC PearPC は、アーキテクチャー独立の PowerPC プラットフォームエミュレーターで、 ほとんどの PowerPC オペレーティングシステムを動作させることができます。 emulators/pearpc でパッケージ化されています。 SIMH SIMH は、Bob Supnik による、 altair altairz80 eclipse gri h316 hp2100 i1401 i1620 ibm1130 id16 id32 nova pdp1 pdp10 pdp11 pdp15 pdp4 pdp7 pdp8 pdp9 s3 sds vax をはじめとする歴史的コンピューターのシミュレーターです。 simh 上での NetBSD/vax のインストール方法の説明は、 NetBSD SIMH HOW-TO をご覧ください。 emulators/simh でパッケージ化されています。 Ski Ski は HP のプロプラエタリな IA-64 (Itanium Processor Family, IPF) 命令セットシミュレーターであり、 おもに、アプリケーションおよびカーネルレベルのソフトウェア開発に使うためのものです。 emulators/ski でパッケージ化されています。 The Machine Emulator The Machine Emulator (tme) は、 コンピューターエミュレーション用の汎用的な枠組みを提供するプログラムです。 tme が最初にエミュレートしたマシンは、 Sun ワークステーションのなかでも最初に広く普及したもののひとつである Sun 2/120 です。 現在では、 Sun 3/150SPARCstation 2 などにも対応しています。なお、arthur による ILVSUN3 ページには、 TME に関する、 各種の有用な情報があります。 emulators/tme でパッケージ化されています。 Virtutech Simics simulator デスクトップ以外のシステム向けにコードを書いているソフトウェア開発者は、 ある問題にしばしば直面します: コードをテストしたりデバッグしたりする際、 何の上で動かすのか? Simics Developer を使えば、 あらゆる電子システムを、開発者のデスクトップマシン上で動かすことができます。 小規模な組み込みシステムも、百万ドル級のエンタープライズサーバーも、 複雑にクラスター化されたマルチプロセッサーシステムもです。 商用製品です。