Windows でサポートされていない Linux ディスク フォーマットにアクセスする必要がある場合は、WSL 2 を使用してディスクをマウントし、そのコンテンツにアクセスすることができます。 このチュートリアルでは、WSL 2 にアタッチするディスクとパーティションを識別する手順、それらをマウントする方法、それらにアクセスする方法について説明します。
外部ドライブを接続していて、これらのマウント手順で成功しない場合は、「USB デバイスを接続する」場合の手順を試してみてください。 現在 wsl --mount コマンドは、USB、フラッシュ ドライブ、SD カード リーダーをサポートしていません (この問題の詳細については、こちらを参照してください)。
注
WSL 2 にディスクをアタッチするには、管理者アクセス権が必要です。
WSL 2 の wsl --mount コマンドでは、現在使用されているディスク (またはそのディスクに属しているパーティション) のマウントをサポートしていません。
wsl --mount を使用すると、パーティションのみが要求された場合でも、常にディスク全体がアタッチされます。 Windows インストール ディスクをマウントすることはできません。
前提条件
Windows 11 を使用しているか、Microsoft Store バージョンの WSL を実行している必要があります。 WSL と Windows のバージョンを確認するには、次のコマンドを使用してください。wsl.exe --version
外部ドライブをマウントする場合の Windows フォーマットと Linux フォーマットの違い
Windows 用にフォーマットされた外部ドライブでは、通常、NTFS ファイル システムのフォーマットが使用されます。 Linux 用にフォーマットされた外部ドライブでは、通常、Ext4 ファイル システムのフォーマットが使用されます。
WINDOWS ファイル システムに NTFS 形式のドライブをマウントした場合、WSL を使って Linux ディストリビューションからそのドライブにアクセスすることができます。これを行うには、マウントされたディレクトリ (sudo mkdir /mnt/d を作成し、d を使用するドライブ文字に置き換えてください) を作成し、drvfs ファイルシステム相互運用プラグインを使用します。そして、次のコマンドを使用してください。
sudo mount -t drvfs D: /mnt/d
マウント シナリオの詳細については、こちらを参照してください。
Ext4 形式のドライブがある場合、Windows ファイル システムにマウントすることはできません。 WSL を使用して Linux ディストリビューションに Ext4 形式のドライブをマウントするには、次に示す手順に従って wsl --mount コマンドを使用できます。
パーティション分割されていないディスクのマウント
パーティションがないディスクがある場合は、wsl --mount コマンドを使用して直接マウントできます。 まず、ディスクを識別する必要があります。
ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。
Get-CimInstance -Query "SELECT * from Win32_DiskDrive"ディスク パスは、"DeviceID" 列で使用できます。 通常は
\\.\PHYSICALDRIVE*の形式です。ディスクをマウントする - PowerShell を使用して、上で検出されたディスク パスを使用してディスクをマウントできます。
wsl.exe --mount <Disk>
パーティション分割されたディスクのマウント
ファイル形式やどのようなパーティションがあるか不明なディスクがある場合は、以下の手順に従ってマウントできます。
ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。
Get-CimInstance -Query "SELECT * from Win32_DiskDrive"ディスク パスは、"DeviceID" 列で使用できます。 通常は
\\.\PHYSICALDRIVE*の形式です。WSL 2 にマウントするパーティションの一覧を表示して選択する - ディスクが識別されたら、次を実行します。
wsl.exe --mount <Disk> --bareこれにより、WSL 2 でディスクを使用できるようになります。 (この例では、
<Disk>は\\.\PHYSICALDRIVE*です。一度アタッチされたパーティションは、WSL 2 内で次のコマンドを実行することで、その一覧を確認できます。
lsblkこれにより、使用可能なブロック デバイスとそのパーティションが表示されます。
Linux 内部では、ブロック デバイスは /dev/<Device><Partition> として識別されます。 たとえば、/dev/sdb3は、ディスク 3のパーティション番号sdbです。
出力例:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 1G 0 disk
├─sdb2 8:18 0 50M 0 part
├─sdb3 8:19 0 873M 0 part
└─sdb1 8:17 0 100M 0 part
sdc 8:32 0 256G 0 disk /
sda 8:0 0 256G 0 disk
ファイルシステムの種類の識別
ディスクまたはパーティションのファイルシステムの種類がわからない場合は、次のコマンドを使用できます。
blkid <BlockDevice>
これにより、検出されたファイルシステムの種類が (TYPE="<Filesystem>" 形式で) 出力されます。
選択したパーティションをマウントする
マウントする必要があるパーティションを特定したら、各パーティションで次のコマンドを実行します。
wsl.exe --mount <Disk> --partition <Index> --type <Type>
注
ディスク全体を 1 つのボリュームとしてマウントする場合 (ディスクがパーティション分割されていない場合) は、--partition を省略できます。
--typeを省略すると、既定のファイル システムの種類は 'ext4' になります。
ディスクのコンテンツにアクセスする
一度マウントされたディスクは、構成値 automount.root によってポイントされるパスからアクセスできます。 既定値は /mnt/wsl です。
Windows からは、エクスプローラーで \\wsl$\<Distro>\<Mountpoint> に移動 (して任意の Linux ディストリビューションを選択) することで、ディスクにアクセスできます。
ディスクのマウント解除
WSL 2 からディスクのマウントを解除してデタッチする場合は、次を実行します。
wsl.exe --unmount [DiskPath]
WSL に VHD をマウントする
注
Microsoft Store から入手した WSL には、VHD を直接マウントする新しい引数 wsl --mount --vhd <pathToVHD> が含まれます。
また、wsl --mount を使用して仮想ハード ディスク ファイル (VHD) を WSL にマウントすることもできます。 これを行うには、まず Windows の Mount-VHD コマンドを使用して、Windows に VHD をマウントする必要があります。 このコマンドは、必ず管理者特権で実行してください。 このコマンドの使用例を以下に示します。また、ディスク パスも出力されます。
<pathToVHD> を実際の VHD のパスに置き換えてください。
Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path <pathToVHD> -PassThru | Get-Disk).Number)"
上の出力を使用して、この VHD のディスク パスを取得し、前のセクションの手順に従って WSL にマウントすることができます。
また、この手法を使用して、他の WSL ディストリビューションの仮想ハード ディスクをマウントして操作することもできます。各 WSL 2 ディストリビューションは、ext4.vhdx という名前の仮想ハード ディスク ファイルを使用して保存されるためです。 既定では、WSL 2 ディストリビューションの VHD は、こちらのパス %LocalAppData%\Packages\[distro]\LocalState\[distroPackageName] に格納されます。それらシステム ファイルにアクセスする場合は注意してください。これはパワー ユーザー向けのワークフローです。 ディスクが使用されていないことを確認するために、このディスクを操作する前に wsl --shutdown を実行してください。
コマンド ライン リファレンス
特定のファイルシステムのマウント
WSL 2 では、既定でデバイスを ext4 としてマウントしようとします。 別のファイルシステムを指定するには、次を実行します。
wsl.exe --mount <Disk> --type <Type>
たとえば、ディスクを FAT としてマウントするには、次を実行します。
wsl.exe --mount <Disk> --type vfat
注
WSL2 で使用可能なファイルシステムを一覧表示するには、次を実行します。
cat /proc/filesystems
あるディスクが WSL2 (Linux ファイル システム) を使用してマウントされている場合、そのディスクは ext4 ドライバーを使用して Windows ファイル システムにマウントできなくなります。
特定のパーティションのマウント
WSL 2 では、既定でディスク全体をマウントしようとします。 特定のパーティションをマウントするには、次を実行します。
wsl.exe --mount <Disk> --partition <Index>
これは、ディスクが MBR (マスター ブート レコード) または GPT (GUID パーティション テーブル) のいずれかである場合にのみ機能します。 パーティション スタイル (MBR と GPT) について確認してください。
マウント オプションの指定
マウント オプションを指定するには、次を実行します。
wsl.exe --mount <Disk> --options <Options>
例:
wsl.exe --mount <Disk> --options "data=ordered"
注
現時点では、ファイル システム固有のオプションのみがサポートされています。
ro、rw、noatime,...などの一般的なオプションはサポートされていません。
マウントせずにディスクをアタッチする
ディスク スキームが上のいずれのオプションでもサポートされていない場合は、次を実行してディスクをマウントせずに WSL 2 にアタッチできます。
wsl.exe --mount <Disk> --bare
これにより、ブロック デバイスが WSL 2 内で使用できるようになるため、そこから手動でマウントできます。 WSL 2 内で使用可能なブロック デバイスの一覧を表示するには、lsblk を使用します。
マウント名の指定
注
このオプションは、Microsoft Store から入手した WSL でのみ使用できます
既定では、マウントポイント名は物理ディスクまたは VHD の名前に基づいて生成されます。 これは、--name を使ってオーバーライドできます。
wsl.exe --mount <Disk> --name <Name>
例:
wsl.exe --mount <Disk> --name myDisk
ディスクのデタッチ
WSL 2 からディスクをデタッチするには、次を実行します。
wsl.exe --unmount [DiskPath]
Diskpath を省略すると、アタッチされているすべてのディスクのマウントが解除され、デタッチされます。
注
1 つのディスクのマウント解除に失敗した場合は、wsl --shutdown を実行して WSL 2 を強制的に終了させることで、ディスクをデタッチできます。
制限事項
現時点では、ディスク全体のみを WSL 2 にアタッチできます。つまり、パーティションのみをアタッチすることはできません。 具体的には、ブート デバイスは Windows からデタッチできないため、
wsl --mountを使用してそのデバイス上のパーティションを読み取ることはできません。wsl --mountによってマウントできるのは、カーネルでネイティブでサポートされているファイルシステムのみです。 これは、wsl --mountを呼び出すことによって、インストールされているファイルシステム ドライバー (たとえば、ntfs-3g など) を使用することはできないことを意味します。カーネルで直接サポートされていないファイルシステムは、
--bareアタッチを介してマウントしてから、関連する FUSE ドライバーを呼び出すことができます。
Windows Subsystem for Linux