Windows11ビルド22000のWSL2から外部ストレージのマウントが可能となった。
これは物理ディスク上のext4パーティションも含まれるので、この機能でLinuxパーティションをマウントしてやるとWSL2経由ながらもWindowsからLinuxパーティションを読み書きできるようになる。
パーティションのマウントは以下のコマンドで行う。
wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>
以下、必要なオプションの調べ方について解説を行う。
DiskPath
Windowsが認識するディスクのパス。\\.\PHYSICALDRIVE*
の形式。
一覧を表示するには以下のコマンドを実行する。
Get-CimInstance -query "select * from Win32_DiskDrive"
DeviceID Caption Partitions Size Model
-------- ------- ---------- ---- -----
\\.\PHYSICALDRIVE0 SAMSUNG MZ7TE256HMHP-000L7 4 256052966400 SAMSUNG MZ7TE256HMHP-000L7
\\.\PHYSICALDRIVE1 TCSUNBOW N4 240GB 2 256052966400 TCSUNBOW N4 240GB
\\.\PHYSICALDRIVE2 I-O DATA HDCZ-UT USB Device 1 3000590369280 I-O DATA HDCZ-UT USB Device
今回のケースでは、TCSUNBOW N4 240GB
の\\.\PHYSICALDRIVE1
となる。
PartitionNumber
こちらはLinux側が認識するパーティション番号。
不明な場合は一旦ディスクをアタッチしてWSL内で調べる。--bare
はマウントせずにアタッチのみ行うオプション。
sudo wsl --mount \\.\PHYSICALDRIVE1 --bare
一旦マウントすればWSL内でディスク情報を参照できる。
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 256G 0 disk
sdb 8:16 0 339.8M 1 disk
sdc 8:32 0 256G 0 disk /
sdd 8:48 0 238.5G 0 disk
├─sdd1 8:49 0 512M 0 part
└─sdd2 8:50 0 238G 0 part
ターゲットは/dev/sdd2
と認識されているので、パーティション番号は2
だと判明。
FileSystem
ファイルシステムもWSL内で調べることができる。通常はext4
なので省略可能。
sudo blkid
/dev/sda: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" TYPE="ext4"
/dev/sdb: TYPE="ext4"
/dev/sdc: UUID="3255683f-53a2-4fdf-91cf-b4c1041e2a62" TYPE="ext4"
/dev/sdd1: UUID="8601-AE73" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="f99957fe-c58c-4a67-ad7c-441cc3ca77ff"
/dev/sdd2: UUID="9a702a75-3c18-4355-8b87-6ac083f01d17" TYPE="ext4" PARTUUID="106b41ac-a008-41d9-8325-28d60ddc5302"
ターゲットデバイスの/dev/sdd2
のファイルシステムはext4
だ。
パーティションをマウント
必要なオプションが特定できた。
ファイルシステムは既定のext4
なので省略して、次のコマンドでマウントする。
wsl --mount \\.\PHYSICALDRIVE1 --partition 2
ディスク \\.\PHYSICALDRIVE1 は、名前 'PHYSICALDRIVE1p2' で正常にマウントされました。マウントポイントは、自動マウント設定が指すパス (既定: /mnt/wsl) の下にあります。
ディスクをアンマウントしてデタッチするには、'wsl --unmount \\.\PHYSICALDRIVE1' を実行します。
WSL内では/mnt/wsl/PHYSICALDRIVE1p2
から、Windowsからは\\wsl.localhost\Ubuntu-20.04\mnt\wsl\PHYSICALDRIVE1p2
からアクセスできる。
パーティションをアンマウント
wslをシャットダウンすれば、アンマウントされるので、あまり明示的に行うことはないだろうが、アンマウントは次のコマンドで行える。
wsl --unmount \\.\PHYSICALDRIVE1