エヌビディアの佐々木です。
CUDA on WSL 2 に興味はあるものの、Windows Insider Preview のしかも Dev チャネルに参加するのはちょっとなぁ… と二の足を踏んでおられる方も多いのではないでしょうか。仮想マシンで検証できれば良いのですが、Windows 10 の Hyper-V では VM に GPU をアタッチできませんから、物理マシンに直接 Windows Insider Preview をインストールする必要があるというのも気が重くなるポイント。できればメイン環境は安定した Windows を保持しておきたいのが人情です。
PC のディスクに新しいパーティションを切ったり、あるいは新たなディスクを追加して Insider Preview をインストールするのも手ですが、パーティションの指定を間違って虚無を生成したり、うっかりマザボに落っことした M.2 のネジが混沌に飲み込まれて姿を消したりしがちです。
そこで本日紹介したいのが、Boot from VHD 機能によるマルチブートです。
Boot from VHD
これは、Hyper-V でおなじみのディスクイメージ ファイル (.vhd あるいは .vhdx) を使って、物理マシンを直接起動することができる機能です。登場したのは Windows 7 の頃ですから、もう 10 年選手ですね。その割にあまり使われていない気もしますが。
これを使うと、ディスク上に作った VHD ファイルを、まるで新しい物理ディスクのように扱って、そこに Windows Insider Preview をインストールし、VM ではなく物理マシンを起動できます。パーティションを切り直す必要もありませんし、容量可変タイプの VHD を使えば、ディスク容量も節約できます。
早速やってみましょう。
VHD への Windows Insider Preview のインストール
前提条件:
- 既に Windows 10 がインストールされている PC がある
- CUDA on WSL 2 を試すなら、もちろん NVIDIA の GPU も必要です
- ディスクにそれなりの空き容量がある
- Windows Insider Preview 21286 に CUDA on WSL 2 をセットアップした状態で、私の VHDX ファイルは 32GB のサイズがありました
- 容量 8GB 程度以上の USB ドライブがある
- Windows Insider Preview 21286 の ISO イメージは 4.3GB 程度あります
制限事項:
Windows Insider Preview をインストールするには、通常、2 通りの方法があります。
- 既存の Windows 10 に、Windows Update からの更新として、Insider Preview をインストールする
- Windows Insider Preview の ISO イメージからインストールメディアを作り、インストールする
VHD をブートディスクとして使う場合には、後者の方法しか使えないようです。何度か試しましたが、前者は「仮想ディスクにはインストールできない」旨のエラーで失敗しました。そのため、この記事では後者の方法を紹介します。
Windows Insider Preview ISO イメージの入手
Windows Insider Preview Downloads ページから、Dev チャネルの ISO イメージを入手してください。2021 年 2 月 8 日現在では、ビルド 21286 が入手可能です。
起動可能メディアの作成
Rufus 等を使って、ISO イメージから起動可能な USB ドライブを作ります。
インストールメディアで起動
作成した USB ドライブを起動デバイスとして選択し、インストーラーを起動します。この際、必ず UEFI モードで起動してください。そうしないと、肝心なところで「次へ」ボタンがクリックできずに詰みます。
下図で、同じ USB Flash Disk のエントリが「UEFI」と「USB」の二つありますが、UEFI のほうを選ぶわけです。(これは一例です。画面は、環境によりそれぞれ異なるでしょう)
下図のように、Windows のインストーラーが起動したら、まずは普通に進めてください。
インストール場所の選択画面まで来ました。ここに表示されている「ドライブ 0」は、既存の Windows がインストールされているディスクです。間違ってもこれを塗りつぶさないようにしましょう。
しかし、他にディスクはありませんよね。作るのです。仮想ディスクを。ここで。
[Shift] + [F10] でコマンドプロンプトを出してください。
ここで、diskpart コマンドを使って、既存のディスク上に VHD ファイルを作成します。が、その「既存のディスク」にはこの時点でドライブレターが割り当てられていません。これではアクセスしづらいので、ドライブレターを割り当てます。
まずは diskpart
を起動します。
ここからは、diskpart のプロンプトに対する操作です。
ドライブレターは、「ボリューム」に対して割り当てられるので、list volume
コマンドでボリュームを一覧します。
この例では、容量 511GB の Volume 1 が対象とわかるので、select volume 1
コマンドで、これを選択します。
assign
コマンドで、ドライブレターを割り当てます。その後、もう一度 list volume
すると、Volume 1 が C ドライブになったことが確認できます。
ここで、一旦 DiskPart を終了しておきましょう。
DISKPART> exit
DiskPart を終了しています...
X:\Sources>
VHD を作成
では、C ドライブに VHD を作っていきましょう。まず、VHD を格納するディレクトリを作っておきます。別にどこでも良いのですが、ここでは C:\VHD とします。
X:\Sources> mkdir c:\VHD
もう一度、DiskPart を起動します。
X:\Sources> diskpart
次のコマンドで、仮想ハードディスクを作成します。maximum パラメータで、容量を MB 単位で指定 (131072MB=128GB)、type=expandable で、容量可変タイプを指定しています。これによって、いきなり 128GB の VHDX ファイルが作成されるのではなく、実際の書き込みに従って拡張されていくようになります。
DISKPART> create vdisk file=c:\VHD\WIPTest.vhdx maximum=131072 type=expandable
100% 完了しました
DiskPart により、仮想ディスク ファイルが正常に作成されました。
この後、アタッチすることで仮想ディスクが使用可能になります。
DISKPART> attach vdisk
100% 完了しました
DiskPart により、仮想ディスク ファイルがアタッチされました。
list disk
すると、128GB の「ディスク 1」が出現していますね。ここに、Windows Insider Preview をインストールすれば良いわけです。
DiskPart を終了し、コマンドプロンプトからも exit します。
DISKPART> exit
DiskPart を終了しています...
X:\Sources> exit
VHD へ Windows Insider Preview をインストール
インストール場所の選択画面に戻ったら、「最新の情報に更新」をクリックすれば、先ほど作成した VHD による新しいドライブが現れます。後はここに、いつも通り Windows をインストールするだけです。
※ なお、インストーラーを UEFI モードで起動しなかった場合、ここで「次へ」がグレーアウトしてクリックできません。
インストール完了後は、起動時に次のような選択画面が表示され、どの Windows を起動するか選べるようになります。
これで、(ディスクの容量さえ十分あれば) いつもの環境を壊さずに、CUDA on WSL 2 にトライできますね。お楽しみ CUDA さい!