Windows環境でQEMUとqemu-rpi-kernelを使用したRaspbianシステムの実行方法

【概要】Windows環境でQEMUを使用してRaspbianをエミュレートする手順を解説する。QEMUのインストール、カーネルとイメージの入手、システムの起動、SSHによるリモートアクセスの設定を図解付きで扱う。

【目次】

  1. QEMU Binaries for Windowsのインストール手順
  2. QEMU用Raspberry Piエミュレーションカーネルの入手
  3. Raspbianイメージのダウンロード
  4. Raspbianシステムの起動と設定
  5. WindowsからRaspbianシステムへのリモートアクセス
  6. トラブルシューティング
  7. セキュリティに関する注意事項

Raspbianは、Linuxシステム(Debianベース)であり、ARMプロセッサ上で動作する。

一般的なWindowsパソコンにはARMプロセッサ以外のプロセッサが搭載されているため、QEMUを使用してプロセッサのエミュレーションを実施する。

前提条件:Windowsパソコンが使用可能であり、インターネット接続が確保されていること。

謝辞:本ガイド作成にあたり、以下の情報源を参考にした。

QEMU Binaries for Windowsのインストール手順

  1. QEMU Binaries for Windowsの公式Webページにアクセスする。

    https://qemu.weilnetz.de/w64/

  2. 最新版のインストーラーをダウンロードする。

    * 本ガイドではqemu-w64-setup-20180430.exeを使用している。

    QEMUダウンロードページ
  3. ダウンロードしたインストーラーを実行する。
  4. インストールウィザードが起動したら「Next」をクリックして進める。
    インストールウィザード開始画面
  5. ライセンス条項を確認する。
    ライセンス条項画面
  6. コンポーネントの選択画面では、デフォルト設定のまま「Next」をクリックする。
    コンポーネント選択画面
  7. インストール先フォルダも既定のまま「Install」をクリックして開始する。
    インストール先選択画面
  8. インストールが進行する。
    インストール進行画面
  9. インストール完了を確認する。
    インストール完了画面

QEMU用Raspberry Piエミュレーションカーネルの入手

  1. GitHubのdhruvvyas90/qemu-rpi-kernelリポジトリにアクセスする。

    https://github.com/dhruvvyas90/qemu-rpi-kernel

  2. 必要なファイルは、stretch系列(Debian 9ベース)の最新版カーネルversatile-pb.dtb(デバイスツリーブロブ)の2つである。最初にカーネルファイルをダウンロードする。
    カーネルファイル一覧
  3. ファイルページで「Download」をクリックしてダウンロードを開始する。
    カーネルファイルダウンロード画面
  4. ダウンロードしたファイルは、後で使用しやすい場所に保存する。
    ファイル保存先の選択
  5. リポジトリのメインページに戻る
  6. 次に、versatile-pb.dtbファイルをダウンロードする。
    versatile-pb.dtbファイル
  7. 同様に「Download」をクリックしてダウンロードする。
    versatile-pb.dtbダウンロード画面
  8. このファイルは、先ほどのカーネルファイルと同じディレクトリに保存する。
    ファイル保存完了

Raspbianイメージのダウンロード

  1. qemu-rpi-kernelリポジトリの指示に従い、Raspbianイメージを入手する。
  2. 日本国内のミラーサイトを利用してダウンロードする。

    http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2017-12-01/

  3. イメージの.zipファイルを選択する。
    Raspbianイメージ一覧
  4. ダウンロードが完了するまで待機する。ファイルは管理しやすい場所に保存する。
    ダウンロード中の画面
  5. ダウンロードした.zipファイルを展開し、.imgファイルを取り出す。

    Windowsでの圧縮ファイル展開には7-Zipが便利である。インストール手順 »

    zipファイル展開画面
  6. 展開した.imgファイルは、先ほどのカーネルファイルと同じディレクトリに配置する。
    ファイル配置完了

Raspbianシステムの起動と設定

  1. Windowsコマンドプロンプトを起動し、準備したファイルのディレクトリに移動する。dirコマンドで必要なファイルが揃っていることを確認する。
    dirコマンド実行結果
  2. 以下の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に転送
    QEMU起動コマンド実行
  3. セキュリティ警告が表示された場合は、「アクセスを許可する」を選択する。
    セキュリティ警告画面
  4. Raspbianに搭載されている主要な開発ツール:
    • bluej: Java開発環境BlueJ
    • geany: 統合開発環境Geany
    • greenfoot: Java学習環境Greenfoot
    • scratch2: ビジュアルプログラミング環境Scratch 2
  5. システムの終了は、メニューから「shutdown」を選択する。

WindowsからRaspbianシステムへのリモートアクセス

この節では、RaspbianでのSSHサーバー有効化とWindows側からのSSH接続確立を行う。

  1. Raspbianのメニューから「Terminal」を選択して端末を起動する。
    Terminalメニュー
  2. 端末で以下のコマンドを実行し、SSHサーバーを起動してIPアドレスを確認する。
    • sudo service ssh start:SSHサーバーの起動
    • ifconfig -a:ネットワーク設定の確認
    sudo service ssh start
    ifconfig -a
    
    SSHサーバー起動とifconfig実行結果
  3. Windowsのコマンドプロンプトで「netstat -an」を実行し、ポート10022の状態を確認する。ポートが見つからない場合は、Raspbianシステムの起動に問題がある可能性がある。
    netstat -an
    
    netstat実行結果
  4. コマンドプロンプトを管理者権限で起動し、以下のコマンドでファイアウォールの設定を行う。ポート10022/TCPの通信を許可する。
    netsh advfirewall firewall add rule name="raspbian" dir=in protocol=tcp localport=10022 action=allow
    
    ファイアウォール設定コマンド
  5. Windows用SSHクライアントであるMobaXTermを起動する。
    MobaXTerm起動画面

    MobaXTermが未インストールの場合は、公式サイトからMobaXTerm Home Edition(インストーラー版)をダウンロードする。

    https://mobaxterm.mobatek.net/

    MobaXTermダウンロードページ

    インストール手順はこちらのガイドを参照すること。

  6. MobaXTermで「Start local terminal」を選択する。
    Start local terminal選択
  7. 以下のSSH接続コマンドを実行する。
    ssh -X -p 10022 pi@localhost
    

    * -XオプションはX11フォワーディングを有効にし、GUIアプリケーションの表示を可能にする。

    * 既定のパスワードは「raspberry」である。

    * パスワード入力時は画面に文字が表示されないが、これは正常な動作である。

    SSH接続コマンド実行

    接続確認のメッセージが表示されたら「Yes」を選択する。

    SSH接続確認メッセージ

    MobaXTermのGUIからも接続が可能である。

    MobaXTerm GUI接続画面
  8. 接続を終了する場合は「exit」コマンドを実行する。

    接続が正常に終了すると、MobaXTermのローカル端末に戻る。これでWindowsからRaspbianへのリモートアクセス環境の構築は完了である。

トラブルシューティング

よくある問題と解決方法:

セキュリティに関する注意事項

開発環境として使用する際の推奨事項:

応用的な使用方法

本環境の活用例:

注意:本ガイドは基本的な環境構築手順を示したものである。実際の運用に際しては、セキュリティやパフォーマンスについて十分な検討を行うこと。