Windows環境でQEMUとqemu-rpi-kernelを使用したRaspbianシステムの実行方法
【概要】Windows環境でQEMUを使用してRaspbianをエミュレートする手順を解説する。QEMUのインストール、カーネルとイメージの入手、システムの起動、SSHによるリモートアクセスの設定を図解付きで扱う。
【目次】
Raspbianは、Linuxシステム(Debianベース)であり、ARMプロセッサ上で動作する。
一般的なWindowsパソコンにはARMプロセッサ以外のプロセッサが搭載されているため、QEMUを使用してプロセッサのエミュレーションを実施する。
前提条件:Windowsパソコンが使用可能であり、インターネット接続が確保されていること。
謝辞:本ガイド作成にあたり、以下の情報源を参考にした。
- Raspberry PiのQEMUエミュレーション解説: https://azeria-labs.com/emulate-raspberry-pi-with-qemu/
- Windows用QEMUバイナリ: https://qemu.weilnetz.de/w64/
- Raspberry Pi用QEMUエミュレーションカーネル: https://github.com/dhruvvyas90/qemu-rpi-kernel
QEMU Binaries for Windowsのインストール手順
- QEMU Binaries for Windowsの公式Webページにアクセスする。
- 最新版のインストーラーをダウンロードする。
* 本ガイドではqemu-w64-setup-20180430.exeを使用している。
- ダウンロードしたインストーラーを実行する。
- インストールウィザードが起動したら「Next」をクリックして進める。
- ライセンス条項を確認する。
- コンポーネントの選択画面では、デフォルト設定のまま「Next」をクリックする。
- インストール先フォルダも既定のまま「Install」をクリックして開始する。
- インストールが進行する。
- インストール完了を確認する。
QEMU用Raspberry Piエミュレーションカーネルの入手
- GitHubのdhruvvyas90/qemu-rpi-kernelリポジトリにアクセスする。
- 必要なファイルは、stretch系列(Debian 9ベース)の最新版カーネルとversatile-pb.dtb(デバイスツリーブロブ)の2つである。最初にカーネルファイルをダウンロードする。
- ファイルページで「Download」をクリックしてダウンロードを開始する。
- ダウンロードしたファイルは、後で使用しやすい場所に保存する。
- リポジトリのメインページに戻る。
- 次に、versatile-pb.dtbファイルをダウンロードする。
- 同様に「Download」をクリックしてダウンロードする。
- このファイルは、先ほどのカーネルファイルと同じディレクトリに保存する。
Raspbianイメージのダウンロード
- qemu-rpi-kernelリポジトリの指示に従い、Raspbianイメージを入手する。
- 日本国内のミラーサイトを利用してダウンロードする。
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2017-12-01/
- イメージの.zipファイルを選択する。
- ダウンロードが完了するまで待機する。ファイルは管理しやすい場所に保存する。
- ダウンロードした.zipファイルを展開し、.imgファイルを取り出す。
Windowsでの圧縮ファイル展開には7-Zipが便利である。インストール手順 »
- 展開した.imgファイルは、先ほどのカーネルファイルと同じディレクトリに配置する。
Raspbianシステムの起動と設定
- Windowsコマンドプロンプトを起動し、準備したファイルのディレクトリに移動する。dirコマンドで必要なファイルが揃っていることを確認する。
- 以下のQEMU起動コマンドを実行する。エミュレーション環境のため、動作は実機より遅くなる。
"C:\Program Files\qemu\qemu-system-arm.exe" -kernel kernel-qemu-4.9.59-stretch -cpu arm1176 -m 256 -M versatilepb -dtb versatile-pb.dtb -no-reboot -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -redir "tcp:10022::22" -hda 2017-11-29-raspbian-stretch.img主要なパラメータの説明:
- -kernel:使用するカーネルファイルを指定
- -cpu arm1176:エミュレートするCPUタイプ
- -m 256:割り当てメモリ容量(MB)
- -M versatilepb:エミュレートするマシンタイプ
- -redir "tcp:10022::22":ホストのポート10022をゲストのポート22に転送
- セキュリティ警告が表示された場合は、「アクセスを許可する」を選択する。
- Raspbianに搭載されている主要な開発ツール:
- bluej: Java開発環境BlueJ
- geany: 統合開発環境Geany
- greenfoot: Java学習環境Greenfoot
- scratch2: ビジュアルプログラミング環境Scratch 2
- システムの終了は、メニューから「shutdown」を選択する。
WindowsからRaspbianシステムへのリモートアクセス
この節では、RaspbianでのSSHサーバー有効化とWindows側からのSSH接続確立を行う。
- Raspbianのメニューから「Terminal」を選択して端末を起動する。
- 端末で以下のコマンドを実行し、SSHサーバーを起動してIPアドレスを確認する。
- sudo service ssh start:SSHサーバーの起動
- ifconfig -a:ネットワーク設定の確認
sudo service ssh start ifconfig -a
- Windowsのコマンドプロンプトで「netstat -an」を実行し、ポート10022の状態を確認する。ポートが見つからない場合は、Raspbianシステムの起動に問題がある可能性がある。
netstat -an
- コマンドプロンプトを管理者権限で起動し、以下のコマンドでファイアウォールの設定を行う。ポート10022/TCPの通信を許可する。
netsh advfirewall firewall add rule name="raspbian" dir=in protocol=tcp localport=10022 action=allow
- Windows用SSHクライアントであるMobaXTermを起動する。
MobaXTermが未インストールの場合は、公式サイトからMobaXTerm Home Edition(インストーラー版)をダウンロードする。
https://mobaxterm.mobatek.net/
インストール手順はこちらのガイドを参照すること。
- MobaXTermで「Start local terminal」を選択する。
- 以下のSSH接続コマンドを実行する。
ssh -X -p 10022 pi@localhost* -XオプションはX11フォワーディングを有効にし、GUIアプリケーションの表示を可能にする。
* 既定のパスワードは「raspberry」である。
* パスワード入力時は画面に文字が表示されないが、これは正常な動作である。
接続確認のメッセージが表示されたら「Yes」を選択する。
MobaXTermのGUIからも接続が可能である。
- 接続を終了する場合は「exit」コマンドを実行する。
接続が正常に終了すると、MobaXTermのローカル端末に戻る。これでWindowsからRaspbianへのリモートアクセス環境の構築は完了である。
トラブルシューティング
よくある問題と解決方法:
- QEMUの起動に失敗する場合:
- コマンドラインのパラメータが正しいか確認する
- イメージファイルとカーネルファイルが同じディレクトリにあることを確認する
- ファイル名とバージョン番号が正確に一致しているか確認する
- SSHでの接続に失敗する場合:
- Raspbianでsshサービスが起動していることを確認する
- ファイアウォールの設定を再確認する
- ポート10022が他のアプリケーションで使用されていないか確認する
- システムの動作が遅い場合:
- QEMUのメモリ割り当て(-mパラメータ)を増やすことで改善できる場合がある
- ホストマシンの負荷状況を確認する
セキュリティに関する注意事項
開発環境として使用する際の推奨事項:
- 初期パスワード「raspberry」は必ず変更すること
- 必要なポート以外は開放しないこと
- 定期的にシステムの更新を行うこと
- 重要なデータを扱う場合は、適切なバックアップを取得すること
応用的な使用方法
本環境の活用例:
- ARM向けアプリケーション開発とテスト
- Raspberry Pi用プログラムの動作確認
- Linuxシステム管理の学習
- ネットワークプログラミングの実践
- クロスプラットフォーム開発の検証
注意:本ガイドは基本的な環境構築手順を示したものである。実際の運用に際しては、セキュリティやパフォーマンスについて十分な検討を行うこと。