3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi 5 に ARM版 Windows11 をインストールしてみた(BVM編)

Last updated at Posted at 2025-07-21

はじめに

↑ 以前、Raspberry Pi 5 に ARM版 Windows11 をインストールする記事を書きました。

今回は、Raspberry Pi 5 に 仮想環境を作成して、ARM版 Windows11 をインストールする方法の記事です。

前回使用したwor-flasherの開発者が作成した、BVM(Botspot Virtual Machine) を使用します。

hold_up.png

作者が、↑動機を語っています。

(上記メッセージの一部をGoogle翻訳)
Raspberry Pi上のWindowsプロジェクトは終焉を迎えつつあるようです。
Wi-Fiは未だ機能せず、Pi500、CM5、Pi 16GBでは起動できず、多くの開発者が去ってしまいました。

これらの問題を解決するために、新しいプロジェクトを立ち上げました。
BVMと呼ばれるこのプロジェクトは、Pi OS上の仮想マシンでWindowsを実行します。
Wi-Fi、オーディオ再生、Worで動作するすべての機能が動作し、USBデバイスをパススルーしてWindowsから直接使用することもできます。

内容はQEMUを使った仮想化ですが、bvmシェルファイル一つで すべての操作ができる優れものです。

今回の環境

Raspberry Pi 5 8GB512GB 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

  • 24H2(26100.1742)がインストールされた(最新ではない)
    winver.png
    後のWindows Update によって、最新(26100.4652)となる

  • CPU-Z 情報

    cpu-z-1.png cpu-z-2.png cpu-z-3.png


  • 6GBのメモリを割り当て、アイドル状態で使用量は 2.9GB

    rmon.png

  • 40GBを割り当て、空きは 5.5GB

    drive-c.png

Geekbench 6 スコア

Windows用 Geekbench 6.3.0(ARM対応済み)

  • ハードウェア情報

    geek6-info.png
  • 結果

    geek6-res.png

前回の ネイティブ実行時と 同等です

  • オーバークロック後
    標準2.4GHzを3.0GHzにオーバークロック後は、1.2倍ほど性能がアップしました。

    geek6-up.png

CrystalDiskMark スコア

Windows用 CrystalDiskMark 8.0.5(ARM対応版)

crystal.png

前回の USBフラッシュドライブ より 相当高速です。SSDなので当前!?

環境構築手順

ターミナルを開いて、順にコマンドを実行していきます。

  • BVM をクローン

    Step.1
     git 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.3
     vi ~/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が再接続されます。

    waiting2.png
    粋な配慮です!

BVMバナー(?)

後述のコードブロックでは、BVMのバナーが 正しく表示できません。
(Raspberry Pi OS と フォントグリフ の違いが要因と思われる)

↓ マウスで選択状態にすると、ベリーハート のバナーが現れます。

BVM.png

粋な計らいです!

実行ログ

#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.
Help
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 インストール時のスクショ

撮り忘れあり、すべてではない

言語とキーボード種別を選ぶだけ、全自動。時間を要すため放っておく。

win1.png win2.png win3.png win4.png win5.png win6.png win7.png win8.png win9.png win10.png win11.png win14.png win15.png

インストールが終了すると、シャットダウンします。
再起動する場合は、Step.7 & 8のコマンドを再実行します。

その他

  • Edgeを起動、Youtubeサイトを表示し、Pi5にHDMI接続したディスプレイのスピーカーからオーディオが出力されることを確認しました
  • Windows上でBluetoothキーボードの接続を試みましたが、できませんでした
    ble_ng.png






以上

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?