今回は Windows に似せた Linux とかではなく、ちゃんとした Windows ARM を Raspberry Pi で動作させてみました。
エンジニア転職を目指すなら⇒テックキャンプエンジニア転職Windows ARM とは?

Windows ARM とは ARM プロセッサで動作するデバイスが対象の Windows です。
このブログをご覧の皆さんは御存知の通り Raspberry Pi も ARM プロセッサで動作するデバイスのひとつです。
ですが Windows ARM は Serface Pro X とかのための開発だと思うので、そもそもの用途が Raspberry Pi を前提としたものでは無いと思われます。

なので Raspberry Pi 向けの Linux ディストリビューションのように親切にイメージデータが用意されているわけではありません。
その代わり Raspberry Pi 用には Windows IoT というものが用意されていました。
ですが Windows IoT は IoT デバイスの開発環境向けに用意されているもので、イメージする Windows デスクトップとは大きく異なります。
ちなみに以前は Windows IoT Core も Raspberry Pi のサイトや Noobs からインストールできたのですが、現在では IoT Dashboard というアプリケーションを介して用意するようになっています。
しかも、Windows IoT は 3 B+ および 4 にも対応していません。
Windows IoT ではなく、ちゃんとしたデスクトップの Windows を Raspberry Pi でも動作させよう!というプロジェクトがいくつか存在します。
以前挑戦したときには、素人のおっさんには難易度がとても高かったためしばらく挫折していましたが、先日の Windowsfx の動画作成の際に改めて調べ直すと、以前よりも難易度が少し下っていたようなのと、RasPi 4 に対応しているツールも見かけたので、今回よくわからないながらも挑戦してみたいと思います。
今回紹介する情報を試して見る方は、すべて自己責任でお願いします。
WoR

インターネット上では Raspberry Pi で Windows ARM を動かすために必要なツールがいくつかありましたが、その中で RasPi 4 に対応しているツールを選びました。
今回使ったのは WoR (Windows On Raspberry imager) です。
WoR は Windows 10 ARM64 を Raspberry Pi で使える microSD カードにインストールするためのツールです。
機能は
- MBR と GPT の両方のパーティション構成をサポート
- Windows イメージングとウィムリブをサポート
- 8 GB SD カードへのインストールをサポート (LZX 圧縮経由)
- 多言語サポート
- ISO、WIM/ESDおよびFFUイメージを使用することができます
必要な要件は
- ラズベリーパイ3 B / B + またはラズベリーパイ 4 B シングルボード コンピュータ
- Windows 10 ビルド15063 以降のコンピューター
- 少なくとも 8 GB の空き領域がある SD カード (およびカード リーダー)
- ウィンドウズ 10 ARM64 イメージ (WIM/ESD、ISO または FFU)
ちなみにこのプロジェクトは RaspberryPiPkg, Microsoft および Raspberry Pi 財団の提携はありません。
2020年6月時点で WoR は RasPi 3 に対応している安定版 1.5.2 と、RasPi 4 に対応しているアルファ版の 2.0.0-alpha.3 が公開されています。
RasPi 4 で動作させたいので 2.0.0-alpha.3 をダウンロードしました。
それと下には Windows FFU イメージが用意されています。
コチラを使うのが手っ取り早いのですが、今回は別でイメージデータを用意します。
理由は、ビルドが若干古めなのと、英語版だったためです。
可能な限り新しいビルドと日本語版を用意したかったので、UUP Generation Project というサイトを利用することにしました。
UUP

UUP Generation Project では詳細なバージョンを選択して、それに伴った ISO データを作成するためのスクリプト (.cmd) ファイルを入手することができます。
今回は
- Select type: Windows (Final version)
- Select virsion: Feature update to Windows 10, version 2004 [arm64]
- Select language: ja-jp: Japanese
- Select edition: All Edition
- Select type download: Download ISO compiler in OneClick! (run downloaded CMD-file)
を選択しました。
選択し終わると画面右側にリンクが表示されるので、これをクリックしてダウンロードします。
今回ダウンロードしたのは “createingISO_19041.264_ja-jp_arm64_all.cmd” です。
ダウンロードは任意のフォルダで問題ないのですが、実際にスクリプトを実行する際にはいくつかの制約があるようなので、デスクトップにフォルダ(スペースを入れるとエラーが出ました)を作り、その中でスクリプトを実行しました。
ダウンロードした CMD ファイルを実行するには右クリックメニューから「管理者として実行」を選択します。

セキュリティによって警告文が表示されます。

このままだと実行できないので、詳細情報をクリックします。
すると実行ボタンが表示されるので、クリックして進めます。
問題がなければスクリプトが実行され、必要な ISO ファイルが作成されます。

環境によって変わるかもしれませんが、今回ボクの環境(第4世代 Core i7 プロセッサ 16GB RAM Wi-Fi 接続)ではおよそ40分程度かかりました。
必要な ISO データが出来上がったので Windows on Raspberry Pi imager で microSD にインストールしましょう。
WoR でインストール
ファイルの中から「WoR」を見つけ出しダブルクリックで起動させます。

以前のバージョンではあまり翻訳が進んでいなかったようですが、アルファ版ですが現行のバージョンは概ね日本語化されています。
ここにも、Windows on Raspberry は ARM 用の完全なデスクトップ版の Windows をインストールするためのツールであることが書かれていますね。

とりあえず「次へ」をクリックして進めます。
デバイス選択

デバイスの選択では、上段の窓にインストール先の microSD を選択、下段の窓で表示されている RasPi のモデルをクリックします。
今回は RasPi 4 にインストールするので、真ん中に表示されている Raspberry Pi 4 [ARM64] [Experimental] をクリックします。
アルファ版ということなので Experimental なのでしょう。
イメージの選択

次に ARM 用 Windows のイメージを選択します。
上段の窓には先ほど用意した ISO データを選択します。
するとステータスバー(?)らしき場所に「イメージのマウント中」と表示されるので、マウントが完了するまで少し待ちます。
ISO データのマウントが終わると Windows edition: を選択することができるようになります。
今回ボクは Windows 10 Pro に変更しました。
それと注意書きがあります。
Note: Windows 10 1803 and neer versions are known to work.
Version 1809 can crash unexpectedly due to some changes in the WppRecorder.sys driver, so it should be avoided.
注:Windows 10 1803以降のバージョンは動作することがわかっています。
WppRecorder.sysドライバーの一部の変更により、バージョン1809が予期せずクラッシュする可能性があるため、回避する必要があります。
ということなのですが、現状はよくわからないので、そのまま「次へ」をクリックして先に進めます。
イメージファイルは正常なようですし、問題が出てから考えましょう。
ドライバーの選択

ドライバーを選択してくださいということですが、サーバーから利用可能な最新のパッケージを使用する事ができるようなので、コチラをクリックしてチェックを入れます。
するとステータスバー(?)に「必要なファイルのダウンロード中…」と表示されるので、ダウンロードが終わるまで少し待ちます。
ダウンロードが終わると MCCI 社が提供している TrueTask USB のライセンスと、Microchip 社のソフトウェア・ライセンスの確認があるので Accept(イクセプト)をクリックして進めます。

「ドライバーのアーカイブは正常です」とのことなので大丈夫でしょう。
ってか「停止中」って表現はなんとなくネガティブな印象を受けるなぁ…。
個人的には「完了」とかのほうが安心感があるというか…。
とりあえず「次へ」をクリックして進めます。
UEFI ファームウェア

UEFI ファームウェアを選択しますが、ここでもサーバーから利用可能な最新のファームウェアがダウンロードできるようなので、コチラをクリックしてチェックを入れます。
チェックを入れると “Firmware source” という表示が現れます。

Firmware source: では RPi4 のみなので、特に変更せずこのままです。
ステータスバー(?)に「必要なファイルのダウンロード中…」と表示されるので、ダウンロードが終わるまで待ちます。
やっぱり「停止中」でダウンロードが完了します。
「次へ」のボタンがアクティブになるので、クリックして先に進めます。
設定

イロイロと表示されていますが、実際にはいじるところがありません。
スキルがある方であれば調整できるかもしれませんが、素人のボクには手出しできません。
強いて言えば、「終了時に、この設定を保存する」のチェックを ON にする程度かと思います。
なので「次へ」をクリックして先に進めます。
インストール

インストールの概要ということで、インストールする内容が表示されます。
目立つように警告文が表示されていますが、コレ用にフォーマットしておいた microSD なので「インストール」をクリックして先に進めます。
今回の環境では「インストール」ボタンをクリックしてから、およそ26分でインストールが完了しました。
これで Windows ARM for Raspberry Pi 4 が用意できたので、早速起動させてみます!
Windows ARM 起動

今回はプロセッサの負荷が高そうなので、冷却ファンのついたケースに入ったほうを使いました。
Windows ARM をインストールした microSD を Raspberry Pi 4 にセットして電源を入れます。
起動させている間は、Windows のアイコンやら「デバイスを準備しています」すらめっちゃ感動してました。

ですが初回起動はいつもそうです。
待ち時間が長い。
設定画面が表示されるまで、電源を入れてから20分以上かかりました。

が、ここで問題発生です。
キーボードとマウスが反応しません。
ポートを差し替えてみたのですが、うんともすんとも言わないです。
なにか見落としてるのかな?
と思ってイロイロ調べてみると、どうやら Type A の USB ポートは認識しないっぽいです。
ぇえ!?
どうやって操作するの???
ということで、他にも準備が必要だったようなので今回はここまでです。
さて次回、Windows ARM を動作させることができるのでしょうか?
今回の記事で登場した Web サイト
- Windows IoT ドキュメント
- Windows ARMドキュメント
- WoR (Windows on Raspberry)
- UUP (Unified Update Platform) Generation Project