Windows 10 上で Raspberry Pi4 の OpenSUSE Leap 15.2 を起動する。

## はじめに

Windows 10 上で、QEMU を使ってラズベリーパイ用の OpenSUSE Leap 15.2 の実行環境を作成してみました。
そのインストール時に利用した情報などについての記録です。（自分への覚書でもあります）
OpenSUSE 以外の raspios や ubuntu などのインストールイメージも確認してみましたが、EFI のパーテションがないため、ここに書いた EFI からの起動する手法はつかえないでしょう。
raspios を起動したい場合は、https://www.programmersought.com/article/86794759043/ に記事があります。

## 用意したもの

- Windows 用の QEMU インストーラ  
  qemu-w64-setup-20201124.exe
- ビルド済みの UEFI イメージファイル  
  QEMU_EFI.fd
- ラズベリーパイ QEMU に入れる OS イメージ  
  openSUSE-Leap-15.2-ARM-GNOME-raspberrypi4.aarch64-2020.07.08-Build1.71.raw

## 1.Windows へ QEMU のインストール

https://qemu.weilnetz.de/w64/ より qemu-w64-setup-xxxx.exe をダウンロードし、実行することでインストールを行います。
C:\Program Files\qemu に、qemu の実行ファイルなどが置かれます。

## 2.ビルド済みの UEFI イメージ取得

下記 URL よりダウンロードします。ファイル名 QEMU_EFI.fd 
http://snapshots.linaro.org/components/kernel/leg-virt-tianocore-edk2-upstream/latest/QEMU-AARCH64/RELEASE_GCC5/QEMU_EFI.fd

## 3.Raspberry Pi4 OS イメージ取得

今回は OpenSUSE の Jeos (最小限）を使いました。 以下の URL からダウンロード。
http://download.opensuse.org/ports/aarch64/distribution/leap/15.2/appliances/openSUSE-Leap-15.2-ARM-JeOS-raspberrypi4.aarch64.raw.xz

openSUSE...aarch64.raw.xz を winrar などで、展開し openSUSE...aarch64.raw にします。

## 4. OS イメージファイルのリサイズ

初回 OS 起動時に、インストールしたディスクのサイズに合わせて、ファイルシステムを拡張する動作を行います。そのため　openSUSE...aarch64.raw のイメージを、あらかじめ以下のコマンドで拡張しておきます。
以下では 20G byte 拡張しています。

```
"C:\Program Files\qemu\qemu-img.exe" resize ^
openSUSE-Leap-15.2-ARM-JeOS-raspberrypi4.aarch64-2020.07.08-Build1.71.raw +20G
```

## 5.起動用のバッチファイルの作成

BIOS の指定に、上記で用意した QEMU_EFI.fd を指定し、最小限の構成として、キーボード、マウス、そしてディスクイメージを指定しています。
うまく動作すれば、これをベースにして、好みの設定を追加していきます。

```
REM [OpenSUSE.bat]

"C:\Program Files\qemu\qemu-system-aarch64.exe" ^
-m 4G -smp 4 ^
-cpu cortex-a72 -M virt  ^
-device virtio-gpu-pci ^
-device usb-ehci,id=ehci ^
-device usb-mouse -device usb-kbd ^
-bios QEMU_EFI.fd ^
-drive if=none,format=raw,file=D:\openSUSE-Leap-15.2-ARM-JeOS-raspberrypi4.aarch64-2020.07.08-Build1.71.raw,id=hd0 ^
-device virtio-blk-device,drive=hd0  
```

## 6.起動してみる!

![start1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246034/fffa2558-b82f-3203-28a0-a86ac26e1cab.jpeg)
Serial0 に切り替えると、起動時のメッセージも見える。
![start2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246034/a765a027-cad9-5087-f137-84d7357a7dab.jpeg)

## 7. 使える程度に設定を行う

**アップデート**  
まずは、現時点での最新パッケージへアップデートしておきます。

```# zypper update```

**GUI 環境のパッケージをインストール**

```# zypper in -t pattern gnome ```
```# systemctl set-default graphical.target```
ここで利用した JeOS のイメージには最低限のパッケージしか入っていないので GUI 環境がありません。上記のコマンドで、GUI 環境をインストールします。この例では gnome をインストールしてみました。  

openSUSE-Leap-15.2-ARM-GNOME-raspberrypi4.aarch64-2020.07.08-Build1.71.raw　などの GUI パッケージも含んだイメージを利用されている場合は、ここはスキップしてください。

デスクトップの画面は、こんな感じです。
![start3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246034/15320598-12b0-0e78-5c27-e97ad8352017.jpeg)

**Qemu に設定を追加**

・ディスプレイデバイス
何がベストかは手探りですが、わたしは ramfb にしました。
```-device ramfb```

・SSH 接続
　外部から ssh 接続できると、何かと楽なので TCP 22 を 10022 へフォーワードする設定を加えました。
```-device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::10022-:22```

　他の機器からは、下記のようにポート番号 10022 を指定して接続します。
　```# ssh root@192.168.X.213 -p 10022 ``` 

##8. スピード比較

簡単に ImageMagick を make する時間について計測してみました。
ん～～～遅い。この速度では、動作確認に利用するなどの利用用途でしょうかね。:sweat_smile:

***Raspberry Pi4***
real    19m14.075s
user    17m48.268s
sys     1m3.984s

***QEMU Raspberry Pi4***
real    71m30.115s
user    64m53.332s
sys     6m50.806s

<!-- 
ユーザモードの QEMU では、zbox にて
real    359m17.901s
user    355m14.255s
sys     3m45.894s
-->