ラズパイ4にWindows 10 on ARM64をインストールする

開発・検証用にARM64版のWindows 10の動作環境が必要になりました。
国内で容易に入手可能なデバイスは事実上 Surface Pro X のみですが、お値段15万円ほど。
ちょっとお試しで買うにはハードルが高い・・・

そこでラズパイ４（Raspberry Pi 4）の出番です。
非公式ながらWindows 10 on ARM64をインストールでき、
快適とは言えないまでも、まずまず実用的な速度で動作します。

> Windows 10 on ARM64 はデスクトップ版（フル機能）のWindows 10です。
> 組み込み用途向けの Windows 10 IoT Core とは異なります。

(2020/12/30) 最新の情報を反映して一部の画像や説明を更新しました。

## Raspberry Pi 4 での動作について

### 動作速度
もともとパフォーマンスの悪いARM64版Windows 10をさらに非力なRaspberry Pi 4で動かしているため、昔のAtom搭載ネットブックのような感じでもっさりとした動きです。
とはいえ検証等での利用であればそれほどストレスを感じないレベルでは動いていると思います。

### 動作しない機能
Raspberry Pi 4 上のWindows 10 on ARM64は有志によるドライバ開発が進んでいますが、いくつかの機能はまだ正常動作しません。

* 音声出力（HDMI出力、オーディオジャックどちらも）  
* Wi-Fi
* Bluetooth  
  ⇒ テスト版ドライバを追加導入するとBluetoothが使えます  
      手順が少し複雑なので[別記事](https://qiita.com/mkht/items/de6ca4a0e4faefb1b8b2)に書きました  
      (2020/12/30追記)

### 制約事項
* **USBデバイスは動作しないものが多い**
  マウス、キーボード、USBストレージは問題なく使えますが、
  LANアダプタやオーディオデバイスなどは動作不安定です。
  また、Windows内蔵ドライバで動作しないタイプのデバイスはほぼ使えません。

* **メモリを3GB以上にすると動作が不安定**
  4GBや8GB版の Raspberry Pi 4 では搭載メモリをフルに使うことができますが、
  BSoDが発生するなどやや動作不安定なようです。
  その場合BIOS設定で使用可能メモリを3GBまでに制限すると安定性が増します。

* **GPUドライバが不完全**
  GPUによる3D描画や動画再生のハードウェアアクセラレーションが使用できないため、
  3Dゲームの類や動画の再生はほぼ不可能です。


## 用意するもの

* **Raspberry Pi 4 Model B**
  メモリ容量は4GB版か8GB版をおすすめします。

* **64GB以上で高速なmicroSDカード** 
  「A1」か「A2」という規格に対応した高速なmicroSDカードを選んでください。
  低速なSDカードだと動作がかなり遅くなります。

* **冷却ファン付きのケース** 
  動作中は Raspberry Pi 4 がかなり熱くなるのでファン付きのケースが必要です。

* **その他周辺機器（マウス、キーボード、HDMIモニタ、MicroHDMIケーブル、電源）** 
  電源は5V/3Aが安定して出る必要があります。
  Raspberry Pi 4 対応と明記してあるものを買うほうが良いでしょう。

これから新規に用意する場合は一式揃ったセットを買ってしまうのがラクです。
私はこれ👇を買いました。
https://www.amazon.co.jp/gp/product/B082VVBKRP/
[<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/8573bdfb-017c-8955-a142-ae95fd0afc03.png">](https://www.amazon.co.jp/gp/product/B082VVBKRP/)


## ARM64版 Windows インストーラのダウンロード

通常の（ARM64ではない）Windows 10のPCで作業します。

1. https://uupdump.ml/ に行きます
  [<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/dafb89d5-3e2b-3480-e06c-b9bfd98b4cfc.png">](https://uupdump.ml/)

1. **Latest Public Release Build** の **arm64** をクリックし、ダウンロードしたいビルドを選択
  ビルドは19041(2004)もしくは19042(20H2)以降が推奨です。Previewビルドも使用可能です。
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/9709df29-132b-5ff4-b90c-5dfcccce0443.png">
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/0258e8de-4f04-1953-329e-cc7b10413373.png">

1. 言語とエディションを選択した後、[Download and convert to ISO]にチェックをつけて[Create download package]をクリック
  <img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/9487a7d0-4643-49c4-9f9b-47e5f027b637.png">

1. zipファイルがダウンロードされるので展開し、`uup_download_windows.cmd`をダブルクリックで実行
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/43e752d8-774f-ac22-cc0a-ca77a2d6c1b4.png)

1. しばらくダウンロードとビルドが行われ、完了するとISOファイルが出来上がります


## microSDにインストール

1. 通常の（ARM64ではない）Windows 10のPCにmicroSDカードを挿入します

1. https://www.worproject.ml/downloads から最新版の Windows on Raspberry imager をダウンロード
  <img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/7e64b32f-1db9-b888-250f-d1715cb18ebf.png">

1. Windows on Raspberry imager を実行
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/a1925e6f-2383-4ee6-7dc6-d4d0dcb0c150.png">

1. [三]メニューから挿入したmicroSDカードを選択、デバイスは[Raspberry Pi 4 [ARM64] [Experimental]]を選択
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/2db7f30a-144f-ab5d-bd8f-ec46b3c99114.png">

1. 先ほどダウンロードしたARM64版Windows 10のインストーラISOファイルを指定
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/ade8b4c0-a886-4083-aec3-f13901773129.png">

1. [Use the latest package available on the server]にチェック
  2回くらいライセンス承諾を聞かれるので[Accept]で進める
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/d06f07a9-255e-4163-ff27-e4f70ff466cc.png">

1. [Use the latest firmware available on the server]にチェック
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/b32a05bb-525f-f6fe-e524-692e0cdf9d37.png">

1. 設定は特にいじらず次へ
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/067d3595-fe72-7449-3d89-34b00a94bb3b.png">

1. 確認画面で問題なければ[インストール]をクリック
  microSDカード内のデータはすべて消えますので注意
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/8cc8eb91-80b9-e0a1-2b3f-fc38812a4430.png">

1. インストールが終わるまで待つ
  低速なSDカードを使っていたり、PCのスペックが不足しているとかなり時間がかかりますが、気長に待ちます
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/e033b50e-9fb6-4add-4b62-8745aea0a89b.png">

1. 完了したらmicroSDカードを取り外す
  <img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/e702560d-30f4-019d-c190-096cb216a0b1.png">


## BIOS設定（任意）

1. Windows on ARM64 をインストールしたmicroSDを Raspberry Pi 4 に挿入し、電源を入れる

1. Boot画面（Raspberry Piのロゴが表示される画面）でEscキーを押してBIOS設定画面に入る
  <img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/2443e201-a173-968d-1d36-e8ed6dfb58c4.png">

1. [Device Manager] → [Raspberry Pi Configuration] → [Adovanced Configuration]を開き**[Limit RAM to 3 GB]**の設定を[Disabled]に変更
  この設定により Raspberry Pi 4 に搭載されている4GBや8GBのメモリをフルに使うことができますが、その代わりに動作がやや不安定になるようです。
  安定性を重視する場合はこの設定は[Enabled]のままとしてください。
  （個人的には4GBでも3GBでも体感的な動作はさほど変わらないと感じます）
  <img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/fd6c8cfb-4717-0267-9bb8-8afa400288a4.png">


## Windows 10 初期設定

1. Windows 10 on ARM64 をインストールしたmicroSDを Raspberry Pi 4 に挿入し、電源を入れる
  特に初回起動時はかなり時間がかかるので気長に待ちます。（高速なSDカードでも15分以上）

1. Windowsの初期設定画面が表示されるので画面の指示に従いセットアップを進める
  通常のWindows 10のセットアップと全く同じ手順です。
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/8680d750-6cb6-1f4c-1665-d754df46f26d.png)

1. デスクトップが表示されてセットアップ完了！
  <img width=70% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177762/194f35e3-5462-4a3a-2676-bffa68d7254f.png">


あとは各種ソフトをインストールするなどして快適な Windows 10 on ARM64 ライフを送ってください。

## 付録

### Windows 10 on ARM64 ネイティブ対応のアプリケーション

* **Microsoft Edge (Chromium)**
  https://www.microsoft.com/ja-jp/edge/business/download
  プラットフォームで**Windows arm64**を選択

* **Mozilla Firefox**
  https://www.mozilla.org/ja/firefox/new/
  [高度なインストールオプションと他の OS 版]から**Windows ARM64/AArch64**を選択

* **7-Zip**
  https://www.7-zip.org/
  alpha版の**64-bit ARM64**を選択

* **VLC Media Player**
  https://www.videolan.org/vlc/download-windows.html
  **ARM 64 version**を選択

* **Visual Studio Code**
  https://code.visualstudio.com/download
  **ARM**を選択

* **PowerShell**
  https://github.com/PowerShell/PowerShell/releases
  **PowerShell-7.x.x-win-arm64.zip**を選択
  インストーラ版は用意されていないようです


### FAQ

* **OSのライセンス認証はどうすれば？**
  Windows 10のライセンスにはx86、x64、ARM64の区別は無いので、通常のリテール版ライセンスキーが使用できます。

* **画面右下に「テストモード」と表示されてる**
  署名なしの非公式ドライバが入っている関係で表示されます。
  消すことはできません。

* **画面右上に⚡マークが表示される**
  電源の供給能力不足です。5V/3Aが安定的に出る電源に替えてください。

* **画面右上に🌡️マークが表示される**
  冷却不足です。熱対策を見直してください。

* **Wi-Fiが使いたい**
  現状では無理です。Raspberry Pi 4 内蔵のWi-Fiは動作しませんし、
  USBタイプのWi-FiアダプタもARM64に対応するものはないようです。
  Wi-Fi中継機を使って有線LANに変換するしかないと思います。

* **起動しない**
  もう一度最初からインストールし直してみてください
  故障でない限り、手順どおりやれば起動できるはずです。

* **動作が不安定、ブルースクリーンになる**
  BIOS設定でメモリを3GBに制限してみてください。

* **Raspberry Pi 3 でもできる？**
  Raspberry Pi 3 Model B+でもインストール可能なことを確認していますが、
  動作がとにかく遅いので実用的ではないと思います。