はじめに
↑ 以前、Raspberry Pi 5 に ARM版 Windows11 をインストールする記事を書きました。
今回は、Raspberry Pi 5 に 仮想環境を作成して、ARM版 Windows11 をインストールする方法の記事です。
前回使用したwor-flasher
の開発者が作成した、BVM
(Botspot Virtual Machine) を使用します。

作者が、↑動機を語っています。
(上記メッセージの一部をGoogle翻訳)
Raspberry Pi上のWindowsプロジェクトは終焉を迎えつつあるようです。
Wi-Fiは未だ機能せず、Pi500、CM5、Pi 16GBでは起動できず、多くの開発者が去ってしまいました。
これらの問題を解決するために、新しいプロジェクトを立ち上げました。
BVMと呼ばれるこのプロジェクトは、Pi OS上の仮想マシンでWindowsを実行します。
Wi-Fi、オーディオ再生、Worで動作するすべての機能が動作し、USBデバイスをパススルーしてWindowsから直接使用することもできます。
内容はQEMU
を使った仮想化ですが、bvmシェルファイル一つで すべての操作ができる優れものです。
今回の環境
Raspberry Pi 5 8GB
+ 512GB SSD
に、
Desktop版の Raspberry Pi OS(bookworm)をインストールした環境です。
pi5@raspberrypi5:~ $ ./rev.py
Revision: d04170
Model: 5
Revision: 1.0
Memory Size: 8GB
Processor: BCM2712
Manufacturer: Sony UK
pi5@raspberrypi5:~ $ cat /sys/firmware/devicetree/base/model
Raspberry Pi 5 Model B Rev 1.0
pi5@raspberrypi5:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
pi5@raspberrypi5:~ $ cat /etc/issue
Debian GNU/Linux 12 \n \l
pi5@raspberrypi5:~ $ cat /etc/debian_version
12.11
pi5@raspberrypi5:~ $ uname -a
Linux raspberrypi5 6.12.34+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.34-1+rpt1~bookworm (2025-06-26) aarch64 GNU/Linux
インストールした Windows11
Geekbench 6 スコア
Windows用 Geekbench 6.3.0(ARM対応済み)
( 前回の ネイティブ実行時と 同等です )
CrystalDiskMark スコア
Windows用 CrystalDiskMark 8.0.5(ARM対応版)

( 前回の USBフラッシュドライブ より 相当高速です。SSDなので当前!? )
環境構築手順
ターミナルを開いて、順にコマンドを実行していきます。
-
BVM をクローン
Step.1git clone https://github.com/Botspot/bvm.git cd bvm
-
~/win11
に新規VMを構築Step.2./bvm new-vm ~/win11
( 前提となるライブラリが種々インストールされます )
-
デフォルトでは US版Windowsがインストールされるため 日本語版に変更
設定ファイル
~/win11/bvm-config
を適当なエディタで開いて、download_language
を"English (United States)"
から"Japanese"
に変更します。Step.3vi ~/win11/bvm-config #before: download_language="English (United States)" #after: download_language="Japanese"
( 仮想メモリやディスクの容量も変更できます )
-
ISOファイルをダウンロード
Step.4./bvm download ~/win11
-
インストール準備
Step.5./bvm prepare ~/win11
-
Windows11をインストール
Step.6./bvm firstboot ~/win11
( 1時間強要した )
-
Windows11を起動(ウィンドウ出力無し)
Step.7./bvm boot-nodisplay ~/win11
-
Windows11へRDP接続
別ターミナルを開いて実行します。
Step.8 別ターミナルで実行./bvm connect ~/win11
( ウィンドウのリサイズが可能 )
-
Windows11をシャットダウンすると、VMが停止する
-
再起動する場合は、次のコマンドを実行
Step.7 & 8#Step.7 & 8 ./bvm boot-nodisplay ~/win11 & ./bvm connect ~/win11
-
Windows Update実施後の「再起動」は、裏で Windowsの更新処理が走るので、再起動するまでに相応の時間を要します。その間に、RDPしようとしても「接続できません」。
そのまま待っていると、自動で再起動後にRDPが再接続されます。
BVMバナー(?)
後述のコードブロックでは、BVM
のバナーが 正しく表示できません。
(Raspberry Pi OS と フォントグリフ の違いが要因と思われる)
↓ マウスで選択状態にすると、ベリー
+窓
=ハート
のバナーが現れます。

粋な計らいです!
実行ログ
#Step.1
pi5@raspberrypi5:~ $ git clone https://github.com/Botspot/bvm
Cloning into 'bvm'...
remote: Enumerating objects: 379, done.
remote: Counting objects: 100% (109/109), done.
remote: Compressing objects: 100% (68/68), done.
remote: Total 379 (delta 81), reused 59 (delta 41), pack-reused 270 (from 2)
Receiving objects: 100% (379/379), 5.87 MiB | 16.07 MiB/s, done.
Resolving deltas: 100% (184/184), done.
pi5@raspberrypi5:~ $ cd bvm
#Step.2
pi5@raspberrypi5:~/bvm $ ./bvm new-vm ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"Because there is no true difference between unsupported and fun challenge."
BVM mode new-vm
You should now be ready for the next step: ./bvm download /home/pi5/win11
#Step.3
pi5@raspberrypi5:~/bvm $ vi ~/win11/bvm-config
#Step.4
pi5@raspberrypi5:~/bvm $ ./bvm download ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"Perfect for proving that just because you can is a good enough reason!"
BVM mode download
Downloading Windows 11 ARM64 (Japanese)
- Parsing download page: https://www.microsoft.com/en-us/software-download/windows11arm64
- Getting Product edition ID: 3131
- Permit Session ID: 827ad83d-f287-4205-abe3-546efc01c961
- Getting language SKU ID: 18635
- Getting ISO download link...
- URL: https://software.download.prss.microsoft.com/dbazure/Win11_24H2_Japanese_Arm64.iso
/home/pi5/win11/ins 100%[===================>] 5.21G 106MB/s 51s
2025-07-14 15:09:47 URL:https://software.download.prss.microsoft.com/dbazure/Win11_24H2_Japanese_Arm64.iso?t=c88208a3-aded-4f70-88fb-841853206b9a&P1=1752559737&P2=601&P3=2&P4=IdCe%2bBDkQDSKCowEG%2byU5gJ7LGpCBfe4kskHFJt0WP7NqwiZ4IQZawhlwHx2Csb%2f6ViEv7NfwNc6mTOphsmd7EKNOur82M8rsjFRVmcR4x7FXwsm%2bsGz7rQhORF3T320PhbyK1zxTBH97GNs5KoEE9ncJZp3bbfzYEo6Wi9E0oWBmF5SUcBPlMZdXRlIG0C6Mjk0uHJnspe%2fxCj%2b%2f87NZNMFAOOmHA4Lr1lOJuKNO7JbkuXMtPaNp4iqrth8Irxvmr6cGf03KX%2bj%2bF%2bDBV%2bpaQqtNvlqFfMn9jwcMmgfJSzIJ6%2f6OfEF2VND5ikzqi4DY3Mo8Vr3kG2a498yqPa05Q%3d%3d [5598443520/5598443520] -> "/home/pi5/win11/installer.iso" [1]
- Verifying download... Done
- Verification successful.
Modifying Windows ISO to boot to installer without keypress:
- Searching for efisys_noprompt.bin to extract...
- negative match at byte 5557889024
- positive match at byte 5560586240
- Extracting it...
- Checksums match! Now searching ISO for sections to replace...
- positive match at byte 1126400, replacing the next 1720320 bytes...
- negative match at byte 5556920320, continuing to search...
- positive match at byte 5558865920, replacing the next 1720320 bytes...
Done
Downloading virtio drivers
/home/pi5/win11/vir 100%[===================>] 692.85M 8.35MB/s 88s
2025-07-14 15:11:51 URL:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.271-1/virtio-win-0.1.271.iso [726501376/726501376] -> "/home/pi5/win11/virtio-win.iso" [1]
Downloading Windows debloating script
Cloning into 'Win11Debloat'...
remote: Enumerating objects: 1218, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 1218 (delta 37), reused 28 (delta 25), pack-reused 1170 (from 2)
Receiving objects: 100% (1218/1218), 394.71 KiB | 17.16 MiB/s, done.
Resolving deltas: 100% (883/883), done.
Extracting VirtIO drivers...
- Balloon
- NetKVM
- pvpanic
- viogpudo
- vioinput
- viomem
- viorng
- vioscsi
- vioserial
- viostor
You should now be ready for the next step: ./bvm prepare /home/pi5/win11
#Step.5
pi5@raspberrypi5:~/bvm $ ./bvm prepare ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"Finally, a Windows 11 VM without any dark magic or human sacrifice required."
BVM mode prepare
Making unattended.iso... Warning: creating filesystem that does not conform to ISO-9660.
Done
Setting up main hard drive disk.qcow2
Allocating 40GB for main install drive... Done
You should now be ready for the next step: ./bvm firstboot /home/pi5/win11
#Step.6
pi5@raspberrypi5:~/bvm $ ./bvm firstboot ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"Like my logo? Build your own logo with: https://github.com/Botspot/unicode-art"
BVM mode firstboot
Windows should install 100% automatically. This will take several hours.
QEMU closed.
Successuflly removed Microsoft Defender from disk.qcow2
You should now be ready for the next step: ./bvm boot /home/pi5/win11
#Step.7
pi5@raspberrypi5:~/bvm $ ./bvm boot-nodisplay ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"This is definitely what the Linux developers intended."
BVM mode boot-nodisplay
#Step.8 (別ターミナル)
pi5@raspberrypi5:~/bvm $ ./bvm connect ~/win11
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"PROTIP: Try selecting the lines of text above for an easter egg! :)"
BVM mode connect
Waiting for RDP service on VM to start listening on port 3389... Done
** Message: 22:25:50.219: Remmina does not log all output statements. Turn on more verbose output by using "G_MESSAGES_DEBUG=all" as an environment variable.
More info available on the Remmina wiki at:
https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging
Load modules from /usr/lib/aarch64-linux-gnu/remmina/plugins
Remmina plugin glibsecret (type=Secret) has been registered, but is not yet initialized/activated. The initialization order is 2000.
The glibsecret secret plugin has been initialized and it will be your default secret plugin
** Message: 22:25:50.657: Remmina does not log all output statements. Turn on more verbose output by using "G_MESSAGES_DEBUG=all" as an environment variable.
More info available on the Remmina wiki at:
https://gitlab.com/Remmina/Remmina/-/wikis/Usage/Remmina-debugging
Load modules from /usr/lib/aarch64-linux-gnu/remmina/plugins
Remmina plugin glibsecret (type=Secret) has been registered, but is not yet initialized/activated. The initialization order is 2000.
The glibsecret secret plugin has been initialized and it will be your default secret plugin
Warning: Remmina is running with a secrecy plugin, but it cannot connect to a secrecy service.
[22:25:54:649] [70649:70690] [INFO][com.freerdp.gdi] - Local framebuffer format PIXEL_FORMAT_BGRA32
[22:25:54:649] [70649:70690] [INFO][com.freerdp.gdi] - Remote framebuffer format PIXEL_FORMAT_BGRA32
[22:25:54:651] [70649:70757] [INFO][com.freerdp.channels.rdpdr.client] - Loading device service drive [_home_pi5] (static)
[22:25:54:676] [70649:70690] [INFO][com.freerdp.channels.rdpsnd.client] - [static] Loaded pulse backend for rdpsnd
[22:25:54:677] [70649:70690] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel disp
[22:25:54:680] [70649:70690] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel rdpgfx
[22:25:54:686] [70649:70690] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel rdpsnd
[22:25:54:686] [70649:70690] [INFO][com.freerdp.channels.drdynvc.client] - Loading Dynamic Virtual Channel audin
[22:25:54:698] [70649:70690] [INFO][com.freerdp.channels.audin.client] - Loaded pulse backend for audin
[22:25:54:258] [70649:70763] [INFO][com.freerdp.channels.rdpsnd.client] - [dynamic] Loaded pulse backend for rdpsnd
[22:25:55:426] [70649:70757] [INFO][com.freerdp.channels.rdpdr.client] - registered device #1: _home_pi5 (type=8 id=1)
[22:25:56:858] [70649:70690] [WARN][com.freerdp.core.rdp] - pduType PDU_TYPE_DATA not properly parsed, 562 bytes remaining unhandled. Skipping.
pi5@raspberrypi5:~/bvm $ ./bvm Help
█████🭏 🭖█🭀 🭋█🭡 ██◣ ◢██
█▊ 🭨█ 🭦█🭐 🭅█🭛 ███◣ ◢███
█████🭪 🭖█🭀🭋█🭡 █▉◥█🭩█◤🮋█
█▊ 🭨█ 🭦█🭐🭅█🭛 █▉ ◥█◤ 🮋█
█████🭠 🭖██🭡 █▉ 🮋█
BOTSPOT VIRTUAL MACHINE
"Introducing: a really good way to use up storage space!"
BVM mode help
BVM HELP: --------------------------------------------------------------------
All primary modes: new-vm, download, prepare, firstboot, boot, connect, mount, expand
You generally want to run the modes in that order.
Additional modes: help, list-languages, boot-nodisplay, boot-ramfb, boot-gtk, connect-freerdp, connect-remmina
To get a fresh VM up and running, use a sequence like this:
./bvm new-vm ~/win11
This makes a config file: ~/win11/bvm-config <--- Please read it!
./bvm download ~/win11
This downloads Windows and necessary drivers.
./bvm prepare ~/win11
This bundles everything up to get ready for first boot.
./bvm firstboot ~/win11
If the Windows install is interrupted, just run this step again.
Be aware: when Windows finishes installing, the VM will shutdown.
All .iso files and the unattended folder could be removed once this step is done.
./bvm boot ~/win11
Main command to use the VM.
This works, but is a little laggy and lacks crucial features.
It is recommended to boot the VM headless and then connect to it via RDP:
./bvm boot-nodisplay ~/win11
Then in a second shell, connect to the RDP service:
./bvm connect ~/win11
The connect mode has better audio, clipboard sync, file sharing, dynamic screen resizing, and a higher frame rate.
Default connect mode uses the FreeRDP client, which is faster, but sometimes freezes on login. If this happens try the connect-remmina mode.
Mount the Windows main hard drive with:
./bvm mount ~/win11
Be aware: the VM needs to be shut down properly to mount in read/write mode.
Expand the main Windows hard drive with:
./bvm expand ~/win11
Windows11 インストール時のスクショ
( 撮り忘れあり、すべてではない )
言語とキーボード種別を選ぶだけ、全自動。時間を要すため放っておく。













インストールが終了すると、シャットダウンします。
再起動する場合は、Step.7 & 8
のコマンドを再実行します。
その他
- Edgeを起動、Youtubeサイトを表示し、Pi5にHDMI接続したディスプレイのスピーカーからオーディオが出力されることを確認しました
- Windows上でBluetoothキーボードの接続を試みましたが、できませんでした
以上