Windows環境でQEMUとqemu-rpi-kernelを使用したRaspbianシステムの実行方法
Raspbianは,Linuxシステム(Debianベース)であり,ARMプロセッサ上で動作します.
一般的なWindowsパソコンにはARMプロセッサ以外のプロセッサが搭載されているため,QEMUを使用してプロセッサのエミュレーションを実施します.
本ガイドでは,Windows環境でRaspbianを実行するための詳細な手順を,図解付きで解説します.
【目次】
- QEMU Binaries for Windowsのインストール手順
 - Qemu kernel for emulating Rpi(QEMU用Raspberry Piエミュレーションカーネル)の入手
 - Raspbianイメージのダウンロード
 - Raspbianシステムの起動と設定
 - WindowsからRaspbianシステムへのリモートアクセス
 
謝辞
本ガイド作成にあたり,以下の情報源に多大なる貢献をいただきました:
- 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系列の最新版カーネルとversatile-pb.dtbの2つです.
まずは,stretch系列の最新版カーネルをダウンロードします
 -  ファイルページで「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
 -  セキュリティ警告が表示された場合は,「アクセスを許可する」を選択します
 -  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/UDPの通信を許可します.
netsh advfirewall firewall add rule name ="raspbian" dir=in protocol=udp 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
* 既定のパスワードは「raspberry」です
* パスワード入力時は画面に文字が表示されませんが,これは正常な動作です.
接続確認のメッセージが表示されたら「Yes」を選択します
MobaXTermのGUIからも接続が可能です:
 -  接続を終了する場合は「exit」コマンドを実行します
接続が正常に終了すると,MobaXTermのローカル端末に戻ります.これでWindowsからRaspbianへのリモートアクセス環境の構築は完了です.
トラブルシューティング
よくある問題と解決方法:
-  QEMUの起動に失敗する場合:
  
- コマンドラインのパラメータが正しいか確認します
 - イメージファイルとカーネルファイルが同じディレクトリにあることを確認します
 - ファイル名とバージョン番号が正確に一致しているか確認します
 
 -  SSHでの接続に失敗する場合:
  
- Raspbianでsshサービスが起動していることを確認します
 - ファイアウォールの設定を再確認します
 - ポート10022が他のアプリケーションで使用されていないか確認します
 
 -  システムの動作が遅い場合:
  
- QEMUのメモリ割り当て(-m パラメータ)を増やすことで改善する可能性があります
 - ホストマシンの負荷状況を確認します
 
 
セキュリティに関する注意事項
開発環境として使用する際の推奨事項:
- 初期パスワード「raspberry」は必ず変更してください
 - 必要なポート以外は開放しないようにしてください
 - 定期的にシステムの更新を行ってください
 - 重要なデータを扱う場合は,適切なバックアップを取得してください
 
応用的な使用方法
本環境の活用例:
- ARM向けアプリケーション開発とテスト
 - Raspberry Pi用プログラムの動作確認
 - Linuxシステム管理の学習
 - ネットワークプログラミングの実践
 - クロスプラットフォーム開発の検証
 
注意:本ガイドは基本的な環境構築手順を示したものです.実際の運用に際しては,セキュリティやパフォーマンスについて十分な検討を行ってください.
 -  QEMUの起動に失敗する場合: