0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【VirtualBox】ネステッドVT-x/AMD-Vがグレーアウトして押せない!を一発で解決するバッチファイル

0
Posted at

【VirtualBox】ネステッドVT-x/AMD-Vがグレーアウトして押せない!を一発で解決するバッチファイル

はじめに

VirtualBoxで仮想マシン(VM)の中にさらに仮想環境を作りたい場合(DockerやWSL2、Androidエミュレータなどを動かす場合)、「ネステッドVT-x/AMD-V」を有効にする必要があります。

しかし、設定画面を開くと**「ネステッド VT-x/AMD-V を有効化」のチェックボックスがグレーアウトしていて押せない**という現象によく遭遇します。

通常、これを解決するにはコマンドプロンプトを開き、長いパスやコマンドを手打ちする必要がありますが、毎回行うのは非常に面倒です。
そこで、ダブルクリックしてVMを選ぶだけで設定を完了できるバッチファイルを作成しました。

事前確認:PCの「仮想化」は有効になっていますか?

このツールを使う前に、お使いのPC(ホストOS)自体で仮想化支援機能が有効になっているかを確認してください。ここが無効になっていると、VirtualBox側で設定してもエラーになります。

確認のためにBIOS画面を開く必要はありません。Windowsの標準機能で確認できます。

  1. タスクマネージャーを開きます(Ctrl + Shift + Esc キー)。
  2. パフォーマンス」タブをクリックし、「CPU」を選択します。
  3. 右下の情報欄にある「仮想化:」という項目を確認してください。

ここが**「有効」になっていれば準備OKです。
もし
「無効」**になっている場合は、PCを再起動してBIOS(UEFI)設定画面に入り、Intel VT-x または AMD-V の項目を有効(Enabled)に変更する必要があります。

バッチファイル(ソースコード)

以下のコードをコピーして、メモ帳などに貼り付け、enable_nested_vtx.bat という名前で保存してください。
※拡張子は .txt ではなく .bat に変更してください。

@echo off
setlocal enabledelayedexpansion

:: ==========================================
:: VirtualBox Nested VT-x 有効化ツール
:: ==========================================

:: 作業ディレクトリの設定
set "VBOX_PATH=C:\Program Files\Oracle\VirtualBox"

:: ディレクトリの存在確認
if not exist "%VBOX_PATH%\VBoxManage.exe" (
    echo [エラー] VirtualBoxが見つかりません。
    echo 以下のパスを確認してください:
    echo "%VBOX_PATH%"
    pause
    exit /b
)

:: VirtualBoxのディレクトリへ移動
cd /d "%VBOX_PATH%"
echo.
echo ========================================================
echo 仮想マシン(VM) リストを取得中...
echo ========================================================
echo.

:: VMリストの取得と表示
set count=0
for /f "delims=" %%i in ('VBoxManage list vms') do (
    set /a count+=1
    set "vm[!count!]=%%i"
    echo [!count!] %%i
)

if !count! equ 0 (
    echo [エラー] 仮想マシンが見つかりませんでした。
    pause
    exit /b
)

echo.

:ASK_INPUT
set /p "selection=処理対象のVM番号を入力してください (1-!count!): "

:: 入力チェック (簡易)
if "!selection!"=="" goto ASK_INPUT
if !selection! lss 1 goto ASK_INPUT
if !selection! gtr !count! goto ASK_INPUT

:: 選択されたVM情報の取得
set "target_vm=!vm[%selection%]!"

:: UUIDの抽出ロジック
:: 出力形式: "VM Name" {UUID}
:: 区切り文字 "{" 以降を取得し、末尾の "}" を削除する処理
for /f "tokens=2 delims={" %%A in ("!target_vm!") do (
    set "uuid_chunk=%%A"
)

:: 末尾の "}" を削除してUUIDを確定
set "target_uuid=!uuid_chunk:~0,-1!"

echo.
echo --------------------------------------------------------
echo 対象VM: !target_vm!
echo 対象UUID: !target_uuid!
echo --------------------------------------------------------
echo.
echo ネステッドVT-x (Nested Paging/VT-x) を有効化しています...

:: コマンド実行
VBoxManage modifyvm "!target_uuid!" --nested-hw-virt on

if %errorlevel% equ 0 (
    echo.
    echo [成功] 設定が完了しました。
) else (
    echo.
    echo [失敗] エラーが発生しました。VMが停止しているか確認してください。
)

echo.
pause

使い方

  1. 上記のコードを保存したバッチファイル(enable_nested_vtx.bat)をダブルクリックして実行します。
  2. 黒い画面(コマンドプロンプト)が立ち上がり、VMの一覧が表示されます。
  3. 設定を変更したいVMの番号を入力してEnterキーを押します。
  4. [成功] 設定が完了しました。 と表示されれば完了です。
  5. VirtualBoxの「設定」>「システム」>「プロセッサー」を確認すると、チェックボックスにチェックが入っているはずです。

初心者向け:コードの解説

このバッチファイルが裏で何をやっているのか、ポイントを絞って解説します。

1. VirtualBoxのコマンドを使える場所へ移動

通常、VirtualBoxを操作するコマンド(VBoxManage)は、インストールフォルダの中にあります。

set "VBOX_PATH=C:\Program Files\Oracle\VirtualBox"

ここでは、標準的なインストール先へ移動しています。もしインストール先を変更している場合は、ここのパスを書き換える必要があります。

2. VMの一覧を自動取得

for /f "delims=" %%i in ('VBoxManage list vms') do (...)

VBoxManage list vms というコマンドを実行すると、PCにあるVMの一覧が出力されます。それをループ処理で読み込み、画面に見やすく番号付きで表示しています。

3. UUID(識別ID)だけを抜き出す

ここが少し工夫したポイントです。VMリストは "VMの名前" {1234-abcd-...} という形式で出力されます。コマンドで操作するには、VMの名前UUIDがを指定します。

今回はバッチファイルで扱うので、UUIDのほうが抜き出しやすく簡単にできるので、後半の {} で囲まれた UUID を使用します。

for /f "tokens=2 delims={" %%A in ("!target_vm!") do (...)
set "target_uuid=!uuid_chunk:~0,-1!"
  • まず delims={ (区切り文字を { に設定)を使って、名前部分とID部分を分割します。
  • これだと 1234-abcd-...} のように末尾に } が残ってしまうため、!uuid_chunk:~0,-1! という記述で「最後の1文字を削除」して、きれいなUUIDを取り出しています。

4. 設定を書き換える

最後に、抽出したUUIDを使って実際に設定を変更します。

VBoxManage modifyvm "!target_uuid!" --nested-hw-virt on

この modifyvm ... --nested-hw-virt on というコマンドが、グレーアウトしている項目を強制的にONにする操作です。

おわりに

GUI(画面操作)で設定できない項目も、CLI(コマンド操作)なら変更できるケースはよくあります。
このバッチファイルを使えば、難しいコマンドを覚えなくても一瞬で設定変更が可能です。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?