Ubuntu で Raspbian システムを起動(QEMU、qemu-rpi-kernel を使用)

【概要】Ubuntu 環境で QEMU エミュレータを使用し、ARM プロセッサ向けの Raspbian システムを起動する手順を解説する。QEMU のインストール、カーネルイメージのダウンロード、Raspbian イメージの準備、システム起動、SSH によるリモート接続までの一連の作業を図解で説明する。

【目次】

  1. Ubuntu で QEMU のインストール
  2. Qemu kernel for emulating Rpi on QEMU のダウンロード
  3. Raspbian のダウンロード
  4. Raspbian システムの起動
  5. Ubuntu から Raspbian システムにログイン

RaspbianLinux システム(Debian ベース)である。ARM プロセッサで動作する。

Ubuntu が動作するパソコンには ARM 以外のプロセッサが搭載されているため、QEMU を用いてプロセッサのエミュレーションを行う。

このページでは、Ubuntu マシンで Raspbian が動作するまでの手順を図解で説明する。

謝辞

先人に感謝:

Ubuntu で QEMU のインストール

  1. 更新可能な全パッケージの更新
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt-get -yV upgrade
    
  2. QEMU のインストール
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install qemu qemu-kvm qemu-system-arm
    
    QEMU インストール時の端末画面

    「続行しますか? [Y/n]」と表示されたときは、y キーを押してから Enter キーを押す。

Qemu kernel for emulating Rpi on QEMU のダウンロード

  1. GitHub の dhruvvyas90/qemu-rpi-kernel の Web ページを開く。

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

  2. buster 系列の最新版を選ぶ。
    buster 系列カーネルの選択画面
  3. ページが変わる。Download をクリックする。
    カーネルファイルのダウンロードボタン
  4. ダウンロードが始まる。ダウンロードしたファイルは分かりやすいディレクトリに保存する。
    カーネルファイルのダウンロード完了画面
  5. 次に、versatile-pb.dtb もダウンロードする。前の Web ページに戻り、versatile-pb.dtb を選ぶ。
    versatile-pb.dtb ファイルの選択画面
  6. ページが変わる。Download をクリックする。
    dtb ファイルのダウンロードボタン
  7. ダウンロードが始まる。ダウンロードしたファイルは、先ほどのファイルと同じディレクトリに保存する
    dtb ファイルのダウンロード完了画面

Raspbian のダウンロード

  1. 先ほどの Web ページ(https://github.com/dhruvvyas90/qemu-rpi-kernel)の指示を確認する。
  2. この記載に従い、次の Web ページを開く。ここでは国内のサイトを使用する。

    http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images

  3. 最新版のディレクトリの下の .zip ファイルを選ぶ。
    Raspbian イメージファイルの選択画面
  4. ダウンロードが始まる。ダウンロードが終わるまで待つ。ダウンロードしたファイルは分かりやすいディレクトリに保存する。
    Raspbian イメージのダウンロード進行画面
  5. ダウンロードした .zip ファイルを展開(解凍)する。展開すると .img ファイルができる。
    unzip 2019-09-26-raspbian-buster.zip
    
    zip ファイル展開後の端末画面
  6. この .img ファイルは、先ほどダウンロードした kernel-qemu-x.x.xx-buster(Qemu kernel for emulating Rpi on QEMU のファイル)と同じディレクトリに配置する。このディレクトリのパスを記録しておく。
    必要なファイルを配置したディレクトリの内容

Raspbian システムの起動

  1. 端末を開き、先ほどファイルを配置したディレクトリに移動する。
  2. ls コマンドで、ファイルがあることを確認する。
    ls コマンドでファイル一覧を表示した端末画面
  3. 端末で、次のコマンドを実行する。
    qemu-system-arm -M versatilepb \
    -cpu arm1176 \
    -m 256 \
    -hda 2019-09-26-raspbian-buster.img \
    -net nic \
    -net user,hostfwd=tcp::5022-:22 \
    -dtb versatile-pb.dtb \
    -kernel kernel-qemu-4.19.50-buster \
    -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
    -no-reboot
    
    QEMU 起動コマンド実行後の画面
  4. アプリ紹介

    エミュレータのため、動作速度は低下する。

    • bluej: Java 開発環境 BlueJ
    • geany: 開発環境 Geany
    • greenfoot: Java 開発環境 Greenfoot
    • scratch2: Scratch バージョン 2
  5. Raspbian システムの終了は、左上のメニューで shutdown を選択する。

Ubuntu から Raspbian システムにログイン

ここで行うこと

Raspbian システムで SSH サーバを稼働させる。その後、Ubuntu から SSH サーバに接続する。

  1. Raspbian システムのメニューで Terminal を選ぶと端末が開く。
  2. 端末で次のコマンドを実行し、SSH サーバを開始する。あわせて IP アドレスを確認する。
    • sudo service ssh start: SSH サーバの開始
    • ifconfig -a: IP アドレスの確認
    sudo service ssh start
    ifconfig -a
    
  3. 端末で次のコマンドを実行する。ファイアウォールを、ポート 5022/tcp について解除する。
    # パッケージリストの情報を更新
    sudo apt update
    sudo apt -y install ufw
    sudo ufw allow 5022
    
  4. Ubuntu の端末から Raspbian システムに SSH でログインする。
    ssh -X -p 5022 pi@localhost
    

    パスワードは raspberry である。

    パスワードを入力するとき、画面には何も表示されない。これは正常動作である。

    確認表示が出たら「yes」と入力する。

  5. 「exit」で接続を終了する。