VentoyにWindows11制限回避用ファイルを追加してローカルアカウントでセットアップ

Windows 11をセットアップするにはシステム要件を満たす必要があります。

またマイクロソフトアカウントの作成が必須になっており、ローカルアカウントでセットアップするにはセットアップ時にコマンド入力などの対策が必要です。
Rufusを使えば、これらを回避したインストールUSBを作成出来ますが、RufusはWindows専用で、Ubuntu上では利用出来ません。そこでUbuntu上でも制限を回避したインストールUSBの作成方法を紹介します。

VentoyのUSBメモリを作成

まずはマルチブートUSBの作成で有名なVentoyのUSBメモリを作成します。ダウンロードしたdebファイルを解凍し、VentoyGUIを実行します。

日本語表示にしたあとパーティションスタイルをGPTにします。

インストール」を押せば作成完了です。

Windows 11のISOファイルを保存

マイクロソフトのサイトからWin11_25H2_Japanese_x64_v2.isoをダウンロードして、USBメモリのVentoyという名前のドライブに保存します。これでWindows 11のISOファイルからブート出来るようになりましたが、先ほどの制限回避用の設定ファイルを用意します。
なお、解説部分は不要でいきなり作成したいならこちらへ。

USBメモリ内に設定ファイルを作成

ISOイメージと同じフォルダに ventoy という名前の新しいフォルダを作ります(すべて小文字)。


そのフォルダ内に ventoy.json というファイル名のテキストファイルを保存します。

{
"control": [
{ "VTOY_WIN11_BYPASS_CHECK": "1" },
{ "VTOY_WIN11_BYPASS_NRO": "1" }
]
}

BYPASS_CHECK はTPMやCPUの制限を回避し、BYPASS_NROはセットアップ時のMicrosoftアカウント強制(インターネット接続強制)を回避します(25H2では不可)。

最終的なUSBメモリの中身のイメージ

USBメモリ(Ventoyドライブ)
├── Win11_25H2_Japanese_x64_v2.iso <-- ISOファイルをそのまま置く
└── ventoy <-- 自分で作ったフォルダ
└── ventoy.json <-- 自分で作った設定ファイル

さらに設定するなら

Ventoyのシステム設定で追加できるその他の項目もあります。前の手順で作成した ventoy.json"control" の中に追記することで、さらに挙動をコントロールできます。

{
"control": [
{ "VTOY_WIN11_BYPASS_CHECK": "1" },
{ "VTOY_WIN11_BYPASS_NRO": "1" },
{ "VTOY_DEFAULT_MENU_MODE": "0" },
{ "VTOY_FILT_DOT_UNDERSCORE_FILE": "1" }
]
}
  • メニューの初期モード調整(VTOY_DEFAULT_MENU_MODE:
    通常はグラフィカルなメニュー("0")ですが、古いPCやグラフィックに不具合が出る場合は、文字だけの「テキストモード("1")」をデフォルトに固定できます。
  • 不要なゴミファイルの非表示(VTOY_FILT_DOT_UNDERSCORE_FILE:
    LinuxやMac環境でUSBにISOをコピーした際、自動で作られてしまう ._Win11.iso のような隠しゴミファイルをVentoyの起動画面に表示させないようにフィルタリングします。

応答ファイル(Autounattend.xml)を使った完全自動化

現在の25H2のISOイメージの場合、上記の方法だとセットアップ時のMicrosoftアカウント強制(インターネット接続強制)は回避できなくなっています。また、「プライバシー質問の全拒否(位置情報などをオフにする)」といったカスタマイズを行いたい場合は、応答ファイル(XMLファイル)を組み合わせる必要があります。
Ventoyには、ISOファイルはそのままで、応答ファイルを組み合わせて起動する機能(Auto Installation Plugin)」が備わっているので、これを利用して制限回避やカス対マイズを行います。

  1. Schneegans(海外の有名な応答ファイル生成サイト) などの無料WEBツールを使い、画面上の質問(アカウント名、プライバシー設定、自動ライセンス認証など)に答えて autounattend.xml というファイルを生成・ダウンロードします。
  2. そのファイルを、USBメモリの ventoy フォルダ内に保存します。
  3. ventoy.json に以下のように「このISOを起動するときは、このXMLを読み込む」という命令(auto_install)を追記します。
{
"control": [
{ "VTOY_WIN11_BYPASS_CHECK": "1" },
{ "VTOY_WIN11_BYPASS_NRO": "1" }
],
"auto_install": [
{
"image": "/Win11_25H2_Japanese_x64_v2.iso",
"template": "/ventoy/autounattend.xml"
}
]
}

image の中身は、USBのトップに置いた実際のISOファイル名と完全に一致させます。

これを設定してUSBブートすると、PCの制限を回避しつつ、アカウント作成や初期設定(国、キーボード、プライバシー等)もすべて自動でスキップされ、起動したらすぐにデスクトップ画面が開くというカスタムUSBが完成します。

autounattend.xmlの例

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://microsoft.com" xmlns:xsi="http://w3.org">
<!-- BitLocker(デバイス暗号化)の自動有効化を禁止 -->
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg add HKLM\SYSTEM\CurrentControlSet\Control\BitLocker /v PreventDeviceEncryption /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://microsoft.com" xmlns:xsi="http://w3.org">
<ComputerName>*</ComputerName>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://microsoft.com" xmlns:xsi="http://w3.org">
<!-- ローカルアカウント「user」(パスワードなし)を作成 -->
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
<Description>Local Administrator</Description>
<DisplayName>user</DisplayName>
<Group>Administrators</Group>
<Name>user</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<!-- 作成したuserアカウントで自動ログイン -->
<AutoLogon>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Username>user</Username>
</AutoLogon>
<!-- 初期設定画面(OOBE)のプライバシー質問等をすべてスキップ -->
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<!-- 高速スタートアップを無効化するコマンドを実行 -->
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<CommandLine>reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled /t REG_DWORD /d 0 /f</CommandLine>
<Description>Disable Fast Startup</Description>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
</unattend>

ただし、unattendファイルにwindowsPEパスのセクションが存在しない場合、それをAutounattend.xmlとしてboot.wimのルートに配置しても機能しません。Windows SetupがAutounattend.xmlを%WINDIR%\Panther\unattend.xmlに引き継がないためです。
つまり specializeoobeSystemパスしか無いunattend.xmlは、windowsPEパスが無いせいで後続フェーズにまるごと引き継がれず、全設定が無視されてしまいます。

対策を施したXMLファイルを1コピペで作成

長々と解説しましたが、上記の問題も踏まえ、windowsPEパスに日本語ロケール設定(ja-JP)を追加し、ファイル自体が3つのパスが揃った完全なunattendを作成してspecialize・oobeSystem側の設定も正しく引き継がれる設定を行います。これらを1コピペで作成するスクリプトを作成したのでこちらを利用します。
GitHubからインストールする方法も追記しました。こちらのほうが楽です)
VentoyのUSBメモリ内で右クリックして「Open in Terminal」を選択します。

下記のスクリプトを貼り付けて実行します。

#!/usr/bin/env bash
set -euo pipefail

# Ventoy用ディレクトリを作成
mkdir -p ventoy

# --- ventoy/ventoy.json ---
cat > ventoy/ventoy.json << 'EOF'
{
    "control": [
        { "VTOY_WIN11_BYPASS_CHECK": "1" }
    ],
    "auto_install": [
        {
            "image": "/Win11_25H2_Japanese_x64_v2.iso",
            "template": "/ventoy/autounattend.xml"
        }
    ]
}
EOF

# --- ventoy/autounattend.xml ---
cat > ventoy/autounattend.xml << 'EOF'
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>ja-JP</UILanguage>
</SetupUILanguage>
<InputLocale>0411:00000411</InputLocale>
<SystemLocale>ja-JP</SystemLocale>
<UILanguage>ja-JP</UILanguage>
<UserLocale>ja-JP</UserLocale>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- BitLocker(デバイス暗号化)の自動有効化を禁止 -->
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg add HKLM\SYSTEM\CurrentControlSet\Control\BitLocker /v PreventDeviceEncryption /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ComputerName>*</ComputerName>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- ローカルアカウント「user」(パスワードなし)を作成 -->
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
<Description>Local Administrator</Description>
<DisplayName>user</DisplayName>
<Group>Administrators</Group>
<Name>user</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<!-- 作成したuserアカウントで自動ログイン -->
<AutoLogon>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Username>user</Username>
</AutoLogon>
<!-- 初期設定画面(OOBE)のプライバシー質問等をすべてスキップ -->
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<!-- 高速スタートアップを無効化するコマンドを実行 -->
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<CommandLine>reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled /t REG_DWORD /d 0 /f</CommandLine>
<Description>Disable Fast Startup</Description>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
</unattend>
EOF

echo "作成完了: ./ventoy/ventoy.json"
echo "作成完了: ./ventoy/autounattend.xml"
echo ""
echo "※ Ventoyドライブのルートに ventoy フォルダごとコピーし、"
echo "   Win11_25H2_Japanese_x64_v2.iso もドライブのルートに置いてください。"

するとventoyフォルダやその中にjsonファイルとxmlファイルが作成されます。

作成したUSBメモリから起動

作成したUSBメモリから起動した場合、Windows11のISOとブート方式を選択したあとに下記のような表示が出るのでXMLを読み込む形で起動します。なお、セキュアブート環境でVentoyのメニューが出ない場合はこちらの方法でセキュアブートに対応させます。

この方法でインストールした場合はネットワーク接続が無い環境でもセットアップを続行出来、ローカルアカウントでセットアップが完了します。高速スタートアップなども無効化された状態です。

BitLockerも無効化されていますね。

GitHubを使用した作成方法

Ventoyの設定ファイルを作成する方法として、GitHubから実行する方法も用意しました。VentoyのUSBメモリやISOファイル名も自動取得するようにしているので、こちらのほうが楽ですね。
ターミナルを起動したら、

下記コマンドを貼り付けて実行します。

curl -LO https://raw.githubusercontent.com/hirogura/ventoy-win/main/ventoy-win.sh
chmod +x ventoy-win.sh
./ventoy-win.sh

USBメモリを認識して自動で作成します。

ventoyフォルダ内には下記の2ファイルが作成されます。

タイトルとURLをコピーしました