ソース:
- https://ascii.jp/elem/000/004/026/4026714/
- https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-mount-disk
順番としては
- (仮想ディスクイメージがなければ)VHD/VHDXを新規作成する
- VHD/VHDXをWindowsにアタッチする
- WSLにブロックデバイスとして認識させる
- (未フォーマットの場合は)WSLでフォーマットする
- WSLでマウントする
となります。
Windows 10 ビルド20211以降では、3. 単体、または3.と5.を合わせて、wsl.exe --mount
コマンドが使えます。
VHD/VHDXを新規作成する
GUI
コマンドライン
> diskpart.exe
Microsoft DiskPart version 10.0.20270.1
Copyright (C) Microsoft Corporation.
On computer: xxxxxxxx
# 容量固定
DISKPART> create vdisk file="<VHDまたはVHDXファイルのパス>" maximum=<サイズ> type=fixed
# 容量可変
DISKPART> create vdisk file="<VHDまたはVHDXファイルのパス>" maximum=<サイズ> type=expandable
VHD/VHDXをWindowsにアタッチする
GUI
以下のどちらか好きなほうで。
- VHD/VHDXファイルをダブルクリックする
- 「ディスクの管理」から「VHDの接続」
コマンドライン
> diskpart.exe
Microsoft DiskPart version 10.0.20270.1
Copyright (C) Microsoft Corporation.
On computer: xxxxxxxx
DISKPART> select vdisk file="<VHDまたはVHDXファイルのパス>"
DISKPART> attach vdisk
WSLにブロックデバイスとして認識させる
まずは、仮想ディスクのDeviceIDを知るため、wmic.exe
を実行します。
> wmic.exe diskdrive list brief
Caption DeviceID Model Partitions Size
Crucial_CT525MX300SSD4 \\.\PHYSICALDRIVE0 Crucial_CT525MX300SSD4 4 525110100480
Microsoft Virtual Disk \\.\PHYSICALDRIVE1 Microsoft Virtual Disk 0 98703360
仮想ディスクのDeviceID(上の例では \\.\PHYSICALDRIVE1
)がわかったら、それを引数に指定して、
管理者権限で wsl.exe --mount
を実行します。
Windows 10 ビルド20211以降が必要です。
管理者権限
> wsl.exe --mount \\.\PHYSICALDRIVE1 --bare
WSLでフォーマットする
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
sdb 8:16 0 100M 0 disk
sdc 8:32 0 256G 0 disk /
この例ではsdb
が仮想ディスクです。(最初に作成したサイズで、マウントもされていないので)
$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
Using /dev/sdb
(parted) mklabel gpt
(parted) mkpart <任意の名前> 0% 100%
(parted) quit
Information: You may need to update /etc/fstab.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
sdb 8:16 0 100M 0 disk
└─sdb1 8:17 0 100M 0 part
sdc 8:32 0 256G 0 disk /
$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.44.1 (24-Mar-2018)
/dev/sdb1 alignment is offset by 3072 bytes.
This may result in very poor performance, (re)-partitioning suggested.
Discarding device blocks: done
Creating filesystem with 102364 1k blocks and 25688 inodes
Filesystem UUID: abdf93e3-3f0f-4f58-9368-a9fce9f7cf08
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
WSLでマウントする
$ sudo mkdir /mnt/vhd
$ sudo mount /dev/sdb1 /mnt/vhd
WSLに認識させたディスクを外す
> wsl.exe --unmount \\.\PHYSICALDRIVE1