現在のWSL2では、外部ストレージをマウントして使えるようになっています。
そこで、Raspberry Pi OS 64-bit版をコピーしているSSDを接続してみましょう。
管理者モードでPowerShellを起動して、次のコマンドを実行します。
PS C:\WINDOWS\system32> GET-CimInstance -query "SELECT * from Win32_DiskDrive"
DeviceID Caption Partitions Size Model
-------- ------- ---------- ---- -----
\\.\PHYSICALDRIVE1 NVMe KBG40ZNS512G NVMe KIOXIA 512GB 5 512105932800 NVMe KBG40ZNS512G NVMe KIOXIA 512GB
\\.\PHYSICALDRIVE0 WDC WD10EZEX-75WN4A1 1 1000202273280 WDC WD10EZEX-75WN4A1
\\.\PHYSICALDRIVE2 Realtek RTL9210B-CG SCSI Disk Device 2 500105249280 Realtek RTL9210B-CG SCSI Disk Device
接続したSSDのDEVICE IDが”\\.\PHYSICALDRIVE2″として見えています。
そこで、このDEVICEIDでWSL2にマウントします。
PS C:\WINDOWS\system32> wsl --mount \\.\PHYSICALDRIVE2 --bare
これでWSL2側から使用できるようになります。ここで、”–bare”はパーティション分割されたディスクの場合または、どのようなパーティションがあるか不明な場合に使用します。パーティション分割されていないディスクの場合には”–bare”オプションが無くても大丈夫です。
続けて、WSL2側から状況を見てみます。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 331.6M 1 loop /mnt/wsl/docker-desktop/cli-tools
loop1 7:1 0 302.9M 1 loop
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 256G 0 disk /mnt/wsl/docker-desktop/docker-desktop-proxy
sde 8:64 0 256G 0 disk /mnt/wsl/docker-desktop-data/isocache
sdf 8:80 0 465.8G 0 disk
├─sdf1 8:81 0 256M 0 part
└─sdf2 8:82 0 465.5G 0 part
接続したSSDがsdfとして見えています。またRaspberry Pi OSのbootとrootfsパーティションがsdf1、sdf2として見えています。
実際にWSL2側のUbuntuからマウントして使ってみましょう。
$ sudo mount /dev/sdf2 /mnt
$ sudo mount /dev/sdf1 /mnt/boot
これでWSL2側から読み書きすることができます。使い終わりましたらUbuntuからアンマウントします。
$ sudo umount /mnt/boot
$ sudo umount /mnt
続けてWSL2側からもアンマウントします。
PS C:\WINDOWS\system32> wsl --unmount \\.\PHYSICALDRIVE2
SSDを取り外す前には、念のためにWindows側の「USBの取り出し」も実行しておくのが良いでしょう。
参考: LinuxディスクをWSL2にマウントする docs.microsoft.com
この機能にアクセスするには、Windows11ビルド22000以上である必要があります。
その他の詳細な使い方については、このマイクロソフトからの文書を参照して下さい。