WSL2 での物理ドライブとネットワーク ドライブのマウント (Linux 用 Windows サブシステム)

Windows Subsystem for Linux (WSL2) で物理ドライブ、仮想ドライブ、またはネットワーク ドライブをマウントしてアクセスするには、いくつかの方法があります。デフォルトでは、WSL 環境はすべての Windows 論理ドライブを/mnt/ディレクトリ。さらに、UNC パスを使用して、Windows ホスト上で実行されているファイル エクスプローラーから WSL ファイル システムに直接アクセスできます。\wsl$(例えば、\wsl$ubuntu).

このガイドでは、WSL 環境でさまざまなドライブをマウントする方法について説明します。

コンテンツ:

Windows Subsystem for Linux (WSL 2) を使用すると、Windows ホスト自体がサポートしていないファイル システムを使用して、物理ドライブまたは特定のパーティションをマウントできるようになります。の/proc/filesystemsファイルには、WSL でサポートされているファイルシステムのリストが含まれています。

たとえば、ext4 パーティションが含まれる物理ディスクがあり、WSL からそれらのパーティションにアクセスしたいとします。

続行する前に、WSL 2 のバージョンを確認して更新してください。

wsl --update

次に、Windows で使用可能なディスク デバイスを一覧表示します。

wmic diskdrive list brief

この例では、2 つの物理ディスクがコンピューターに接続されています。

ハードディスク ドライブ全体を WSL にマウントできます。

wsl --mount \.PHYSICALDRIVE2

または、特定のパーティションのみ:

wsl --mount \.PHYSICALDRIVE2 --partition 1

物理ハードディスクのパーティションは、ディレクトリ /mnt/wsl/PHYSICALDRIVE2p1 にマウントされます。

UNC パスを使用して Windows ホストからこのパーティション上のファイルにアクセスできます。\wsl$ubuntumntwslPHYSICALDRIVE2p1.

ext4 ファイルシステム パーティションが WSL でアクセスできることを確認します。

$ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT

パーティションをアンマウントするには、次を実行します。

wsl --umount \.PHYSICALDRIVE2 --partition 1

ユーザーが Windows にログオンするときに物理ディスク パーティションを自動的にマウントするには、PowerShell を使用して簡単なスケジューラ タスクを作成します。

$TaskName="WSL_Mount_DISK1_PART1"
$Trigger= New-ScheduledTaskTrigger -AtLogOn
$Action= New-ScheduledTaskAction -Execute "cmd" -Argument "/c wsl --mount \.PHYSICALDRIVE2 --partition 1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -RunLevel Highest –Force

WSL 2 は現在、USB ドライブまたは SD カードのマウントをサポートしていません。 USB ストレージ デバイスを WSL に接続するには、usbipd-winパッケージ (USB over IP プロトコルを使用して外部 USB デバイスをパススルーできます)。

WSL での Windows ネットワーク ドライブのマウント

WSL では、ネットワーク コンピューターまたは NAS デバイス上の共有フォルダーにアクセスできます。 WSL でネットワーク ドライブをマウントするには 2 つの方法があります。

  • Windows でマップされ、ドライブ文字が割り当てられているネットワーク ドライブをマウントできます。
  • WSL で CIFS/SMB クライアントを使用し、UNC パスを使用して共有ネットワーク フォルダーをマウントすることができます。

たとえば、GPO またはnet use X: \192.168.100.12tools指示。 WSL からこのネットワーク ドライブにアクセスするには:

  1. マウント ポイントを作成します。$ sudo mkdir /mnt/x
  2. ドライブをマウントします。$ sudo mount -t drvfs X: /mnt/x
  3. これで、ネットワーク ドライブ上のファイルやフォルダーにアクセスできるようになります。

このネットワーク ドライブを自動的にマウントするには、次の行を/etc/fstab:

X: /mnt/x drvfs defaults 0 0

次に、すべてのファイル システムをマウントします。

$ mount -a

共有ネットワーク フォルダーは、CIFS パッケージを使用して SMB 対応デバイスから直接マウントすることもできます。

$ sudo apt install cifs-utils
$ sudo mount -t cifs -o user={user},pass={password},iocharset=utf8,vers=3.0 //192.168.100.12/tools /mnt/tools

この例では、現在のバージョンの Windows ではデフォルトで無効になっている SMBv1 ではなく、SMB 3.0 プロトコルを使用して共有フォルダーに接続します。

WSL で仮想ハード ドライブ (VHD/VHDX) を接続する

VHD/VHDX 仮想ハードディスクも WSL でマウントできます。 Hyper-V PowerShell モジュールがコンピューターにインストールされている場合は、次のコマンドを使用して新しい仮想ディスク ファイルを作成します。

New-VHD -Path $env:USERPROFILEwsl_shared_disk.vhdx -Dynamic -SizeBytes 20GB

次に、VHDX ファイルを WSL にマウントします。

さらに読む:Docker Desktop を使用せずに Windows (WSL2) で Docker を使い始める

wsl --mount --vhd $env:USERPROFILEwsl_shared_disk.vhdx --bare

これで、仮想ディスク上にパーティション テーブルと ext4 ファイル システムを使用したパーティションを作成できるようになりました。

$ lsblk
$ sudo parted /dev/sdc print
$ sudo parted /dev/sdc mklabel msdos
$ sudo parted -a optimal /dev/sdc mkpart primary ext4 0% 100%
$ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT /dev/sdc
$ sudo mkfs.ext4 /dev/sdd1

その後、UUID を使用して新しいパーティションをディレクトリにマウントできます。

$ sudo blkid
$ sudo mount UUID=c04d0309-b93a-47f2-ae0d-79c95c80cd51 /home/sysops/vhdx

この方法を使用すると、このコンピューターにインストールされている他の Linux 環境の仮想ハード ディスクを WSL でマウントできるようになります。 Linux WSL イメージ ファイル システムは次の場所に保存されます。ext4.vhdxの仮想ディスクC:Users[user]AppDataLocalPackages[distro]LocalState[distroPackageName]フォルダ。システム ドライブに十分な空き領域がない場合は、WSL イメージ ファイル システムを含む VHDX ファイルを別のドライブに移動できます。

Related Posts