ラズパイ3のOSMCがアップデートされてなかった

ラズパイ3をメディアプレーヤーとして使うためにOSMCをインストールしているんですが、確認してみたら「OSMC November 2020 2020.11-1」からアップデートされていなかったので調査。

GUIからやってみると、updateを取得にしにいくもののすぐに終わる。

じゃあ、ssh接続してコマンドでやってみるか、と、「Keeping your OSMC system up to date」にある「sudo apt-get update」を実行してみるとエラー

osmc@osmc:~$ sudo apt-get update
Get:1 http://security.debian.org buster/updates InRelease [65.4 kB]
Get:2 http://ftp.debian.org/debian buster InRelease [122 kB]
Get:4 http://ftp.debian.org/debian buster-updates InRelease [51.9 kB]
Hit:3 http://ftp.fau.de/osmc/osmc/apt buster InRelease
Reading package lists... Done
E: Repository 'http://security.debian.org buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
N: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Version' value from '10.10' to '10.11'
E: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
E: Repository 'http://ftp.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
osmc@osmc:~$

このエラーの場合は、–allow-releaseinfo-change オプションで対応できるとのこと

osmc@osmc:/etc/apt$ sudo apt-get update --allow-releaseinfo-change
Get:1 http://security.debian.org buster/updates InRelease [65.4 kB]
Get:2 http://ftp.debian.org/debian buster InRelease [122 kB]
Get:3 http://ftp.debian.org/debian buster-updates InRelease [51.9 kB]
Get:5 http://security.debian.org buster/updates/main armhf Packages [306 kB]
Get:6 http://security.debian.org buster/updates/main Translation-en [166 kB]
Hit:4 http://ftp.fau.de/osmc/osmc/apt buster InRelease
Get:7 http://ftp.debian.org/debian buster/main armhf Packages [7698 kB]
Get:8 http://ftp.debian.org/debian buster-updates/main armhf Packages.diff/Index [9100 B]
Get:9 http://ftp.debian.org/debian buster/main Translation-en [5968 kB]
Get:10 http://ftp.debian.org/debian buster/contrib armhf Packages [40.1 kB]
Get:11 http://ftp.debian.org/debian buster/non-free armhf Packages [62.1 kB]
Get:12 http://ftp.debian.org/debian buster/non-free Translation-en [88.8 kB]
Get:13 http://ftp.debian.org/debian buster-updates/main armhf Packages 2021-09-18-2009.26.pdiff [1109 B]
Get:14 http://ftp.debian.org/debian buster-updates/main armhf Packages 2021-09-28-1420.03.pdiff [184 B]
Get:15 http://ftp.debian.org/debian buster-updates/main armhf Packages 2021-10-26-2004.40.pdiff [283 B]
Get:15 http://ftp.debian.org/debian buster-updates/main armhf Packages 2021-10-26-2004.40.pdiff [283 B]
Fetched 14.3 MB in 16s (881 kB/s)
Reading package lists... Done
N: Repository 'http://security.debian.org buster/updates InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Version' value from '10.10' to '10.11'
N: Repository 'http://ftp.debian.org/debian buster InRelease' changed its 'Suite' value from 'stable' to 'oldstable'
N: Repository 'http://ftp.debian.org/debian buster-updates InRelease' changed its 'Suite' value from 'stable-updates' to 'oldstable-updates'
osmc@osmc:/etc/apt$

これは大丈夫なのかな?と心配になりつつも「E:」がないので大丈夫だろう、と、「sudo apt upgrade」を実行

osmc@osmc:/etc/apt$ sudo apt upgrade
Running apt upgrade on your system can cause adverse effects on your system
Use apt full-upgrade, which is the proper way to administer a Debian / Ubuntu system
For more information about updates, see https://osmc.tv/wiki/general/keeping-your-osmc-system-up-to-date/
osmc@osmc:/etc/apt$

apt full-upgrade を使えと怒られた

osmc@osmc:/etc/apt$ sudo apt full-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  armv7-libass-osmc armv7-libnfs-osmc dh-python g++-6 gnupg-agent libass5 libavcodec57 libavformat57 libavutil55 libbind9-140
  libbluray1 libcdio13 libcryptsetup4 libdevmapper-event1.02.1 libdns162 libegl1-mesa libenca0 libevent-2.0-5 libgdbm3
  libgl1-mesa-glx libgles2-mesa libicu57 libisc160 libisccc140 libisccfg140 libiso9660-8 liblivemedia57 liblvm2app2.2 liblwres141
  libmicrodns0 libncurses5 libnfs8 libntfs-3g871 libpcre16-3 libperl5.24 libpostproc54 libprocps6 libprotobuf-lite10 libproxy1v5
  libpython3.5-minimal libpython3.5-stdlib libsndio6.1 libssl1.0.2 libstdc++-6-dev libswresample2 libswscale4 libunistring0
  libupnp6 libva-drm1 libva-wayland1 libva-x11-1 libva1 libvlccore8 libvpx4 libwayland-egl1-mesa libwebpmux2 libx264-148
  libx265-95 python-apt python-certifi python-chardet python-dbus python-gi python-gobject python-gobject-2 python-idna
  python-imaging python-pexpect python-pil python-ptyprocess python-requests python-six python-unidecode python-urllib3
  python3-distutils python3-lib2to3 python3.5 python3.5-minimal wireless-firmware-osmc
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  armv7-bluezalsa-osmc libbluetooth3 libfdk-aac1 libpython3.7 libsbc1 python-crypto python-ldb python-samba python-tdb
  python3-dbus python3-gi python3-pil python3-unidecode rbp2-image-5.10.78-2-osmc rbp2-mesa-osmc samba-common-bin
The following packages will be upgraded:
  apt apt-utils armv7-bluez-osmc armv7-eventlircd-osmc armv7-network-osmc armv7-remote-osmc avahi-daemon base-files
  base-files-osmc bind9-host ca-certificates curl debconf debian-archive-keyring distro-info-data iproute2 libapt-inst2.0
  libapt-pkg5.0 libavahi-client3 libavahi-common-data libavahi-common3 libavahi-compat-libdnssd1 libavahi-core7 libavcodec58
  libavformat58 libavutil56 libbind9-161 libbsd0 libc-bin libc-dev-bin libc-l10n libc6 libc6-dev libcairo2 libcurl4 libdns1104
  libgcrypt20 libglib2.0-0 libgnutls30 libgssapi-krb5-2 libhogweed4 libicu63 libisc1100 libisccc161 libisccfg163 libk5crypto3
  libkrb5-3 libkrb5support0 libldap-2.4-2 libldap-common libldb1 liblirc-client0 liblwres161 liblz4-1 libmariadb3 libnettle6
  libnss-myhostname libnss3 libntfs-3g883 libopenjp2-7 libp11-kit0 libpam-systemd libpostproc55 libpython3.7-minimal
  libpython3.7-stdlib libsmbclient libsndfile1 libssl-dev libssl1.1 libswresample3 libswscale5 libsystemd0 libtiff5 libudev1
  libvlc-bin libvlc5 libvlccore9 libwbclient0 libwebp6 libwebpdemux2 libwebpmux3 libx11-6 libx11-data libx11-xcb1 libxml2
  libzstd1 linux-libc-dev locales mariadb-common mediacenter-addon-osmc mediacenter-eventclients-common-osmc
  mediacenter-send-osmc mediacenter-skin-osmc multiarch-support ntfs-3g openssl openvpn psmisc python3.7 python3.7-minimal
  rbp-bootloader-osmc rbp-userland-osmc rbp2-device-osmc rbp2-ftr-osmc rbp2-kernel-osmc rbp2-libcec-osmc rbp2-mediacenter-osmc
  samba-common samba-libs sudo systemd systemd-sysv tzdata udev vlc vlc-bin vlc-data vlc-l10n vlc-plugin-base vlc-plugin-qt
  vlc-plugin-video-output wpasupplicant
122 upgraded, 16 newly installed, 0 to remove and 0 not upgraded.
Need to get 223 MB of archives.
After this operation, 76.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.debian.org buster/updates/main armhf libsmbclient armhf 2:4.9.5+dfsg-5+deb10u2 [155 kB]
<略>
Get:61 http://ftp.fau.de/osmc/osmc/apt buster/main armhf rbp2-device-osmc armhf 1.5.7 [553 kB]
Get:62 http://ftp.fau.de/osmc/osmc/apt buster/main armhf multiarch-support armhf 2.28-110.1 [215 kB]
Fetched 223 MB in 2min 18s (1619 kB/s)
Extracting templates from packages: 100%
Preconfiguring packages ...
(Reading database ... 41428 files and directories currently installed.)
Preparing to unpack .../base-files_10.3+deb10u11_armhf.deb ...
Unpacking base-files (10.3+deb10u11) over (10.3+deb10u7) ...
Setting up base-files (10.3+deb10u11) ...
<略>

Preparing to unpack .../56-liblwres161_1%3a9.11.5.P4+dfsg-5.1+deb10u6_armhf.deb ...
Unpacking liblwres161:armhf (1:9.11.5.P4+dfsg-5.1+deb10u6) over (1:9.11.5.P4+dfsg-5.1+deb10u2) ...
Preparing to unpack .../57-avahi-daemon_0.7-4+deb10u1_armhf.deb ...
Unpacking avahi-daemon (0.7-4+deb10u1) over (0.7-4+b1) ...
dpkg: warning: unable to delete old directory '/etc/resolvconf/update-libc.d': Directory not empty
dpkg: warning: unable to delete old directory '/etc/resolvconf': Directory not empty
Preparing to unpack .../58-mediacenter-addon-osmc_3.0.737_all.deb ...
Unpacking mediacenter-addon-osmc (3.0.737) over (3.0.699) ...
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.updates/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.services/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.remotes/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.pi/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.networking/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.logging/resources/osmc': Directory not empty
dpkg: warning: unable to delete old directory '/usr/share/kodi/addons/script.module.osmcsetting.apfstore/resources/osmc': Directory not empty
Preparing to unpack .../59-mediacenter-skin-osmc_19.1.0-19_all.deb ...
Unpacking mediacenter-skin-osmc (19.1.0-19) over (18.5.0-4) ...
Preparing to unpack .../60-libnss3_2%3a3.42.1-1+deb10u4_armhf.deb ...
Unpacking libnss3:armhf (2:3.42.1-1+deb10u4) over (2:3.42.1-1+deb10u3) ...
Preparing to unpack .../61-rbp2-libcec-osmc_6.0.2-3_armhf.deb ...
Unpacking rbp2-libcec-osmc (6.0.2-3) over (4.0.4-5) ...
<略>
Setting up libavformat58:armhf (7:4.1.8-0+deb10u1) ...
Setting up libbind9-161:armhf (1:9.11.5.P4+dfsg-5.1+deb10u6) ...
Setting up samba-common-bin (2:4.9.5+dfsg-5+deb10u2) ...
Checking smb.conf with testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Done
Setting up vlc-plugin-base:armhf (3.0.12-0+deb10u1) ...
Setting up vlc (3.0.12-0+deb10u1) ...
Setting up bind9-host (1:9.11.5.P4+dfsg-5.1+deb10u6) ...
Setting up avahi-daemon (0.7-4+deb10u1) ...
Removing obsolete conffile /etc/network/if-up.d/avahi-daemon ...
Removing obsolete conffile /etc/resolvconf/update-libc.d/avahi-daemon ...
Setting up rbp2-mediacenter-osmc (19.3.0-7) ...
Setting up rbp2-device-osmc (1.5.7) ...
Processing triggers for dbus (1.12.20-0+deb10u1) ...
Processing triggers for mime-support (3.62) ...
Processing triggers for libc-bin (2.28-110.1) ...
Processing triggers for ntp (1:4.2.8p12+dfsg-4) ...
Processing triggers for ca-certificates (20200601~deb10u2) ...
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
Processing triggers for libvlc-bin:armhf (3.0.12-0+deb10u1) ...
osmc@osmc:/etc/apt$

そして再起動

無事に「OSMC November 2021 2021.11-2」にアップデートされました。

が・・・自作のプラグインとsteamlinkプラグインが無効化されてしまいました・・・

ラズパイ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」)

ラズパイ3のWindows 10 on ARMを使う場合の設定ポイント

ラズパイ3の上でWindows 10 on ARMを使う場合、そのままの設定で使うとなかなか使いづらいです。

U3 A2クラスの高速なmiroSDを使ってもキツイところがあるので、このページに上げた設定変更することをお勧めします。

0. とにかく高速なmicroSD

遅いと試すのにもつらくなるほどで話になりません。

うちではSunDisk Extreme ProのUHSスピードクラス3とパフォーマンスクラスA2のロゴが入っているモデルを使いました。

なお、クラスの意味は以下の様になっています。OS起動はシーケンシャルアクセスではなく、ランダムアクセスになりますので、アプリケーションパフォーマンスクラスが保証されていることが重要です。

1. UEFI設定編

ラズパイ電源オン直後に、UEFIの設定画面でいくつか設定変更を行うと良いでしょう。

1.1. クロックアップ

標準状態ではMin(600MHz動作)となっています。設定変更を行うと、Max(1200MHz or 1400MHz)動作に変えることができます。

このクロックアップより初回起動にかかる時間が約半分になりました。

ただ、デメリットが2点あります。

その1:ちゃんと冷却しないと死ぬ恐れあり

SoC(CPU)をちゃんと冷却しないとクロックアップさせても処理能力が低下します。

その2:電源供給はしっかりとする

電源が不安定だと処理能力が低下します。

このため、初期設定があまり不安ない600MHzとなっています。

設定は、「Device Manager」→ 「Rapsberry Pi Configuration」 →「Chipset Configuration」の「CPU Clock」です。

設定後、F10キーを押して保存します。

1.2. ディスプレイ解像度

標準設定の場合、HDMIで接続したディスプレイの最大解像度でデスクトップが表示されますが、ラズパイは非力なので大きな画面過ぎると描画負荷がかかります。

このため、ある程度解像度を狭めた方・・・例えば1024×768ぐらいまでで設定した方が使用しやすいです。

設定は、「Device Manager」→ 「Rapsberry Pi Configuration」 →「Display」の「UEFI video driver settings」で、「Virtual 720p」「Virtual 1080p」「Native resolution」についてる「X」マークをスペースを押して解除し、F10キーで保存します。

2. Windows設定編

初期の起動状態ではディスクI/Oがずーっと100%になっています。

U3 A2のmicroSDを使ってもそうなってしまうので、設定を変えていきます。

2.1. スタートアップ設定

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

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

2.2. 電源設定

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

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

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

コントロールパネルの「電源オプション」が開きます。

ここで「追加プランの表示」の右側にある↓をクリックすると「高パフォーマンス」という項目が現れるのでそれを選択します。

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

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

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

ラズパイ3でWindows 10 on ARMが簡単に動くという記事に騙されてはいけない

注: この記事は2019年2月に作成されたものです。

2021年12月13日現在は、Windows on Raspberry(WoR)プロジェクトの成果物を使って通常のWindows上でラズパイ用microSDを作成するか、そこから派生したWoR Flasher でLinux上でmicroSDを作成するか、という形になっています。

これらを使えば問題なく動作できるかと思います


ここから下は過去の資料になります。


MCCI Corporationというところが、ラズパイ用のUSBドライバをリリースしたことをきっかけに、ラズパイ3上でWindows 10 on ARMが動く、という話が大々的に言われるようになった。

しかし、最初はいろいろな問題があり、導入がかなり困難を極めました。

2019/02/16時点である程度手法は確立しましたので、ここからは、その手順を紹介していきます。

なお、本手順は紅樹タカオさんと共に進めていったものなので「Windows10 on ARMのインストール【成功しましたが簡単ではありません。】」と「ラズパイへWindows10 on ARMを入れるときのトラブルや対処方法」も参考になるかと思います。

準備するもの

・ラズパイ3もしくはラズパイ3B
・ラズパイを冷却するための機構(CPU冷却ファン搭載を推奨)
・高速なmicroSD(A2クラスを強く推奨)
・安定して5.04V~5.08Vが出せるACアダプタ(5.02V~5.04Vだと不足気味)
・Windows 10 on ARM用のISOファイル(「UUP(Unified Update Platform) Generation Project」を利用して作成)
WOA Deployer for Raspberry Pi

microSDは高速なものが必須です。3種類のmicroSDを使ってみたのですが、A2クラスのものを使わないとアプリを起動させるにも一苦労でした。

microSD の種類使用したものWoA Deploy にかかる時間初回起動時間ディスク I/O の様子
Class10 U190分1時間ほぼ常時100%
Class10 U3 A227分20分最初は100%だが20分ぐらいで落ち着く
Class10 U1 A134分まだまだ

電源については、ラズパイを1200MHz動作で使った場合でも1Aを超えることはありませんでした。電流より電圧の方が重要なようで、5.02Vぐらいになると右上に電力不足の雷マークが現れる感じです。

うちで試した限りでは、5.02V~5.04Vで動作するアダプタでは電力不足が表示され、5.04V~5.08Vでは特に問題なく動作していました。

作業手順

1. Windows 10 on ARMのISOを作成

UUP(Unified Update Platform) Generation Project」 から、Windows 10 on ARMのISOイメージを作成するためのCMDファイルを入手します。

その際の選択肢は以下のようになります。

Select type: Windows(Final version)
Select version: Feature update to Windows 10, version 1803 [arm64]
Select language: ja-jp:Japanese
Select edition: 適切に選ぶ
Select type download: Download ISO compiler in OneClick!(run downloaded CMD-file)

「version 1803」以外では、「Windows 10 Insider Preview 18836.1000(rs_prerelease) [arn64」でも問題なくインストールできています。

しかし「version 1809」ではブルースクリーンクラッシュ多発し、USBが認識しないなどの現象が発生します。現状はお薦めできません。

CMDファイルを入手したら、新しくディレクトリを作り、そこにCMDファイルを置き、実行します。すると、各種ファイルのダウンロードと、dismコマンドなどによるISOファイルの生成が開始されます。

ファイルのダウンロードは4GBぐらいあります。また、4GBのISOファイルも作成されますので、作業領域込みで12GB程度の空き容量があることを確認してから実行してください。

なお、アンチウイルスソフトなどによりファイル書き込みやファイルダウンロードに失敗した場合、CMDファイルが置かれたディレクトリにあるファイル・ディレクトリを削除してしまう事象が確認されています。

くれぐれもデスクトップにそのままおいて実行しないよう気をつけてください。

2. ISOファイルをマウントする

作成したISOファイルをエクスプローラーで開くと、Windows10の場合、CDドライブとして認識されます。そのドライブ内に「sources\install.wim」があることを確認します。

3. WoA Deployer for RPiを入手する

WOA Deployer for Raspberry Pi 」を入手します。「Release」にある最新のWOA.Deployer.GUI.zip をダウンロードして、ZIPファイルを展開します。

4. WoA Deployer.exe を実行してmicroSDに書き込みする

展開したファイルの中にある「WoA Deployer.exe」を実行します。

「DRIVE SELECTION」でmicroSDを指定します。
「WINDOWS IMAGE(.WIM)」でISOドライブ内の「sources\install.wim」を指定します。

「Depoly」ボタンをクリックすると、まずはUEFIファイルやドライバなどの必要なもののダウンロードが始まります。

ダウンロードが終わるとmicroSDへの書き込みが始まります。

一番最初にUSBドライバのライセンス承諾画面が表示されますので、「Accept」をクリックします。

microSDへの書き込みは、U1だと90分、U3 A2だと27分かかりました。

5. ラズパイ3にmicroSDをさして電源ON

USBキーボード、マウスをつなぎ、イーサケーブルはつながないで電源を入れます。
インターネットに接続できてしまうと変な動作になることが多いです。

最初の起動では、UEFI shellで停止してしまいます。

6. ラズパイ起動設定の変更

UEFI shellで「exit」と入力し、設定画面を表示させます。

6.1. クロックアップ設定

まず、クロックアップの設定を行います。

「Device Manager」→ 「Rapsberry Pi Configuration」→「Chipset」

「don’t overwrite」と書いてありますが、無視して変更します。

標準は「Min(600Mhz)」ですが、「Max(1200MHz)」とします。

これにより初回起動時間が約半分になります。

6.2. 起動順序設定

次に、起動順序の変更を行います。

「Boot Maintenance Manager」を選び

「Boot Options」を選び

「Change Boot Order」で起動順一覧を表示します。

標準では「UEFI shell」が上にあり、「SD/MMC on Broadcom SDHOST」が下にあります。

これを「UEFI shell」にカーソルを合わせた状態で「-」キーを押し、下側に持って行ったあと、Enterキーで確定させ、F10キーで設定保存をします。

6.3. 解像度設定

また、あまり大きすぎるディスプレイだと動きが遅くなりましたので、解像度制限を行った方がいい場合もあります。

「Device Manager」→「Rapsberry Pi Configuration」→「Display」で設定します。

下記の様なかたちで「Virtual 1024 x 768」ぐらいで設定した方が快適でした。

7. 初回起動

いろいろありつつもプロセスが進みます。

上記の画面が表示されるまで、U1の場合は約1時間かかりました。U3 A2の場合は約20分でした。クロックが標準状態のMin(600MHz)の場合はU1 microSDで約2時間した。

8. セットアップを進める

1803の場合はイーサケーブル繋がない状態で完了までさせてください。

Insider Preview 18894の場合、下記の画面になるまではイーサケーブルを繋がない方がいい感じです。それ以前につないでしまうとセットアップのアップデートをとりに行ってしまい、セットアップがループしました。

9. デスクトップが表示されるまで待つ

U1 microSDで約30分ぐらいかかりました。

10. 完了

以上でとりあえず完了です。

Firefoxをwin32版とwindows aarch64版の双方をインストールしてみたところ、youtube動画をwin32版で閲覧した場合、解像度が最低ラインの状態でなおかつしばしば停止しました。

それに対して、windows aarch64版では特に問題無く再生できました。

なお、音はHDMI経由の出力は現状出来ず、アナログ出力からとなります。

Windows aarch64版は正式配布前なので、「http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/」から英語版ダウンロードします。「firefox-~win64-aarch64.installer.exe」の一番新しいものを使用します。

http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central-l10n/」から日本語版のダウンロードでもいいのですが、ファイル数が多くてEdgeだとなかなか開かなかったので諦めました・・・2019/02/21時点だと「http://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central-l10n/firefox-67.0a1.ja.win64-aarch64.installer.exe」ですね。

また、win32アプリはそこそこに動作しました。

2001年リリースの偽春菜も動きはしました・・・絵が変わる時の動作でよく止まりましたけどね・・・


ここから下は資料ゾーンです。

以前掲載していたものを資料のために載せています。


2019/02/16 21:30追加ゾーン開始

ようやくラズパイ3上でWindows 10 on ARMのデスクトップを開くことに成功しました。

ポイントは、WoA Installer for RPiのページに書いてあった「1809をつかえ」が諸悪の原因で、「1803」だとうまくいく、というところでした。

また、使用するmicroSDは早くないとダメというところ。最低限でClass10 U1じゃないと駄目で、Class10 U3ぐらいは欲しいところです。

うちの場合Class10 U1の samsung EVOPlus Class10 UHS-I MB-MC32GA を使っていますが、これだと初回起動に2時間かかりました。

また、ネットワークケーブルを繋いでいるとアップデートをとりにいってしまってうまく動かなくなりましたので、ケーブル外した状態で最初のログインまではしてください。

下の方の記述は明日修正していきます

2019/02/16追加ゾーンend


実際のインストーラについては、「WoA Installer for Raspberry Pi 3」というツールと「UUP(Unified Update Platform) Generation Project」というWebサイトが生成するバッチファイルと「Core Packages」を使います。


まずは、 「UUP(Unified Update Platform) Generation Project」 でISOイメージを生成するバッチファイルをダウンロードします。これを実行すると、ファイルを4GBちょいダウンロードし、4GBちょいのISOイメージを作成します。作業領域等を含めると15GBぐらいの空き容量が必要です。

注意:cmdファイルは、ディレクトリを作成し、そのなかにおいてから実行しましょう。アンチウイルスソフトによる機能制限によりダウンロードが途中で失敗した場合、同じディレクトリ内のファイルを削除してしまうという事態が発生するようです。

cmdファイルを実行したらすぐにウィンドウが閉じてしまうという場合は、一度、コマンドプロンプトを開いてから、そこの中からcmdファイルを実行してみるといいかもしれません。

2019/02/15 23:22追記:日本語版でやると失敗します。英語版(en_US)でISOを作成したところ、変なクラッシュもなしに起動が進んでいるところです・・・

23:48 英語でもやっぱキーボードが動かないやん・・・なんでじゃ・・・

2019/02/16 14:45追記:1809だと英語/日本語共に失敗。Insider Preview 18836 英語で試したところマウスキーボードは動くもののHi Thereより先に進めず。で・・・1803だとうまく行きやすい、という話を聞いて再挑戦中

2019/02/16 21:34追記:1803日本語であれば正常に動作しました。ただしネットワークケーブルは外した状態でセットアップを進める必要があります。USBは繋ぎっぱなしでも大丈夫です。


次に 「WoA Installer for Raspberry Pi 3」 を使ってmicroSDにWindowsイメージを書き込みます。これが1時間ぐらいかかります。


で、microSDが出来たら、ラズパイ3に突っ込んで起動するわけなんですが、初回起動時はEFI shellで止まります。

これは、「exit」で抜けて次の画面で「Boot order」を変更し、「UEFI shell」より先に「SD/MMC on Broadcom SDHOST」 が来るようにします。そうすると次回からWindowsが起動する様になります。詳しい替え方は FAQ 参照のこと。

ここで重大な注意点があります。

現状、USB機器をつないでると、めちゃくちゃブルースクリーンになります。このため、FAQでも入力を要求されるまではUSBを外しておくことが推奨されています。

で・・・うちの場合なのですが、キーボード選択画面まではいくのですが、USB機器を認識してくれないので進まない感じですね・・・

いったいどうすればいいのか・・・

・・・なんか日本語キーボードをつなぐと動かないのでは?説が急浮上です。

microSDを作り直して、英語キーボードでやってみましたが、状況変わらず・・・なぜだ

なお、初回電源オンからキーボード選択にたどり着くまでブルースクリーンクラッシュが5回ぐらいをはさみつつ約2時間かかりました。

ラズパイ2が余ったのでWindows IoTを入れようと思うのでメモ

・現状サポートしているARM SoCのボードについて

Windows 10 IoT [Quicksarts]-[Prototype a device]-[1. Choose a board]」に一覧がある。

ラズパイ2,3はIoT Dashboardを使いmicroSDカードにOSイメージを書き込む。

ラズパイ3B+は2019/02/12時点では機能制限ありのプレビュー提供中なので注意が必要

・アプリを追加するにはVisual Studioから行う

手順は「Windows 10 IoT [Quicksarts]-[Prototype a device]-[3. Add an app]」を参照。