SBC6000X エミュレータマニュアル
オープンソースのプロセッサエミュレータ QEMU をベースにした SBC6000X エミュレータのマニュアルです。
- 1. はじめに
- 2. 動作確認 ホスト OS
- 3. 動作確認 ゲストソフトウェア
- 4. ライブラリのインストール
- 5. ソースコードのダウンロード
- 6. ビルド
- 7. ゲスト環境の準備
- 8. NFS ルートファイルシステムの準備
- 9. 起動
- 10. 終了
- 11. 問題点
- 12. ネットワーク
1. はじめに
SBC6000X 用の Linux Kernel が動作する程度です。
完全にデバイスをエミュレートするものではありません。
また、QEMU の機能である仮想マシンのスナップショットの保存、復帰に対応していません。
なお、サポートする外部ストレージは NFS のみです(バージョン 0.15.1-pylone1 現在)。
2. 動作確認 ホスト OS
- Debian GNU/Linux 6.0 Squeeze (x86)
- Ubuntu 11.10 (x86)
尚、ライブラリとして、
- glib
- zlib
- SDL
が必要になります。
3. 動作確認 ゲストソフトウェア
- SBC6000X 用 Linux 環境 (20111024 リリース版)
4. ライブラリのインストール
QEMU をビルドするためのライブラリ(開発版パッケージ)をインストールします。既にインストール済みの場合は不要です。
# apt-get install libglib2.0-dev # apt-get install zlib1g-dev # apt-get install libsdl1.2-dev
5. ソースコードのダウンロード
エミュレータのソースコードをダウンロードします。
$ mkdir ~/qemu-sbc6000x $ cd ~/qemu-sbc6000x $ wget http://downloads.pylone.jp/sbc6000x/src/qemu-sbc6000x-0.15.1-pylone1.tar.bz2
6. ビルド
ダウンロードしたソースコードをビルドします。
$ cd ~/qemu-sbc6000x $ tar xf qemu-sbc6000x-0.15.1-pylone1.tar.bz2 $ cd qemu-sbc6000x-0.15.1-pylone1 $ ./configure --target-list=arm-softmmu $ make
生成されるバイナリファイル名は qemu-system-arm で 標準のQEMUと同じであるため、make install を行なう場合はご注意ください
7. ゲスト環境の準備
Buildroot を用いたビルドと同様の手順で構築します。 (既に実機用に構築済みの場合は同じもので構いません)
以降、SBC6000X 用 Buildroot のディレクトリを ~/buildroot-sbc6000x とします。
8. NFS ルートファイルシステムの準備
NFSルートファイルシステム環境の構築と同様の手順で構築します。
さらに、/etc/exportfs に以下の行を追加し、exportfs コマンド等によって設定内容を反映します。
/opt/sbc6000x 127.0.0.1(rw,sync,subtree_check,no_root_squash,insecure)
9. 起動
エミュレータを起動する端末を開き、以下のコマンドを実行します。
$ cd ~/qemu-sbc6000x/qemu-sbc6000x-0.15.1-pylone1 $ ./arm-softmmu/qemu-system-arm \ -M sbc6000x \ -m 256 \ -serial telnet:localhost:1200,server \ -kernel ~/buildroot-sbc6000x/output/images/uImage \ -append "console=ttyS0 root=/dev/nfs rw nfsroot=10.0.2.2:/opt/sbc6000x ip=dhcp"
この時エミュレータは、シリアルコンソールの出力先である、ポート 1200 番を使用した Telnet接続を待ち受けます。
従って、エミュレータを起動した端末とは別の端末を開き、以下のコマンドを実行します。
$ telnet localhost 1200Telnet 接続が成功すれば、エミュレータの起動が再開されます。(ポート 1200 番を既に使用している場合は、別の空いているポートを使用してください)
起動後、Buildroot へのログイン可能なユーザーは "root"、または "default"(一般ユーザ) です(何れもパスワードはありません)。
各オプションは以下の通りです。
| -M | マシンの指定 (sbc6000x) |
|---|---|
| -m | SDRAM の容量指定 (MiB単位) |
| -kernel | 起動する Kernel の uImage の指定 |
| -serial | シリアルポートの出力先を指定。上記では ポート 1200 による Telnet 接続 |
| -append | カーネルパラメータの追加 |
-serial オプションは stdio も指定することが可能ですが、ゲスト Linux 上の shell に対する Ctrl-C などのシグナルを QEMU が受け取ってしまうためとても不便です。
10. 終了
終了するには、QEMU ウィンドウを閉じるか、起動した端末上で Ctrl-C を発行して QEMU を終了してください。
11. 問題点
起動中、まれに、
mmc0: host doesn't support card's voltages mmc0: error -22 whilst initialising SDIO card mmc0: host doesn't support card's voltages mmc0: error -22 whilst initialising MMC card mmc0: host doesn't support card's voltages mmc0: error -22 whilst initialising SDIO card mmc0: host doesn't support card's voltages mmc0: error -22 whilst initialising MMC card
というタイミングで起動が停止してしまいますが、終了して再度、起動してみてください。
12. ネットワーク
ネットワークコントローラ DM9000 は QEMU が持つ仮想的なネットワーク 10.0.2.0/24に接続されたデバイスとしてエミュレートされます。同ネットワーク内においては擬似的なサーバ機能が提供されます。
| ゲートウェイ | 10.0.2.2 |
|---|---|
| DNS | 10.0.2.3 |
| DHCP | 10.0.2.2 |
エミュレータ上の /etc/resolv.conf を以下のように設定すれば、実ネットワークを参照することが可能になります。
nameserver 10.0.2.3
ただし、ping においては、10.0.2.2 以外からの応答はありません。
著作権と免責
Copyright © 2012 Pylone, Inc.
この文書の著作権は株式会社パイロンが保有します。
この文書は「現状のまま(as is)」で提供され、明示的であるかどうかを問わず、内容についてなんら保証するものではありません。
この文書には、技術的な誤り、誤植、不適格な表現や未完成部分等を含む可能性があります。従って、この文書は予告無しに追加、変更、削除される可能性があります。
この文書は「クリエイティブ・コモンズ-表示-2.1-日本 以降」(CC-by-2.1 or later) の下で配布されています。