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

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

【本ガイドで得られること】Raspberry Pi実機を用意せずに、Windows上でRaspbian環境を構築できる。ARM向けアプリケーションの開発・テスト、Linuxの学習などに活用できる。

【目次】

  1. QEMU Binaries for Windowsのインストール手順
  2. QEMU用Raspberry Piエミュレーションカーネルの入手
  3. Raspbianイメージのダウンロード
  4. Raspbianシステムの起動と設定
  5. WindowsからRaspbianシステムへのリモートアクセス
  6. トラブルシューティング
  7. セキュリティに関する注意事項
  8. 応用的な使用方法
Raspbianは、Linuxシステム(Debianベース)であり、ARM(Advanced RISC Machine)プロセッサ上で動作する。ARMプロセッサは、Raspberry Piやスマートフォンなどの組み込み機器で広く採用されている省電力プロセッサである。

一般的なWindowsパソコンにはx86/x64系プロセッサが搭載されており、ARMプロセッサとは命令セットが異なる。そのため、QEMU(Quick Emulator)を使用してプロセッサのエミュレーションを実施する。QEMUは、異なるCPUアーキテクチャをソフトウェアで再現するオープンソースのエミュレータである。

前提条件: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エミュレーションカーネルの入手

QEMUでRaspbianを動作させるには、QEMU用に調整されたカーネルが必要である。標準のRaspbianカーネルはQEMU上では動作しない。

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

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

  2. 必要なファイルは、stretch系列(Debian 9ベース)のカーネルファイルversatile-pb.dtbの2つである。versatile-pb.dtbはデバイスツリーブロブと呼ばれ、ハードウェア構成情報をカーネルに伝えるためのファイルである。最初にカーネルファイルをダウンロードする。
    カーネルファイル一覧
  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に転送(SSH接続用)
    QEMU起動コマンド実行
  3. セキュリティ警告が表示された場合は、「アクセスを許可する」を選択する。
    セキュリティ警告画面
  4. システムが起動すると、Raspbianのデスクトップ環境が表示される。Raspbianには以下の開発ツールが搭載されている。
    • bluej: Java開発環境BlueJ
    • geany: 統合開発環境Geany
    • greenfoot: Java学習環境Greenfoot
    • scratch2: ビジュアルプログラミング環境Scratch 2
  5. システムの終了は、メニューから「shutdown」を選択する。

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

この節では、RaspbianでのSSHサーバー有効化とWindows側からのSSH接続確立を行う。SSHでリモートアクセスを行うことで、Windowsのターミナルから直接Raspbianを操作できる。コマンドのコピー&ペーストが容易になり、ファイル転送も可能になる。

  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がLISTEN状態であることを確認する。ポートが見つからない場合は、Raspbianシステムの起動またはSSHサーバーの起動に問題がある可能性がある。
    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フォワーディングを有効にする。X11フォワーディングとは、リモートマシン(Raspbian)で実行したGUIアプリケーションの画面をローカルマシン(Windows)に転送して表示する機能である。

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

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

    SSH接続コマンド実行

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

    SSH接続確認メッセージ
    MobaXTermのGUIからも接続が可能である。

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

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

トラブルシューティング

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

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

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

応用的な使用方法

本環境の活用例:

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

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