WSLでLinux用外付けHDDを簡単にマウント!専門ツールなしでデータにアクセスする方法

みなさん、こんにちは。

Linux環境で使っていたHDDをWindowsで利用したいと思ったことはありませんか?

通常、WindowsではLinuxのファイルシステム(ext4など)を直接認識できないため、専用のツールをインストールする必要があります。しかし、Windows Subsystem for Linux (WSL) があれば、そんな手間は不要です!

今回は、WSLを使ってLinuxで使っていた外付けHDDにアクセスする方法を解説します。もう専用ツールは必要ありません!

 


 

なぜWindowsはLinux HDDを認識できないのか?

 

WindowsとLinuxでは、ファイルシステムの形式が異なります。Windowsは主にNTFSやFAT32を使用しますが、Linuxはext4XFSBtrfsといった独自のファイルシステムを使用しています。そのため、WindowsはLinuxでフォーマットされたHDDをそのままでは読み込むことができないのです。

「Linux用のHDDを読み込みたい場面なんてない」と思われる方もいるかもしれませんが、市販のNAS機器はLinuxで動作している場合が多く、NASから取り出したHDDをWindowsで読み込みたいという場面はそれなりに発生します。

これまで、この問題を解決するにはExt2Fsdのようなサードパーティ製のツールをインストールするのが一般的でした。しかし、WSLが普及した現在、より手軽な方法でこの問題に対処できるようになりました。

 


 

WSLでLinux HDDをマウントする手順

 

1. 外付けHDDをWindowsに接続する

まず、Linuxで使っていたHDDを通常通りWindowsパソコンにUSB外付けHDDとして接続します。

重要:
「フォーマットしますか?」と聞かれても、絶対にキャンセルしてください。ここでフォーマットしてしまうと、HDD内のデータがすべて消えてしまいます。

 

2. Windows側でデバイスIDを調べる

次に、PowerShellを使って接続したHDDのデバイスIDを特定します。

管理者権限は不要ですので、通常のPowerShellを起動し、以下のコマンドを実行してください。

wmic diskdrive list brief

実行すると、以下のような形式でディスクの情報が表示されます。

Caption               DeviceID           Model               Partitions Size
MAKER MODEL_NAME      \\.\PHYSICALDRIVE1 MODEL_NAME          1          512105932800

ここで必要なのは、\\.\PHYSICALDRIVE1 のようなDeviceIDです。ご自身の環境に合わせて、目的のHDDのDeviceIDをメモしておきましょう。

 

3. WSLでHDDをマウントする

DeviceIDが特定できたら、いよいよWSLでHDDをマウントします。ここからの操作は管理者権限が必要です。必ず「管理者として実行」でPowerShellを起動してください。

直接マウントする場合(推奨)

ほとんどの場合、以下のコマンドで直接マウントできます。ファイルシステムの種類を指定しない場合は、ext4として扱われます。

wsl --mount <デバイス名> --partition <パーティション番号> --type <ファイルシステムの種類>
  • <デバイス名>: 先ほど調べたDeviceID(例: \\.\PHYSICALDRIVE1)を指定します。
  • <パーティション番号>: マウントしたいパーティションの番号を指定します。ディスク全体をアタッチしたい場合は指定不要です。
  • <ファイルシステムの種類>: HDDのファイルシステムを指定します(例: ext4, xfs, btrfsなど)。WSLがサポートしているファイルシステムは、WSL内でcat /proc/filesystemsを実行することで確認できます。

例: \\.\PHYSICALDRIVE1の1番目のパーティション(ext4形式)をマウントする場合

wsl --mount \\.\PHYSICALDRIVE1 --partition 1 --type ext4

マウントが成功すると、WSLの環境内で自動的に/mnt/wsl/<ディスク名>/にアクセスできるようになります。

補足:
vfat(WindowsでいうFAT32)もWSLでマウント可能ですが、Windows側で既にマウントされているドライブをWSLでマウントすることはできません。Windows側でマウントされているドライブは、WSLの/mnt/c/mnt/dのように自動的にマウントされています。

 

暗号化されたパーティションや特殊なケースの場合

直接マウントできない暗号化されたパーティションや、より低レベルでアクセスしたい場合は、まずブロックデバイスとしてマウントし、WSL内で改めてマウントします。

Windowsでマウントされている場合はアンマウントする

もしそのHDDがWindowsで何らかの形でマウントされている場合は、先にWindows側でアンマウントしておいてください。
 

ブロックデバイスとしてマウントする

管理者権限つきのPowerShellで以下のコマンドを実行します。

wsl --mount <デバイス名> --bare

<デバイス名>には、もちろん先ほど調べたDeviceIDを指定します。
 

WSL内で認識されているか確認

WSLを起動し、以下のコマンドでHDDが認識されているか確認します。

sudo fdisk -l

/dev/sdXのような形で認識されているはずです(Xa, b, cなどのアルファベット)。パーティションが作成されていれば、/dev/sdX1/dev/sdX2のように表示されます。
 

WSL内でマウントする

例えば、Veracryptで暗号化された/dev/sdX1パーティションがあり、それがext4でフォーマットされている場合を想定します。事前にWSL内にVeracryptがインストールされている必要がありますが、以下のコマンドでマウントできます。

veracrypt /dev/sdX1 /mnt/yourmountpoint # /mnt/yourmountpointは任意のディレクトリ

これで、WSL内で目的のデータにアクセスできるようになります。

 


 

使い終わったら忘れずにアンマウント!

 

HDDへのアクセスが終わったら、必ずアンマウントしてください。アンマウントせずにWindowsをシャットダウンしたり、いきなりケーブルを抜いたりすると、ファイルシステムが破損する恐れがあります。

 

直接マウントしていた場合

WSLでファイル操作を行っていないことを確認した上で、管理者権限つきのPowerShellで以下のコマンドを実行します。

wsl --unmount <デバイス名>

 

ブロックデバイスとしてマウントし、WSL内でさらにマウントしていた場合

WSL内でアンマウントする

例えばVeracryptでマウントしていた場合は、WSL内で以下のコマンドを実行します。

veracrypt -d /mnt/yourmountpoint

PowerShellでアンマウントする

次に、管理者権限つきのPowerShellで以下のコマンドを実行します。

wsl --unmount <デバイス名>

 


 

まとめ

 

WSL環境を構築していれば、WindowsでLinux用外付けHDDを使うのは決して難しくありません。専用ツールをインストールする手間もなく、コマンド一つで手軽にデータにアクセスできるようになります。

もしLinuxで使っていたHDDのデータにアクセスできなくて困っていた方は、ぜひこの方法を試してみてはいかがでしょうか?

 

本日も最後までお読みいただきありがとうございました。

それでは、よいWSLライフを!

「WSLでLinux用外付けHDDを簡単にマウント!専門ツールなしでデータにアクセスする方法」への1件のフィードバック

  1. ピンバック: WSL2でUSBデバイスを「完璧に」使う夢、そして現実 - ビューローみかみ

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール