ラズパイ4でWindows 10 on ARMを動かす


ラズパイ4でWindows 10 on ARMが動くようになった・・・とは聞いていたのですが、ラズパイ4を持っていないので試してはいませんでした。

しかし、ラズパイ4 8GBモデルを買ってしまったので、試してみました。

とりあえず感想ですが、動作自体はラズパイ3で使うより快適ですが、メモリが1GBに制限されます。また、オンボードのNICとUSB Aポート、WiFi/Bluetoothが使えないというのが難点で、全部Type-CポートにつなげたUSB Hubにつなげる必要があります。

デバイスのサポート状況については「Windows on ARM(64) device drivers for the Raspberry Pi platform」を参照のこと

また、今回はツールを使用してmicroSDを作成していますが、手動でやる場合については「How-to: installing windows 10 arm64 (17134) on your raspberry pi 3 and 4」を参照してください。

準備するもの

・ラズパイ4

2020/06/06時点ではメモリ認識が1GBまでなので、どのラズパイ4を買っても同じです。

・高速なmicroSD

低速なmicroSDを使うと起動にだいぶ時間がかかります。
「A1 V30」か「A2 V30」と書かれているやつを入手します。(次点はA1 V10)

(AやVの意味は「SDカードの種類」参考のこと)

・USB Type-Cのハブ

現状ラズパイ4のUSB Aポートが認識してくれないので、電源供給にも使うType-CポートにUSBハブを繋ぎ、そこに電源とキーボード、マウス、NICなどを繋ぐ必要があります。

2020/06/18追記 丁度いいUSBハブが無かったので、2つのUSBハブを組み合わせて使っていたのですが面倒になったので↓のやつを買いました。土曜に届くらしいので後で試します。

・USB NIC/WiFi

ラズパイ4のNIC/WiFiが使えないので、こちらもUSB Type-Cハブ経由で繋ぐ必要があります。
ただし、MicroSD上にNICドライバをコピーしておく必要があります。
最近のWindows 10だと自動認識するようなデバイスであっても認識してくれませんでした。

ドライバ入手に関する重大な注意点は「ARM64用が必須」ということ。
通常配布されているドライバはIntel/AMD系用の32bit/64bit環境専用で、ARM系は考慮されていません。なので、実はドライバ単品入手はかなり難しいです。

Windows 10で自動認識してくれるようなデバイスの場合、USB Bluetooth増設してBluetoothテザリング経由でWindows Updateからドライバを入手して認識させることができるようになります。

・USB Bluetooth

USB NICのドライバがうまく見つからない場合、Bluetoothテザリング経由でネットワークに繋ぐということでラズパイ4をネットワークに繋ぐことが可能になります。

手順1 Windows 10 on ARMのISOイメージ生成

まず、Windows 10 on ARMのISOイメージを作成します。

UUP Generation Project」や「UUP dump」からarm64用のバッチファイルを入手して、管理者権限で実行することで2~3時間ぐらいかかってISOファイルが生成されます。

手順2 Windows on Raspberry imagerの入手

Windows on Raspberry imager」の2.0.0がラズパイ4対応です。

手順3 microSDへの書き込み

Windows on Raspberry imagerを起動してmicroSDへ書き込みます

デバイス選択で「ラズパイ3(64bit)」「ラズパイ4(64bit)」「ラズパイ2/3 (32bit)」から「ラズパイ4」を選びます。

先ほど生成したISOイメージとインストールするWindows10のエディションを選択します。

ラズパイ3(64bit)とラズパイ4(64bit)はどちらも同じARM64用ISOを使用します。32bitの場合、使うISOはよくわかりません。

ドライバをダウンロードします。「Use the latest package available on the server」を選択すると現時点のラズパイ用最新ドライバーをダウンロードしてくれます。

Windows 10 on ARMはUEFI経由で起動するため、UEFIファームウェアを入手します。こちらも「Use the latest firmware available on the server」を選択します。

設定でBOOTパーテーションに置かれるconfig.txtファイルの内容や、microSDのパーテーション設定などを設定します。

「Advanced」タブを選択すると下記の警告ダイアログが表示されます。

2020/06/06時点だとラズパイ4では1GBまでしかメモリが使えないので「Memory limit: 1024MB」と設定されています。(ちなみにうちのは8GBなので8000MBでやってみるとUSB Type-C経由でもキーボード/マウスが使えないという何もできないWindowsが起動しました)

書き込み前の最終確認です。

手順4 NIC/WiFiドライバのコピー

microSD上には「BOOTドライブ」と「WINDOWSドライブ」が出来てます。
このうち「WINDOWSドライブ」の方にNIC/WiFiのドライバをコピーします。

手順5 ラズパイを起動

必要なデバイスをラズパイ4につなげて電源を入れます。

注:ここで書く時間はmicroSDが高速なA2 V30のものを使った場合の時間です。遅いmicroSDの場合、5倍以上の時間がかかったりします。(ラズパイ3の時の体験談)

最初、白黒のラズベリーパイロゴ画面が3分間ぐらい表示され続けますが、正常です。
(2020/06/10 追記: この時間がかかる件はメモリ8GBモデルでのバグでUEFI v1.14にて修正されました)


そのあと、画面下部にUEFIブート選択のバーが表示された後、真っ暗になり、30秒程度で青いWindowsロゴとなります。

青いWindowsロゴだけの時間が2分弱続いたあと、下側で丸いぐるぐるが始まります。
このぐるぐるは「デバイスを準備しています」などが15分ぐらい続いたあと、再起動します。

再起動するとやはり白黒ラズパイロゴがしばらく表示された後、5分ぐらいで全画面青表示で中央に「お待ちください…」ぐるぐるが5分ぐらい表示されます。

「お住まいの地域はこちらでよろしいですか?」が表示され、Windows 10のセットアップが開始されます。

ただ・・・私の場合、最初はキーボード/マウスを認識してくれなかったので、強制電源オフを1回しました。 (何回か再セットアップした結果、これは1回しか発生しませんでした)

また、パスワードは入力しないでエンターキー入力で進めると3つのヒント設定不要で、自動ログインにもなるので楽ちんです。

起動してみるとデバイスマネージャの認識状況はこんな感じです。

タスクマネージャーを開くとこんな感じでディスクI/Oが100%になっていたりします。
これは後述のOneDriveとかバックグラウンドアプリの影響です。オフにすると改善されます。

手順6 快適に使うための設定

Windows 10 on ラズパイ3の時(ラズパイ3のWindows 10 on ARMを使う場合の設定ポイント)と一緒です。

スタートアップ設定

One Drive用プログラムがスタートアップに組み込まれており、これが結構な負荷を与えています。

「タスクマネージャ-」を開き「スタートアップ」タブにある「Microsoft OneDriver Setup」を右クリックし「無効化」を選択します。

電源設定

コントロールパネルの電源オプション設定を「バランス」から「高パフォーマンス」に変更します。

最近のWindows10だとコントロールパネルをスタートメニューから開くのが面倒です。

スタートメニューから[設定]-[システム]-[電源とスリープ]から「電源の追加設定」をクリック

バックグラウンドアプリ設定

Windowsストア系のアプリが動いてしまうと結構圧迫してしまうので、バックグラウンドアプリの実行を停止します。

[設定]-[プライバシー]-[バックグラウンドアプリ]にて「アプリのバックグラウンド実行を許可する」を「オフ」に変更します。


現状、メモリが1GB制限なのは、ACPI DMA周りのバグで、ラズパイ4用のUEFIアップデートによって解消されることが期待されています。

もし解消された場合に、既存microSDの1GB制限を解除したい場合は「bcdedit /store T:\EFI\Microsoft\Boot\bcd /deletevalue {default} truncatememory」を実行すればいけるのでは?との見解。(ネタ元:「How-to: installing windows 10 arm64 (17134) on your raspberry pi 3 and 4」)

Ubuntu 20.04でIPアドレスを設定する


なんか嘘の設定方法がはびこっているので正しい手法をメモ書き

まず、Ubuntu 20.04をIPアドレスをdhcp取得でインストールすると、「/etc/netplan/00-installer-config.yaml」に下記のような内容の設定ファイルを作成される。

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens160:
      dhcp4: true
  version: 2

上記の「ens160」はNICのデバイス名なので使用するNICによって名称が変化する。

で、この /etc/netplan/00-installer-config.yaml とか /etc/netplan/50-cloud-init.yaml とか /etc/netplan/01-netcfg.yaml を変更する、という手順は「誤り」です。

正しい手法はUbuntuの公式ドキュメント「Network Configuration」の「Dynamic IP Address Assignment (DHCP Client)」と「Static IP Address Assignment」に記載されているように「/etc/netplan/99_config.yaml」というファイルを新規作成して、そこで設定します。

これは、netplanコマンドは/etc/netplan/にある数字で始まるファイルを00から順に読み込み99を一番最後に読み込むので、99_config.yamlで記載した内容で上書きされて設定される、という動作になっているためです。

Ubuntu公式サイト上では固定IPアドレス設定時に「dhcp4:false」を設定する、なんてことは書いてありません(2020/05/18時点)が、初期インストール時にdhcp取得を選択していると00-installer-config.yaml上では「dhcp4:true」が設定されているため、ens160に対してdhcpで取得したIPアドレスと固定IPアドレスの双方が割り当てられるという状況になってしまいます。

それを防ぐためには下記の様に「dhcp4:false」を設定した上で、固定IPアドレスの設定を入れる、ということが必要になります。

network:
    version: 2
    renderer: networkd
    ethernets:
        ens160:
            dhcp4: false
            addresses:
                - 172.17.44.240/16
            gateway4: 172.17.0.1
            nameservers:
                search: [adosakana.local]
                addresses: [172.17.44.49]

また、ホスト名については、「hostnamectl」コマンドを使用します。(追加で/etc/hostsのエントリ修正も必要です)

まず「hostnamectl」を実行して現在の値を確認します。

osakanataro@ubuntu:~$ hostnamectl
   Static hostname: ubuntu
         Icon name: computer-vm
           Chassis: vm
        Machine ID: adcd0e151d91412581407a94fc19a4c5
           Boot ID: 1ca98f3699d34707b58595e059708d0a
    Virtualization: vmware
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-29-generic
      Architecture: x86-64
osakanataro@ubuntu:~$

ホスト名は「hostnamectl set-hostname 新しいホスト名」で設定します。

osakanataro@ubuntu:~$ sudo hostnamectl set-hostname ubuntu20
[sudo] password for osakanataro:
osakanataro@ubuntu:~$ hostnamectl
   Static hostname: ubuntu20
         Icon name: computer-vm
           Chassis: vm
        Machine ID: adcd0e151d91412581407a94fc19a4c5
           Boot ID: 1ca98f3699d34707b58595e059708d0a
    Virtualization: vmware
  Operating System: Ubuntu 20.04 LTS
            Kernel: Linux 5.4.0-29-generic
      Architecture: x86-64
osakanataro@ubuntu:~$

なお、hostnamectlだけだと/etc/hostsの127.0.1.1に記載されているホスト名が書き換わらないので、こちらは手動で変更します。

ドンキから7インチミニノートNANOTE登場


ドン・キホーテから7インチサイズのミニノートNANOTEが19800円で登場とのこと

情熱価格PCシリーズに7インチUMPCが初登場 360°開くコンパクトサイズ『NANOTE(ナノート)』誕生!

CPUはIntel Z8350で、このGPD Pocket初代みたいなキー配列・・・見たことあるな・・・

2019年11月にIndiegogoでクラファンやってた「Peakago 7 inch laptop – Work & Fun on the Go」みたい・・・

で、このPeakagoは1月ぐらいからもう荒れててコメント欄に、Chitech Shenzhen Technology Co. Ltdの「7″ windows pocket PC Yoga like 360 Flip Full metal full lamination」そのまんまじゃねーか、という突込みが入ったりしていました。

まぁ、みてわかるようにほぼ同じなわけですね

China 7" windows pocket PC Yoga like 360 Flip Full metal full lamination
China 7" windows pocket PC Yoga like 360 Flip Full metal full lamination
China 7" windows pocket PC Yoga like 360 Flip Full metal full lamination
China 7" windows pocket PC Yoga like 360 Flip Full metal full lamination

で、このChitech Shenzhen Technology Co. Ltdのページいていると、1000台発注で$118からつくれるよー、とうたってるわけです。

今回のNANOTEは19800円(税抜)なわけで、日本語キーボードへのカスタムと技適、日本語マニュアル作成などを考えると、そんな値段になるかな?という感じです。

で、気になるのは、NANOTEが想像通りだとすると、中に4G LTEのボードを増設できる余地があるのか?ということ。

OEM元のページだとスロット状況がよくわからないのでPeakagoのページから拾ってくると、こんな感じ

で、NANOTEを見てみると・・・

SIMスロットは実装されてない雰囲気ですね…残念

Bitdefenterをインストールしてみた


インストーラを実行すると、本体418MBのダウンロードが開始された。

速くは無い

ここに来て本物のインストーラが起動

承諾にチェックをいれ、そしてその下の「Send anonymous usage reports」は好みに応じてチェックを外してから「Intall」をクリックします。

BITDEFENDERアカウントの登録はしないで「NOT NOW」で閉じます。

デスクトップ上の「Bitdefender Antivirus Free」をクリック

ログインしないと使えないようです。

このため、これ以上の使用はせず終了。

インストールされるサービスは「bdredline」「Bitdefender Correlation Service」「Bitdefender Product Agent Service」「Bitdefender Security Service」「Bitdefender Update Service」でした。

メモリの消費量はaviraより少し少ない感じですね。

Aviraをインストールしてみた


Avitaをインストールしてみた。

インストール先の選択も何もできない。

いきなり上記のウィンドウが消えたかと思ったら、ウィンドウが小型化&右下に移動してインストールが継続していた。

ちょっと時間がかかるなぁ・・・

インストール終了

まずは初回の「スマートスキャン」を実行。

Windows10初期インストール&Windows Updateが終わった環境なのに多い・・・

VMware Tools関連で指摘されるとは・・・

プライマシー設定はまぁ、そんな感じか、というところ

起動が遅いアプリは「OneDrive」。まぁ、これは通常でも悪影響を出しているのでわからなくもない。

謎なのはレジストリエントリのあたり。

具体的になにがあげられているのかが不明。

インストールされたサービスは予想外に多い

「Avira Mail Protection」「Avira Optimizer Host」「Avira Phantom VPN」「Avira Real-Time Protection」「Avira Security」「Avira Service Host」「Avira Updater Service」「Avira Web Protection」「Avira スケジューラ」「Avira 保護サービス」

数が多いので個別サービスのタブは省略。

このサービスの多さが影響しているのかメモリの使用量が若干多め。