Windows 11 on ARMをRK3588SのOrange Pi 5で動かす

しばらく前から、Rockchip RK3588を積んだRock 5B上でWindows 11 on ARMを動かす、というものが公開されていた。

元々は2022年11月にRock 5の販売元であるradxaのフォーラムの「Windows / UEFI on Rock 5 (Mega thread)」(https://github.com/edk2-porting/edk2-rk35xx)で公開されていたものが、2023年3月にtwitterでMario BălănicăさんがROCK 5B向けで動かしているツイートをしてから開発が加速(https://github.com/mariobalanica/edk2-rk35xx)

そこにOrange Pi公式が乗っかったことでOrange Pi 5向け対応も行われるようになった形です。

しばらくは具体的な導入手法はなく、UEFIのみ提供されている状態でしたが、3月下旬にWoRプロジェクトのWebに「Preliminary installation guide for RK3588 boards」と手順が公開され試しやすくなりました。

2023/04/12現在でのOrange Pi 5での制限事項

全体的なもの

・M.2コネクタ利用不可
・HDMI出力のみ対応(Type-C出力は使用できない)
・オンボードNICが使えない

USBコネクタに関する制限事項

・USB 3.0(青コネクタ)の上側のポートはUSBストレージ用に使う
・USB 3.0(青コネクタ)の下側のポートはキーボードなどで使えると書いてあるのだがうまく動かず
・USB 2.0(縦配置のやつ)にUSBハブをつなげてキーボード/マウス/USB NICをつなげると良い
・Type-CコネクタもUSB 2.0扱いで使えるらしいのだがうまく動かず

Windowsのインストール先について

・microSDから起動することもできるっぽいのだが成功せず
・USB 3.0(青コネクタ)の上側ポートにつけたUSBストレージからの起動には成功
・速いストレージを使わないと起動がすごく遅い

セットアップ手法について

WoRの「Preliminary installation guide for RK3588 boards」のWindows手順ではメディア作成関連がいまいち分かりづらかったので、Ubuntu 20.04環境で設定を行った

用意するもの
・USB接続で速いディスク
・UbuntuマシンとOrange Pi 5を繋ぐUSB-A/Cケーブル(SPI書き込みの際に使用)
・USB NIC(Windows11標準で認識するもの)
・USB ハブ(キーボード/マウス/NICをつなぐにはポートが足らないので)

手順概要

1) Ubuntuに前提条件パッケージをインストール

以下のworkliが要求しているパッケージをインストール

# apt install gawk xmlstarlet jq wget wimtools ntfs-3g curl cabextract chntpw genisoimage zenity 

rkdeveloptoolが要求するパッケージをインストール

# apt install libudev-dev libusb-1.0-0-dev dh-autoreconf

2) rkdeveloptool をコンパイルしてインストール

基本としてはrockchip wikiのRkdeveloptool に記載のやりかたで https://github.com/rockchip-linux/rkdeveloptool のレポジトリをcloneしてコンパイルするんだけど、実はwikiは記載が足らないので、githubの方に記載のコマンドでコンパイルして、 /usr/local 以下のインストールする。

$ git clone https://github.com/rockchip-linux/rkdeveloptool.git
$ cd rkdeveloptool
$ aclocal
$ autoreconf -i
$ autoheader
$ automake --add-missing
$ ./configure
$ make
$ make install

3) workli.sh を入手

githubの https://github.com/buddyjojo/worklireleases から workli.sh をダウンロード

ver 1.0時点では、GUIダイアログで選択させる系のつくりになっているためX-Window環境が必要

4) workli.shを実行してSPI/SD選択まで進める

まず、日本語でメッセージが出力されていると、デバイスが識別できなかったので英語で動作させる

$ export LANG=C
$ sudo bash workli.sh

また、sudoを実行する必要があるので、環境によっては下記の様な実行が必要となる

$ export LANG=C
$ xhost +
$ sudo  XAUTHORITY=~/.Xauthority  bash workli.sh

ブートローダ/UEFIをSPIかSDのどちらかにするところまできたら、SPIを選択

5) Orange Pi 5をUbuntuマシンにつなげる

Orange Pi 5に電源ケーブルを繋がない状態で、HDMIコネクタの右側のType-CをUbuntuマシンにつなげ

Orange Pi 5の基盤上にあるMaskromボタンを押しながら、HDMI左側の電源用Type-Cコネクタに電源をつなげる

そうすることで、Ubuntuマシン上にOrange Pi 5がデバイスとして認識される

6) workli.shのプロセスを進める

windowsイメージのダウンロードも自働で行ってくれる

7) USBストレージをUbuntuマシンにつなげる

UbuntuマシンにつなげていたOrange Pi 5を外して、代わりにWindowsをインストールするUSBストレージをつなげる

8) workli.sh でUSBストレージにWindowsをインストールする

9) 書き込んだUSBストレージをOrange Pi 5につなげてOrange Pi 5を起動

まずは下記のようなOrange PiのロゴのUEFIが表示される

しばらくすると下記のようなコマンドプロンプトが表示されて再起動

Orange Piのロゴが表示されたあと、下記の様なブルースクリーンが表示され、再起動する・・・というのを2回くらうと、先に進むのでしばらく放置する

しばらく待つと下記の様な「準備しています」表示になる。

そのうち下記の様なWindows 11の初期セットアップ画面が表示される

Windows 11の場合、Proであってもインターネット接続が必須とされているのを回避するため、Shiftキー+F10キーでコマンドプロンプトを開いて「oobe\bypassnro」を実行する。

実行すると再起動がかかるので、しばらく待ってWindows 11の初期セットアップを進める

Windows 11が起動する

2023/04/12時点ではデバイスマネージャの認識は以下の様な形となっていた

Windows のarm64ビットとして動作していることが確認できる。

また、ラズパイ4の時と同様に古い32ビットWindowsアプリも動作することが確認出来る。

ONTAPをActive Directoryに参加させようとしたら時刻が狂ってて参加失敗した

ONTAPをActive Directoryに参加させようとしたら「Reason: SecD Error: no server available.」でエラーになった。

ontap91::> vserver cifs create -cifs-server newsvm0 -domain adosakana.local -ou CN=Computers

In order to create an Active Directory machine account for the CIFS server, you
must supply the name and password of a Windows account with sufficient
privileges to add computers to the "CN=Computers" container within the
"ADOSAKANA.LOCAL" domain.

Enter the user name: administrator

Enter the password:

Error: Machine account creation procedure failed
  [    91] Loaded the preliminary configuration.
  [   213] Created a machine account in the domain
  [   214] Successfully connected to ip 172.17.44.49, port 445 using
           TCP
  [   249] Encountered NT error (NT_STATUS_MORE_PROCESSING_REQUIRED)
           for SMB command SessionSetup
  [   250] Cluster and Domain Controller times differ by more than
           the configured clock skew (KRB5KRB_AP_ERR_SKEW)
  [   250] Kerberos authentication failed with result: 7537.
  [   258] Encountered NT error (NT_STATUS_MORE_PROCESSING_REQUIRED)
           for SMB command SessionSetup
  [   259] Cluster and Domain Controller times differ by more than
           the configured clock skew (KRB5KRB_AP_ERR_SKEW)
  [   259] Kerberos authentication failed with result: 7537.
  [   259] Unable to connect to LSA service on
           adserver.adosakana.local (Error:
           RESULT_ERROR_KERBEROS_SKEW)
  [   260] No servers available for MS_LSA, vserver: 2, domain:
           adosakana.local.
**[   260] FAILURE: Unable to make a connection (LSA:ADOSAKANA.LOCAL),
**         result: 6940
  [   260] Could not find Windows SID
           'S-1-5-21-937304154-1581684492-536532533-512'
  [   284] Deleted existing account
           'CN=NEWSVM0,CN=Computers,DC=adosakana,DC=local'

Error: command failed: Failed to create the Active Directory machine account
       "NEWSVM0". Reason: SecD Error: no server available.

ontap91::>

古いONTAPがActive Directoryに参加できない」や「ONTAP 9.5でsambaドメインに参加できない & ONTAP 9.7で失敗」の話かな?と思って対処してみるも変わらない

もしかして、と時刻を確認してみると、Active DirstoryサーバとONTAPとの時刻差が3分以上あった。

時計を合わせるとActive Directoryへの参加が成功した。

ONTAPのCIFSファイルサーバで複数のホスト名でアクセスできるようにしたい

ONTAPでCIFSファイルサーバを作る時、本来のホスト名とは違うホスト名でもアクセスできるようにしておきたい、ということがある。

(サーバ統合で2台が1台になるけど、どちらでも使える様にした、など)

NetAppの標準設定では、SVMをActive Directoryに参加させる際に指定したNetBIOS名とIPアドレスでのアクセス以外は受け付けないようになっている。

例えば、下記の様に「システムエラー 59」「予期しないネットワーク エラーが発生しました。」といったエラーが出力される。

C:\Users\Administrator>net use \\winserver\testvol
\\winserver\testvol のパスワードが無効です。

'winserver' のユーザー名を入力してください: ADOSAKANA\testuser1
winserver のパスワードを入力してください:
システム エラー 59 が発生しました。

予期しないネットワーク エラーが発生しました。


C:\Users\Administrator>

SVMの設定を確認すると下記の様になっている。

netapp9101::> vserver cifs show -ins
                                          Vserver: svm0
                         CIFS Server NetBIOS Name: SVM0
                    NetBIOS Domain/Workgroup Name: ADOSAKANA
                      Fully Qualified Domain Name: ADOSAKANA.LOCAL
                              Organizational Unit: CN=Computers
Default Site Used by LIFs Without Site Membership:
                                   Workgroup Name: -
                             Authentication Style: domain
                CIFS Server Administrative Status: up
                          CIFS Server Description:
                          List of NetBIOS Aliases: -
 netapp9101::>

上記の場合、「svm0」とIPアドレス指定でのアクセス以外は受け付けない。

他のホスト名でもアクセスできるようにするにはNetBIOS Aliasを追加する必要がある。

(なお、別途、標準では無効となっているNetBIOSを有効にする必要がある。ただし、これを有効にした場合、NetApp SVM名と同じNetBIOS名の告知も始めてしまうので注意)

netapp9101::> vserver cifs add-netbios-aliases -netbios-aliases WINSERVER -vserver svm0
netapp9101::> vserver cifs show -ins
                                          Vserver: svm0
                         CIFS Server NetBIOS Name: SVM0
                    NetBIOS Domain/Workgroup Name: ADOSAKANA
                      Fully Qualified Domain Name: ADOSAKANA.LOCAL
                              Organizational Unit: CN=Computers
Default Site Used by LIFs Without Site Membership:
                                   Workgroup Name: -
                             Authentication Style: domain
                CIFS Server Administrative Status: up
                          CIFS Server Description:
                          List of NetBIOS Aliases: WINSERVER
 netapp9101::>

さて、これでアクセスできるようになったかな?と試してみるが、同じエラーが継続

C:\Users\Administrator>net use \\winserver\testvol
\\winserver\testvol のパスワードが無効です。

'winserver' のユーザー名を入力してください: ADOSAKANA\testuser1
winserver のパスワードを入力してください:
システム エラー 59 が発生しました。

予期しないネットワーク エラーが発生しました。


C:\Users\Administrator>

NetApp KB:Access by NETBIOS Alias fails に該当する問題だった。

今回のADOSAKANAドメインには、既に「WINSERVER」としてコンピュータアカウントがあった。

これが残っていると問題が発生するらしい。

まず、Windows上からコンピュータアカウントWINSERVERに関する情報をsetspn -lコマンドで確認すると下記の様な内容で登録されていた。

C:\Users\Administrator>setspn -l winserver
次の項目に登録されている CN=WINSERVER,CN=Computers,DC=ADOSAKANA,DC=LOCAL:
        HOST/winserver.adosakana.local
        RestrictedKrbHost/winserver.adosakana.local
        HOST/WINSERVER
        RestrictedKrbHost/WINSERVER
        WSMAN/winserver.adosakana.local
        WSMAN/WINSERVER
        TERMSRV/winserver.adosakana.local
        TERMSRV/WINSERVER

C:\Users\Administrator>

次に、NetApp SVMとして登録されているsvm0について確認してみると、だいぶ少ない内容で登録されていた。

C:\Users\Administrator>setspn -l svm0
次の項目に登録されている CN=SVM0,CN=Computers,DC=ADOSAKANA,DC=LOCAL:
        HOST/SVM0
        HOST/svm0.adosakana.local

C:\Users\Administrator>

まず、WindowsのActive Directgory側でコンピュータアカウント「WINSERVER」を削除。

続いてNetApp KBにあるようにsetspn -aコマンドでWINSERVERをsvm0に追加する形で登録

C:\Users\Administrator>setspn -a HOST/WINSERVER svm0
ドメイン DC=ADOSAKANA,DC=local を確認しています

CN=SVM0,CN=Computers,DC=ADOSAKANA,DC=LOCAL の ServicePrincipalNames を登録しています
        HOST/WINSERVER
更新されたオブジェクト

C:\Users\Administrator>

どのような登録になったのかを確認してみると、svm0の出力にwinserverが追加されており、winserverというエントリは無くなったことが分かる。

C:\Users\Administrator>setspn -l svm0
次の項目に登録されている CN=SVM0,CN=Computers,DC=adosakana,DC=local:
        HOST/SVM0
        HOST/svm0.adosakana.local
        HOST/WINSERVER

C:\Users\Administrator>setspn -l winserver
FindDomainForAccount: DsGetDcNameWithAccountW への呼び出しが失敗し、戻り値 0x00000525 が返されました
アカウント winserver は見つかりませんでした

C:\Users\Administrator>

この状態で先ほどエラーになったnet useコマンドを実行すると、正常に実行ができる。

C:\Users\Administrator>net use \\winserver\testvol
\\winserver\testvol のパスワードが無効です。

'winserver' のユーザー名を入力してください: adosakana\testuser1
winserver のパスワードを入力してください:
コマンドは正常に終了しました。


C:\Users\Administrator>

富士通LIFEBOOK S937/RとFUTRO MU937は16GB SO-DIMMが増設できてメモリ20GB構成になる

AmazonタイムセールでSO-DIMM DDR4 2666MHz PC4-21300 16GBx2枚組で9,980円というものがあった

そして、上記商品は「返品可能」商品となっていた。

ということは、メーカからは8GB SO-DIMM増設オプションが最大となっているLIFEBOOK S937/RFUTRO MU937が実は16GB SO-DIMMが使えたりしないか検証できるな、ということで買ってみた。

まずは開けやすいLIFEBOOK S937/Rから

続いてFUTRO MU937

どちらも標準の4GB+16GB=20GBとして認識しました。

Windows 10をインストールしてるFUTRO MU937でのタスクマネージャー表示を確認

まず標準状態はコレ

16GB SO-DIMMを増設した後の表示はコレ

オンボードメモリが2133MHzなのでそこに揃う感じですね。

フォームファクターがオンボードだけだと「Row of chips」という表記だったのが「SODIMM」に代わってますね。


2023/02/22追記

メモリがシングルチャネルなのかデュアルチャネルなのか?というのをcpu-zを起動して確認してみた

MU937での結果

U938/Sでの結果

Windows ServerからNetAppに対してsshでコマンドを実行させる

Windows Server 2019からNetAppに対してsshを実行するにはTeraTermやputtyをインストールしないとダメなのかなぁ、と思いつつ、PowerShellで「ssh」と実行してみると、OpenSSH 7.7p1がインストールされていた。

PS C:\Users\Administrator> ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]
PS C:\Users\Administrator> ssh -V
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
PS C:\Users\Administrator>

じゃあ、Windows ServerからNetAppに対してタスクスケジューラから何らかの処理を実行させることが可能なのか、ということで手法検討

Windowsサーバ上で鍵作成

まずは、ONTAPに公開鍵認証でログインするための設定を実施

「ssh-keygen」コマンドを実行して、鍵を作成

PS C:\Users\Administrator> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa):
Created directory 'C:\Users\Administrator/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\Administrator/.ssh/id_rsa.
Your public key has been saved in C:\Users\Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Eomw4OJ5tGv2Nx0HkGCeaRT5PxBU3krAixd96aCIkJU administrator@WindowsServer
The key's randomart image is:
+---[RSA 2048]----+
|. +..=*o+.  .    |
|.+ E+ooBoo.o     |
|..o.o=* *o+.     |
|o o.oo B....     |
| o o  o S..      |
|  . .  . + .     |
|   +    . +      |
|  o .  o .       |
|     .. .        |
+----[SHA256]-----+
PS C:\Users\Administrator>

実行したユーザのホームディレクトリに.sshディレクトリが作成され、id_rsaとid_rsa.pubが作成された。

このうち使うのはid_rsa.pub の中身

「notepad .ssh\id_rsa.pub」などを実行して内容を確認する。

NetApp上に公開鍵でログインできるユーザを設定

次にNetAppにログインして、現在のユーザ一覧を確認する。

「security login show -vserver クラスタ名」を実行する。

netapp::> security login show -vserver netapp

Vserver: netapp
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
admin          console     password      admin            no     none
admin          http        password      admin            no     none
admin          ontapi      password      admin            no     none
admin          service-processor
                           password      admin            no     none
admin          ssh         password      admin            no     none
autosupport    console     password      autosupport      no     none
6 entries were displayed.

netapp::>

現状は公開鍵認証(publickey)でログインできるユーザが設定されていません。

現状あるadminユーザに対して、公開鍵認証でもログインできるように設定するには「security login create -user admin -application ssh -authentication-method publickey -role admin」と実行します

netapp::> security login create -user admin -application ssh -authentication-method publickey -role admin
Warning: To use public-key authentication, you must create a public key for user "admin".

netapp::>

上記で警告が出ていますが、これは現状該当するユーザ用の公開鍵が登録されていないためのものです。

再度「security login show -vserver クラスタ名」を実行すると、publickeyの登録が増えていることが確認出来ます。

netapp::> security login show -vserver netapp

Vserver: netapp
                                                                 Second
User/Group                 Authentication                 Acct   Authentication
Name           Application Method        Role Name        Locked Method
-------------- ----------- ------------- ---------------- ------ --------------
admin          console     password      admin            no     none
admin          http        password      admin            no     none
admin          ontapi      password      admin            no     none
admin          service-processor
                           password      admin            no     none
admin          ssh         password      admin            no     none
admin          ssh         publickey     admin            -      none
autosupport    console     password      autosupport      no     none
7 entries were displayed.

netapp::>

次に公開鍵を登録するので、まずは現在の公開鍵登録状況を「security login publickey show」を実行して確認します。

netapp::> security login publickey show
This table is currently empty.

netapp::>

上記の場合はまだ何も登録されていません。

ここで先ほど作成したid_rsa.pubの中身を登録します。

「security login publickey create -username admin -index 0 -publickey “<id_rsa.pubの中身>”」

netapp::> security login publickey create -username admin -index 0 -publickey "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYShjYkl1hs/JlSSayuyAeL/5zlmGCQ15Z0c1BiJ8Hi3/fjEM0IjuJme19J1xM5M9UpdvdI2SA/Vtanidfwx231d2pXsveniT4H3OJApgKRTE7xtsjAtg1El2rNbm0C7qgMw4p0tsjp2ZSAY2QkQBoUzgBfTfOYWWR6V+D3PyU9N9AF9VIqB6d+yEDxg9GOe76ILzKB9Wo3F8t0p+OtGU9C1gAAPndvoV+7yepoS2DSu8ft8mRGL6aTFQDMbhqEYPKZx2Gx2XqfnZA1bFggntsWWtg3TGLmCOww8RLd0CIhMfl8aJJuTmjjDJh3tN9BZx9kNjj6yF8Irxjntih9ejH administrator@WindowsServer"

netapp::> security login publickey show

Vserver: netapp
UserName: admin            Index: 0
Public Key:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCYShjYkl1hs/JlSSayuyAeL/5zlmGCQ15Z0c1BiJ8Hi3/fjEM0IjuJme19J1xM5M9UpdvdI2SA/Vtanidfwx231d2pXsveniT4H3OJApgKRTE7xtsjAtg1El2rNbm0C7qgMw4p0tsjp2ZSAY2QkQBoUzgBfTfOYWWR6V+D3PyU9N9AF9VIqB6d+yEDxg9GOe76ILzKB9Wo3F8t0p+OtGU9C1gAAPndvoV+7yepoS2DSu8ft8mRGL6aTFQDMbhqEYPKZx2Gx2XqfnZA1bFggntsWWtg3TGLmCOww8RLd0CIhMfl8aJJuTmjjDJh3tN9BZx9kNjj6yF8Irxjntih9ejH administrator@WindowsServer
Fingerprint:
SHA256:Eomw4OJ5tGv2Nx0HkGCeaRT5PxBU3krAixd96aCIkJU
Bubblebabble fingerprint:
xobov-gyvaf-hokad-pukun-leper-henuc-tihyn-haban-pybom-defel-cyxyx
Comment:
-

netapp::>

登録されました

Windowsサーバからのsshアクセス試験

ではWindows Sevrer上から「ssh admin@IPアドレス “NetAppのコマンド”」を実行してみます。

PS C:\Users\Administrator> ssh admin@172.17.44.55 "system node show"
The authenticity of host '172.17.44.55 (172.17.44.55)' can't be established.
ECDSA key fingerprint is SHA256:Hx4oFf3c4GUnc/HxpK4X1U6Um7M2a+hG4JdUAtFi4Hc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.44.55' (ECDSA) to the list of known hosts.

Last login time: 12/13/2022 18:31:20
Node      Health Eligibility Uptime        Model       Owner    Location
--------- ------ ----------- ------------- ----------- -------- ---------------
netapp-01 true true       1 days 07:30 SIMBOX

PS C:\Users\Administrator> ssh admin@172.17.44.55 "system node show"

Last login time: 12/13/2022 18:55:35
Node      Health Eligibility Uptime        Model       Owner    Location
--------- ------ ----------- ------------- ----------- -------- ---------------
netapp-01 true true       1 days 07:30 SIMBOX

PS C:\Users\Administrator>

初回ログイン時は、sshキーの登録について確認されますが、それ以降はコマンドがすぐに実行できました。

バッチファイル&タスクスケジューラ実行試験

タスクスケジューラからコマンドが実行できるかを確認してみます。

まずはNetApp内の時刻を確認し、それを保存するバッチファイルを作成します。

@echo off 
ssh admin@172.17.44.55 "date" >> c:\tmp\command.txt

これをタスクスケジューラに登録してログアウト。

指定時間経過後にファイルを確認してみます。

PS C:\Users\Administrator> type C:\tmp\command.txt

Last login time: 12/13/2022 19:00:13

Node      Date                     Time zone
--------- ------------------------ -------------------------
netapp-01
          Tue Dec 13 19:05:11 2022 Japan

PS C:\Users\Administrator> 

きちんと実行されて、ファイルが作成されていました。