Introduction

備忘録。
RaspberryPIを仮想環境で使いたくなったのでメモ。
ただし、現時点ではARM64のエミュレートはできませんでした。

How to

下記の方が教えてくれました。

QEMUのインストール

下記から最新版をダウンロードしてインストール。

Raspbian Jessieのダウンロード

下記からダウンロード。
最新のStrechは動かなかったので断念。

QEMU用カーネルとDevice Treeファイル

下記から、

  • versatile-pb.dtb
  • kernel-qemu-4.4.34-jessie

をダウンロード。
kernel-qemuはバージョンが随時変わります。

下準備

仮想マシンでも何でも良いのでダウンロードしたRaspbianのイメージを仮想マシンにコピー。

セクターの確認

1
2
3
4
5
6
7
8
9
10
11
$ fdisk -l 2017-01-11-raspbian-jessie-lite.img
Disk 2017-01-11-raspbian-jessie-lite.img: 1.3 GiB, 1390411776 bytes, 2715648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x244b8248

Device Boot Start End Sectors Size Id Type
2017-01-11-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
2017-01-11-raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux

マウント

1
2
$ sudo mount -v -o offset=$((512\*137216)) -t ext4 ./2017-01-11-raspbian-jessie-lite.img /mnt/
mount: /dev/loop0 mounted on /mnt.

ファイルシステムテーブルの編集

1
$ sudo vi /mnt/etc/fstab
1
2
3
4
5
proc            /proc           proc    defaults          0       0
-/dev/mmcblk0p1 /boot vfat defaults 0 2
- /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
+ #/dev/mmcblk0p1 /boot vfat defaults 0 2
+ #/dev/mmcblk0p2 / ext4 defaults,noatime 0 1

ld.so.preloadの編集

1
$ sudo editor /mnt/etc/ld.so.preload
1
2
- /usr/lib/arm-linux-gnueabihf/libarmmem.so
+ #/usr/lib/arm-linux-gnueabihf/libarmmem.so

アンマウント

1
$ sudo umount /mnt

起動

-hdaでダウンロードしたRaspbianのイメージを指定します。これがHDDになります

1
2
3
4
5
6
7
8
9
10
set QEMU="C:\Program Files\qemu\qemu-system-arm.exe"
%QEMU% -kernel kernel-qemu-4.4.34-jessie ^
-cpu arm1176 ^
-m 256 ^
-M versatilepb ^
-serial stdio ^
-append "root=/dev/sda2 rootfstype=ext4 rw" ^
-hda 2017-01-11-raspbian-jessie-lite.img ^
-net nic ^
-net user,hostfwd=tcp::20022-:22