Microsoft Store版のWSL Previewでは、仮想ハードディスク(VHD)を追加でマウントすることが容易にできるようなので、データなどを保管するために空のVHDが用意したいと思います。
環境
- エディション: Windows 11 Home
- バージョン: 22H2
- WSL バージョン: 0.70.4.0
- カーネル バージョン: 5.15.68.1
- ディストリビューション: Debian GNU/Linux 11
仮想ハードディスク(VHD)を用意する
PowerShellからコマンドで用意することもできますが、ここではWindowsに標準で含まれている「ディスク管理」を利用します。
- タスクバーの
スタート
から右クリックでディスク管理
を開きます。 -
操作
メニューからVHD の作成
を選択します。 - 以下の項目を指定します。
-
場所: 保存場所を指定(
C:\Users\ユーザー名\my-drive.vhdx
など) -
仮想ハードディスクのサイズ: ディスクサイズを指定(
128
GB
など) -
仮想ハードディスク フォーマット:
VHDX
を指定 -
仮想ハードディスクの種類:
可変容量
を指定 - すべて指定できたら
OK
で実行します
-
場所: 保存場所を指定(
-
アイコンのあるディスク表示上
から右クリックでVHD の切断
を選びOK
で実行します。
これで仮想ハードディスクとしてのVHDファイルが、指定した保存場所に用意されました。
このVHDを、WSLで利用できるext4のファイルシステムでフォーマットして、マウントできるようにしたいと思います。
※VHDXはVHDの後継フォーマットです。
WSLでVHDをフォーマットする
PowerShellから以下のコマンドでWSLにディスクをアタッチ(接続)します。
※VHDファイルの場所などは適宜差し替えてください。
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --bare
ディスクの管理で「VHD の切断」を行っていないと使用中となり、アタッチできません。
アタッチされているか、また、そのデバイス名を確認します。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 365.5M 1 disk
sdb 8:16 0 1G 0 disk [SWAP]
sdc 8:32 0 128G 0 disk ← 容量的にアタッチされたVHDと確認
sdd 8:48 0 256G 0 disk /mnt/wslg/distro
fdiskを使ってパーティションを設定
今回はパーティションが1つだけ作成していますが、使用環境に合わせてパーティションを追加してください。
パーティションを作成(ここでの対象デバイスは sdc
としています)
$ sudo fdisk /dev/sdc ← 確認したデバイス名を/dev/の後に指定
↓ パーティションを作る
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): [Enter]
First sector (2048-268435455, default 2048): [Enter]
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-268435455, default 268435455): [Enter]
Created a new partition 1 of type 'Linux' and of size 128 GiB.
↓ 変更を保存(実行)
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
↓ 確認
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 365.5M 1 disk
sdb 8:16 0 1G 0 disk [SWAP]
sdc 8:32 0 128G 0 disk
└─sdc1 8:33 0 128G 0 part ← 出来上がったパーティション
sdd 8:48 0 256G 0 disk /mnt/wslg/distro
ファイルシステムとして ext4
でフォーマットします。
$ sudo mkfs -t ext4 /dev/sdc1 ← フォーマットするパーティションを指定
フォーマットが終わったら一旦WSLよりアタッチを解除します
PS C:\> wsl --unmount \\?\C:\Users\ユーザー名\VHDファイル名.vhdx
これでWSLで利用するためのVHDが用意できました。
WSLで作成したVHDをマウント
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --partition 1 --name ディレクトリ名
ディスクは '/mnt/wsl/ディレクトリ名' として正常にマウントされました。
と表示されれば上記の場所としてマウントされアクセスすることができるようになります。
パーティションを複数作っている場合は「 --partition 2 --name 別ディレクトリ名」といった具合に各々マウントします。
パーティションを設けない場合は、「fdisk」は使用せず「mkfs」で対象をext4フォーマットしてください。
PS C:\> wsl --mount --vhd \\?\C:\Users\ユーザー名\VHDファイル名.vhdx --name ディレクトリ名
wsl --mount
であらかじめマウントをしておく必要があるので、バッチファイルでまとめておくと良さそうです。
最後に
保存先を別の仮想ハードディスクに変更して、制作したデータやDBなどの格納先としておけば、バックアップ等も容易になるのではないかと思います。
また、他のディストリビューションでも使いたいといった時にも便利かもしれません。