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
コマンドを使用して直接マウントできます。 まず、ディスクを識別する必要があります。
ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
ディスクのパスは、[DeviceID] 列で確認できます。 通常は
\\.\PHYSICALDRIVE*
の形式です。ディスクをマウントする - PowerShell を使用して、上で検出されたディスク パスを使用してディスクをマウントできます。
wsl --mount <DiskPath>
パーティション分割されたディスクのマウント
ファイル形式やどのようなパーティションがあるか不明なディスクがある場合は、以下の手順に従ってマウントできます。
ディスクを識別する - Windows で使用可能なディスクの一覧を表示するには、次を実行します。
GET-CimInstance -query "SELECT * from Win32_DiskDrive"
ディスクのパスは [DeviceID] 列に列挙されます。通常は
\\.\PHYSICALDRIVE*
の形式です。WSL 2 にマウントするパーティションの一覧を表示して選択する - ディスクが識別されたら、次を実行します。
wsl --mount <DiskPath> --bare
これにより、WSL 2 でディスクを使用できるようになります。 (この例では、
<DiskPath>
は\\.\PHYSICALDRIVE*
です。一度アタッチされたパーティションは、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 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 ドライバーを呼び出すことができます。
Windows Subsystem for Linux