Linux ディスクを WSL 2 にマウントする

Windows でサポートされていない Linux ディスク フォーマットにアクセスする必要がある場合は、WSL 2 を使用してディスクをマウントし、そのコンテンツにアクセスすることができます。 このチュートリアルでは、WSL 2 にアタッチするディスクとパーティションを識別する手順、それらをマウントする方法、それらにアクセスする方法について説明します。

外部ドライブを接続していて、これらのマウント手順で成功しない場合は、「USB デバイスを接続する」場合の手順を試してみてください。 現在 wsl --mount コマンドは、USB、フラッシュ ドライブ、SD カード リーダーをサポートしていません (この問題の詳細については、こちらを参照してください)。

Note

WSL 2 にディスクをアタッチするには、管理者アクセス権が必要です。 WSL 2 の mount コマンドでは、現在使用されているディスク (またはそのディスクに属しているパーティション) のマウントをサポートしていません。 wsl --mount を使用すると、パーティションのみが要求された場合でも、常にディスク全体がアタッチされます。 Windows インストール ディスクをマウントすることはできません。

前提条件

Windows 11 ビルド 22000 以降を使用しているか、Microsoft Store バージョンの WSL を実行している必要があります。 WSL と Windows のバージョンを確認するには、次のコマンドを使用してください。wsl.exe --version

外部ドライブをマウントする場合の Windows フォーマットと Linux フォーマットの違い

Windows 用にフォーマットされた外部ドライブでは、通常、NTFS ファイル システムのフォーマットが使用されます。 Linux 用にフォーマットされた外部ドライブでは、通常、Ext4 ファイル システムのフォーマットが使用されます。

Windows ファイル システムに NTFS フォーマットのドライブをマウントした場合は、マウントされたディレクトリ (sudo mkdir /mnt/d、使用するドライブ文字に 'd' を置き換えてください) を作成し、次のコマンドを使用して、 drvfs ファイル システム相互運用プラグインを使用して、WSL を使用して Linux ディストリビューションからそのドライブにアクセスできます。

sudo mount -t drvfs D: /mnt/d

マウント シナリオの詳細については、こちらを参照してください

Ext4 形式のドライブがある場合、Windows ファイル システムにマウントすることはできません。 WSL を使用して Linux ディストリビューションに Ext4 形式のドライブをマウントするには、次に示す手順に従って wsl --mount コマンドを使用できます。

パーティション分割されていないディスクのマウント

パーティションがないディスクがある場合は、wsl --mount コマンドを使用して直接マウントできます。 まず、ディスクを識別する必要があります。

  1. ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    ディスクのパスは、[DeviceID] 列で確認できます。 通常は \\.\PHYSICALDRIVE* の形式です。

  2. ディスクをマウントする - PowerShell を使用して、上で検出されたディスク パスを使用してディスクをマウントできます。

    wsl --mount <DiskPath>
    

    WSL にドライブをマウントする

パーティション分割されたディスクのマウント

ファイル形式やどのようなパーティションがあるか不明なディスクがある場合は、以下の手順に従ってマウントできます。

  1. ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    ディスクのパスは [DeviceID] 列に列挙されます。通常は \\.\PHYSICALDRIVE* の形式です。

  2. WSL 2 にマウントするパーティションの一覧を表示して選択する - ディスクが識別されたら、次を実行します。

    wsl --mount <DiskPath> --bare
    

    これにより、WSL 2 でディスクを使用できるようになります。 (この例では、<DiskPath>\\.\PHYSICALDRIVE* です。

  3. 一度アタッチされたパーティションは、WSL 2 内で次のコマンドを実行することで、その一覧を確認できます。

    lsblk
    

    これにより、使用可能なブロック デバイスとそのパーティションが表示されます。

Linux 内部では、ブロック デバイスは /dev/<Device><Partition> として識別されます。 たとえば、/dev/sdb3 はディスク sdb のパーティション番号 3 を表します。

出力例:

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 --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

Note

ディスク全体を 1 つのボリュームとしてマウントする場合 (ディスクがパーティション分割されていない場合) は、--partition を省略できます。

省略した場合、既定のファイルシステムの種類は "ext4" になります。

ディスクのコンテンツにアクセスする

一度マウントされたディスクは、構成値 automount.root によってポイントされるパスからアクセスできます。 既定値は /mnt/wsl です。

Windows からは、エクスプローラーで \\wsl$\\<Distro>\\<Mountpoint> に移動 (して任意の Linux ディストリビューションを選択) することで、ディスクにアクセスできます。

ディスクのマウント解除

WSL 2 からディスクのマウントを解除してデタッチする場合は、次を実行します。

wsl --unmount <DiskPath>

WSL に VHD をマウントする

Note

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 は、こちらのパス C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName] に格納されます。それらシステム ファイルにアクセスする場合は注意してください。これはパワー ユーザー向けのワークフローです。 ディスクが使用されていないことを確認するために、このディスクを操作する前に wsl --shutdown を実行してください。

WSL に VHD をマウントする

コマンド ライン リファレンス

特定のファイルシステムのマウント

WSL 2 では、既定でデバイスを ext4 としてマウントしようとします。 別のファイルシステムを指定するには、次を実行します。

wsl --mount <DiskPath> -t <FileSystem>

たとえば、ディスクを fat としてマウントするには、次を実行します。

wsl --mount <Diskpath> -t vfat

Note

WSL2 で使用可能なファイルシステムの一覧を表示するには、cat /proc/filesystems を実行します。
あるディスクが WSL2 (Linux ファイル システム) を使用してマウントされている場合、そのディスクは ext4 ドライバーを使用して Windows ファイル システムにマウントできなくなります。

特定のパーティションのマウント

WSL 2 では、既定でディスク全体をマウントしようとします。 特定のパーティションをマウントするには、次を実行します。

wsl --mount <Diskpath> -p <PartitionIndex>

これは、ディスクが MBR (マスター ブート レコード) または GPT (GUID パーティション テーブル) のいずれかである場合にのみ機能します。 パーティション スタイル (MBR と GPT) について確認してください

マウント オプションの指定

マウント オプションを指定するには、次を実行します。

wsl --mount <DiskPath> -o <MountOptions>

例:

wsl --mount <DiskPath> -o "data=ordered"

Note

現時点では、ファイル システム固有のオプションのみがサポートされています。 ro, rw, noatime, ... などの汎用オプションはサポートされていません。

マウントせずにディスクをアタッチする

ディスク スキームが上のいずれのオプションでもサポートされていない場合は、次を実行してディスクをマウントせずに WSL 2 にアタッチできます。

wsl --mount <DiskPath> --bare

これにより、ブロック デバイスが WSL 2 内で使用できるようになるため、そこから手動でマウントできます。 WSL 2 内で使用可能なブロック デバイスの一覧を表示するには、lsblk を使用します。

マウント名の指定

Note

このオプションは、Microsoft Store から入手した WSL でのみ使用できます

既定では、マウントポイント名は物理ディスクまたは VHD の名前に基づいて生成されます。 これは、--name を使ってオーバーライドできます。 例:

wsl --mount <DiskPath> --name myDisk

ディスクのデタッチ

WSL 2 からディスクをデタッチするには、次を実行します。

wsl --unmount [DiskPath]

Diskpath を省略すると、アタッチされているすべてのディスクのマウントが解除され、デタッチされます。

Note

1 つのディスクのマウント解除に失敗した場合は、wsl --shutdown を実行して WSL 2 を強制的に終了させることで、ディスクをデタッチできます。

制限事項

  • 現時点では、ディスク全体のみを WSL 2 にアタッチできます。つまり、パーティションのみをアタッチすることはできません。 具体的には、ブート デバイスは Windows からデタッチできないため、wsl --mount を使用してそのデバイス上のパーティションを読み取ることはできません。

  • wsl --mount によってマウントできるのは、カーネルでネイティブでサポートされているファイルシステムのみです。 これは、wsl --mount を呼び出すことによって、インストールされているファイルシステム ドライバー (たとえば、ntfs-3g など) を使用することはできないことを意味します。

  • カーネルで直接サポートされていないファイルシステムは、--bare アタッチを介してマウントしてから、関連する FUSE ドライバーを呼び出すことができます。