ドライブレターなしのNTFSボリュームをWSLからマウントして自在にアクセスする方法

Windows上でフォルダーとしてマウントされたNTFSボリュームをWSL経由で扱えたら、ファイル操作や開発作業の幅が一気に広がります。筆者自身も初めてこの方法を知ったときは「本当にこんなことができるのか」と半信半疑でしたが、やってみると意外と簡単でした。今回は、ドライブレターを割り当てないフォルダー形式のNTFSボリュームをUbuntu/WSLから手軽にアクセスする方法をご紹介します。

WSLでNTFSフォルダーにアクセスできる仕組み

WSL(Windows Subsystem for Linux)は、WindowsとLinuxのファイルシステムを連携させる機能を持っています。標準的にはCドライブやDドライブなど、ドライブレターが割り当てられた領域を/mnt/c、/mnt/dのように参照できる仕組みです。しかし、ドライブレターがなくフォルダーとしてマウントされたNTFSボリュームの場合は、少し工夫が必要になります。

WSLが使用するdrvfsとは

WSL上からWindowsのファイルシステムを取り扱うために使われるのがdrvfsという仕組みです。Linux側からは特殊なファイルシステムとして認識され、Windows上のフォルダーをそのままマウントすることができます。標準では/mnt/ディレクトリ下にドライブレター付きのボリュームがマウントされていますが、フォルダー形式のNTFSボリュームも同様にmountコマンドでマウント指定が可能です。

ドライブレターが無いときの落とし穴

一般的にドライブレターが割り当てられている場合は/mnt/cや/mnt/dなどのディレクトリを通じてアクセスできますが、フォルダーとしてマウントされた場合はWindowsエクスプローラー上のパスがC:\Users\me\folderXなどになり、ドライブレターが無い代わりに通常のフォルダの一部に見えます。この形式だとWSL上ではデフォルトでは認識されず、mountコマンドで手動マウントが必要になります。

私自身、開発用に作った追加ボリュームをフォルダー形式でマウントしていたところ、WSLでアクセスできず困ったことがありました。mountコマンドを使って簡単に解決できたので、最初に知っておきたかったと感じています。

NTFSフォルダをWSLにマウントする手順

ここからは具体的な手順です。C:\Users\me\folderXがNTFSボリュームとしてWindows上でフォルダー形式でマウントされているケースを想定します。

マウント先ディレクトリを作る

まず、WSL側にマウント先ディレクトリを用意します。以下は一例であり、場所や名前は好きに設定してかまいません。

sudo mkdir /mnt/folderX

パス名を分かりやすくする

他のマウントポイントとの混同を防ぐために、ディレクトリ名はfolderXやntfs-mountなど分かりやすい名前にすると便利です。

drvfsを指定してマウントする

Windowsのパスを引用符でくくり、-t drvfsオプションを指定してマウントします。パスはバックスラッシュをそのままにし、C:\Users\me\folderXのように書きます。

sudo mount -t drvfs 'C:\Users\me\folderX' /mnt/folderX

これで、/mnt/folderX内でWindows側のフォルダーを操作できるようになります。

マウントオプションを活用する

mntオプションを追加すると、ファイルの大文字小文字の扱いやパーミッションの設定を制御できます。必要に応じて下記のように指定することも可能です。

sudo mount -t drvfs 'C:\Users\me\folderX' /mnt/folderX -o metadata,case=off

metadataオプションを付けるとLinux形式のファイルパーミッションを設定できるなど、環境や用途に合わせた柔軟な調整が可能になります。

WSLからWindowsのフォルダーを直接操作できるのは、開発効率を高める大きなメリットです。

アンマウントの手順

マウントしたフォルダが不要になった場合や再マウントが必要な場合は下記コマンドでアンマウントできます。

sudo umount /mnt/folderX

もしくはumount -lを使って強制的にアンマウントすることも可能です。誤ってアンマウントするとWindows側も不安定になると思われがちですが、Windows上の実体フォルダは通常通り使えますので大きな問題にはなりません。

Windowsエクスプローラーからのアクセスと注意点

WindowsエクスプローラーとWSL上のマウントポイントは性質が異なるため、フォルダの見え方が違います。エクスプローラーはあくまでC:\Users\me\folderXというパスでそのフォルダーを認識しており、/mnt/folderXはあくまでWSL内の位置づけになります。

WSL経由のパスをエクスプローラーで直接開けない理由

Linux上の/mnt/folderXという仮想的なパスは、Windowsから見ると特殊なドライブ構造になっています。Windowsは標準的には/mnt/folderXを理解できないため、エクスプローラーで直接パスを指定してもエラーになる場合があります。実際のファイルはC:\Users\me\folderXとして存在しているため、エクスプローラーで操作するときはこの元のパスを使えば問題ありません。

WSLでの作業パスとWindows上の実体パスを使い分ける

同じNTFSボリュームでも、WSL側からは/mnt/folderX、Windows側からはC:\Users\me\folderXという2種類のパスが使えます。操作性や目的に応じてそれぞれのパスを使い分けると良いでしょう。

WSL上でファイルを動かした際にWindowsの操作と競合すると、場合によってはファイル更新のタイミングに齟齬が生じることもあります。

WSLマウントとWindowsフォルダの比較表

下の表はWSL側とWindows側でどのようにパスが異なるかをまとめたものです。実作業やトラブルシューティングの際に参照すると便利です。

項目 Windowsのパス WSLでのマウント先
実体の場所 C:\Users\me\folderX /mnt/folderX
操作ツール エクスプローラーやPowerShell Ubuntu/WSLのシェルコマンド
アクセス方法 通常のフォルダーとしてアクセス mountコマンドでdrvfsを指定
メリット WindowsのGUI操作ができる Linuxコマンドをフル活用できる
デメリット Linuxコマンドとは相性が悪い エクスプローラーで直接開けない

使い分けのコツ

開発作業やスクリプトの実行がメインならWSLマウント側を使い、ファイルをドラッグ&ドロップしたりGUI操作中心の作業が多い場合はWindows側から使うのがおすすめです。両方の環境を連携させると格段に作業効率が上がるので、ぜひ試してみてください。

今では私はWSLからGit操作やビルドを行い、Windows側から画像やドキュメントの管理をしています。両方の世界を自由に行き来できるのは本当に便利です。

まとめとポイント

ドライブレターなしでフォルダーとしてマウントされているNTFSボリュームにも、WSL上からアクセスできます。mountコマンドとdrvfsを利用するだけで、Windows側のフォルダをそのままWSLで取り扱えるようになります。エクスプローラーからは従来通りC:\Users\me\folderXのパスでアクセスできるため、操作性も変わりません。開発に限らず、データ管理やバックアップなどさまざまなシーンで活用できるはずです。

ワークフロー全体をWindowsとLinuxで分けたい方や、コマンドラインの自動化を進めたい方にとっては必須テクニックと言えます。

一度マウントを試してしまえば、その便利さにハマってしまいました。WindowsのフォルダがまるでLinuxシステムの一部みたいに扱えるので、開発環境の構築やファイル操作が本当にスムーズになりました。

以上の手順とポイントを押さえておけば、NTFSフォルダーとしてマウントされたボリュームをUbuntu/WSLから快適に操作できます。WindowsとLinux両方の利点を活かしながら、より柔軟にファイル運用をしてみましょう。

コメント

コメントする