1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi 3をQEMUで動かしてみた on Debian 12

Last updated at Posted at 2023-10-24

はじめに

みんな大好きRaspberry Pi 3をQEMUで動かして (エミュレートして) みた時のメモです。

参考にしたサイト

構成図

+-----------------------------+
| +-------------------------+ |
| | +---------------------+ | |
| | | +-----------------+ | | |
| | | | Raspberry Pi OS | | | |
| | | +-----------------+ | | |
| | | Rapsberry Pi 3      | | |
| | +---------------------+ | |
| | QEMU                    | |
| +-------------------------+ |
| Debian                      |
+-----------------------------+

各ソフトウェアのバージョン

Debian

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

QEMU

$ qemu-system-aarch64 --version
QEMU emulator version 7.2.5 (Debian 1:7.2+dfsg-7+deb12u2)
Copyright (c) 2003-2022 Fabrice Bellard and the QEMU Project developers
$ qemu-system-aarch64 -M help | grep raspi
raspi0               Raspberry Pi Zero (revision 1.2)
raspi1ap             Raspberry Pi A+ (revision 1.1)
raspi2b              Raspberry Pi 2B (revision 1.1)
raspi3ap             Raspberry Pi 3A+ (revision 1.0)
raspi3b              Raspberry Pi 3B (revision 1.2)
  • ちなみに、別マシンにて8.1.2をビルドしましたが、QEMUでは3B+や4Bのサポートはまだのようです。
    $ qemu-system-aarch64 --version 
    QEMU emulator version 8.1.2 (v8.1.2)
    Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers
    $ qemu-system-aarch64 -M help | grep raspi
    raspi0               Raspberry Pi Zero (revision 1.2)
    raspi1ap             Raspberry Pi A+ (revision 1.1)
    raspi2b              Raspberry Pi 2B (revision 1.1)
    raspi3ap             Raspberry Pi 3A+ (revision 1.0)
    raspi3b              Raspberry Pi 3B (revision 1.2)
    

Rapsberry Pi OS

手順

  1. Raspberry Pi用のファイルを保存するディレクトリ (e.g., /home/user/raspi3) を作成します。
    mkdir -p /home/user/raspi3
    
  2. Raspberry Pi OSのイメージをダウンロードします。
    cd /home/user/raspi3
    
    wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip
    
  3. ダウンロードしたファイルを解凍します。
    unzip 2020-08-20-raspios-buster-arm64.zip
    
  4. イメージファイル2020-08-20-raspios-buster-arm64.imgをループバックマウントします。
    sudo losetup --show -fP 2020-08-20-raspios-buster-arm64.img
    
    • ループバックマウントが成功すると、以下のようにデバイス名が表示されます。デバイス名は環境によって異なります。
      /dev/loop6
      
  5. 上記デバイス上のパーティション/dev/loop6p1を任意のディレクトリ (e.g., /mnt/tmp) にマウントします。
    sudo mkdir /mnt/tmp
    
    sudo mount /dev/loop6p1 /mnt/tmp/
    
  6. 以下の2つのファイルを/hoem/user/raspi3にコピーします。
    cp /mnt/tmp/bcm2710-rpi-3-b.dtb /home/user/raspi3
    
    cp /mnt/tmp/kernel8.img /home/user/raspi3
    
  7. 該当のデバイスをアンマウントします。
    sudo umount /mnt/tmp
    
    sudo losetup -d /dev/loop6
    
  8. 仮想マシンを起動するためのシェルスクリプトrun.shを作成します。
    cd /home/user/raspi3
    
    touch run.sh
    
    chmod +x run.sh
    
    vim run.sh
    
    qemu-system-aarch64 \
    -m 1024 \
    -M raspi3b \
    -kernel kernel8.img \
    -dtb bcm2710-rpi-3-b.dtb \
    -drive format=raw,file=2020-08-20-raspios-buster-arm64.img \
    -append "console=ttyAMA0 root=/dev/mmcblk0p2 rw rootwait rootfstype=ext4 dwc_otg.fiq_fsm_enable=0 bcm2708_fb.fbwidth=1280 bcm2708_fb.fbheight=720" \
    -no-reboot \
    -device usb-kbd \
    -device usb-mouse \
    -device usb-net,netdev=net0 \
    -netdev user,id=net0,hostfwd=tcp::2222-:22 \
    -nographic
    
  9. run.shを実行してください。
    ./run.sh
    
  10. Enjoy!
    $ ./run.sh 
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 5.4.51-v8+ (dom@buildbot) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)) #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020
    [    0.000000] Machine model: Raspberry Pi 3 Model B
    
    (snip)
    
    [  OK  ] Started OpenBSD Secure Shell server.
    
    Debian GNU/Linux 10 raspberrypi ttyAMA0
    
    raspberrypi login
    

さいごに

少し古いバージョンではありますが、Raspberry Pi OSをQEMUで動かすことに成功しました。Raspberry Piの入手が難しい場合には、QEMUを使ってみるのはいかがでしょうか?

1
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?