WSL(Windows Subsystem for Linux)は、Windows上でLinuxを手軽に動かせる便利な環境です。
でも「LinuxのシェルからWindowsのファイルにアクセスしたい」「USBメモリや別ドライブをマウントしたい」と思ったとき、どう操作すればよいか迷ってしまうことはありませんか?
この記事では、WSL上でWindowsのドライブや外部メディアをマウント・利用する方法をわかりやすく解説します。WSL1とWSL2の違いにも触れながら説明するので、ぜひ参考にしてください。
WSL1とWSL2の基本的な違い

アーキテクチャの違い
項目 | WSL1 | WSL2 |
---|---|---|
仕組み | システムコール変換 | 軽量仮想マシン |
ファイルI/O性能 | Windows側が高速 | Linux側が高速 |
ネットワーク | Windows と同じIP | 独立したIP |
メモリ使用量 | 少ない | やや多い |
マウント機能の違い
WSL1:
- Windowsドライブの自動マウント
- drvfsによるWindows ファイルシステムアクセス
- 基本的なマウント機能
WSL2:
- WSL1の全機能
- Linuxネイティブファイルシステムのマウント
- 物理ディスクへの直接アクセス
- より高速なLinux ファイルI/O
WSLでWindowsファイルシステムにアクセスする
自動マウントされる /mnt ディレクトリ
WSLを起動すると、WindowsのドライブはすでにWSL環境にマウントされています。
Windows側 | WSL上のパス | 内容 |
---|---|---|
C:\ | /mnt/c | システムドライブ |
D:\ | /mnt/d | データドライブ |
E:\ | /mnt/e | 外付けドライブなど |
実際の使用例
Windowsのデスクトップに移動:
cd /mnt/c/Users/ユーザー名/Desktop
ls -la # デスクトップのファイル一覧
ドキュメントフォルダの確認:
cd /mnt/c/Users/ユーザー名/Documents
pwd # 現在のパスを確認
Windows側でファイル作成:
# WSLからWindowsデスクトップにファイル作成
echo "Hello from WSL" > /mnt/c/Users/ユーザー名/Desktop/test.txt
パスの書き方のコツ
Windows パスをWSL形式に変換
Windows形式:C:\Users\username\Documents\project
WSL形式:/mnt/c/Users/username/Documents/project
空白を含むパスの扱い
# 空白があるパスは引用符で囲む
cd "/mnt/c/Program Files"
# またはエスケープ
cd /mnt/c/Program\ Files
手動でのマウント操作
基本的なマウントコマンド
Windowsドライブのマウント
# 基本形式
sudo mount -t drvfs <Windows_path> <mount_point>
# 例:Dドライブをマウント
sudo mkdir -p /mnt/external
sudo mount -t drvfs D: /mnt/external
ネットワークドライブのマウント
# SMB共有をマウント
sudo mkdir -p /mnt/networkdrive
sudo mount -t drvfs '\\server\share' /mnt/networkdrive
# 認証が必要な場合
sudo mount -t drvfs '\\server\share' /mnt/networkdrive -o username=user,password=pass
マウントオプションの活用
よく使うオプション
オプション | 効果 | 使用例 |
---|---|---|
uid=1000 | ファイル所有者を指定 | マウント時の権限設定 |
gid=1000 | グループを指定 | マウント時の権限設定 |
case=off | 大文字小文字を区別しない | Windows互換性 |
metadata | Linuxメタデータを有効 | chmod/chownの動作 |
実際の使用例
# 権限を指定してマウント
sudo mount -t drvfs D: /mnt/external -o uid=1000,gid=1000
# 大文字小文字を区別せずマウント
sudo mount -t drvfs E: /mnt/usb -o case=off
# メタデータを有効にしてマウント
sudo mount -t drvfs F: /mnt/data -o metadata
WSL2でのLinuxファイルシステムマウント

物理ディスクへの直接アクセス
WSL2では、ext4、XFS、BtrfsなどのLinuxファイルシステムを直接マウントできます。
基本的な手順
1. ディスク番号の確認
Windows側(管理者権限のPowerShell):
# ディスク一覧表示
Get-Disk
# または
wmic diskdrive list brief
2. WSLでのマウント
# 基本形式
wsl --mount \\.\PHYSICALDRIVE<番号> --partition <パーティション番号> --type <ファイルシステム>
# 例:3番目のディスクの1番目のパーティション(ext4)
wsl --mount \\.\PHYSICALDRIVE3 --partition 1 --type ext4
ファイルシステム別の例
ext4ファイルシステム:
wsl --mount \\.\PHYSICALDRIVE2 --partition 1 --type ext4
XFSファイルシステム:
wsl --mount \\.\PHYSICALDRIVE2 --partition 1 --type xfs
Btrfsファイルシステム:
wsl --mount \\.\PHYSICALDRIVE2 --partition 1 --type btrfs
マウント後のアクセス
マウントされたLinuxファイルシステムは、デフォルトで/mnt/wsl/
以下にマウントされます:
# マウントポイントの確認
ls -la /mnt/wsl/
# マウントされたファイルシステムにアクセス
cd /mnt/wsl/PHYSICALDRIVE2p1
ls -la
アンマウント操作
基本的なアンマウント
手動マウントしたドライブのアンマウント
# 基本形式
sudo umount <mount_point>
# 例
sudo umount /mnt/external
sudo umount /mnt/usb
強制アンマウント
# プロセスが使用中でアンマウントできない場合
sudo umount -f /mnt/external
# 遅延アンマウント(使用が終了したらアンマウント)
sudo umount -l /mnt/external
WSL2の物理ディスクアンマウント
# PowerShellまたはコマンドプロンプトから
wsl --unmount \\.\PHYSICALDRIVE3
# すべてのディスクをアンマウント
wsl --unmount
マウント設定のカスタマイズ

/etc/wsl.conf での設定
WSLの動作は/etc/wsl.conf
ファイルで細かく制御できます。
基本的な設定ファイル
# /etc/wsl.conf ファイルを作成・編集
sudo nano /etc/wsl.conf
設定例:
[automount]
enabled = true # 自動マウントを有効
root = /mnt/ # マウントポイントのルート
options = "metadata,uid=1000,gid=1000,umask=22,fmask=11"
[network]
generateHosts = true # /etc/hostsを自動生成
generateResolvConf = true # /etc/resolv.confを自動生成
[interop]
enabled = true # Windows実行ファイルの実行を許可
appendWindowsPath = true # Windows PATHを追加
設定の詳細説明
automountセクション:
enabled
:Windowsドライブの自動マウントroot
:マウントポイントのベースディレクトリoptions
:マウント時のデフォルトオプション
よく使うオプション:
metadata
:chmod/chownを有効化uid=1000
:ファイル所有者をuser(UID 1000)にgid=1000
:グループをuser(GID 1000)にumask=22
:ディレクトリ権限を755にfmask=11
:ファイル権限を644に
設定の反映
設定を変更した後は、WSLを再起動する必要があります:
# PowerShellまたはコマンドプロンプトから
wsl --shutdown
# WSLを再起動
wsl
実用的な使用例
開発プロジェクトでの活用
Windowsとの連携開発
# Windowsのプロジェクトフォルダにアクセス
cd /mnt/c/projects/myapp
# Linuxツールでファイル処理
find . -name "*.js" | xargs grep "TODO"
# ログファイルの解析
tail -f /mnt/c/logs/application.log
バックアップとデータ移行
# WindowsからLinuxファイルシステムへのバックアップ
rsync -av /mnt/c/Users/user/Documents/ /mnt/wsl/backup/
# 外付けHDDからの復元
sudo mount -t drvfs E: /mnt/backup
cp -r /mnt/backup/project/* /home/user/workspace/
システム管理での活用
ログファイルの監視
# Windowsのイベントログ(CSV形式)を監視
tail -f "/mnt/c/Windows/System32/winevt/Logs/Application.evtx"
# IISログの解析
awk '{print $1}' /mnt/c/inetpub/logs/LogFiles/W3SVC1/*.log | sort | uniq -c
ファイルシステムの健全性チェック
# 外付けHDDのチェック(ext4の場合)
wsl --mount \\.\PHYSICALDRIVE2 --partition 1 --type ext4
sudo fsck -f /dev/sdc1
パフォーマンスの最適化

ファイルI/Oパフォーマンス
WSL1とWSL2の使い分け
Windows側ファイルメイン:
- WSL1を推奨
/mnt/c/
でのファイル操作が高速
Linux側ファイルメイン:
- WSL2を推奨
- WSL2のLinuxファイルシステムが高速
効率的なファイル配置
# 悪い例:WSL2でWindows側ファイルを頻繁にアクセス
cd /mnt/c/projects/
make # 遅い
# 良い例:プロジェクトをLinux側にコピー
cp -r /mnt/c/projects/myapp ~/workspace/
cd ~/workspace/myapp
make # 高速
マウントオプションの最適化
大量ファイル処理向け
# ケースインセンシティブで高速化
sudo mount -t drvfs D: /mnt/data -o case=off
# メタデータなしで軽量化
sudo mount -t drvfs E: /mnt/external -o noatime
トラブルシューティング
よくある問題と解決法
マウントできない場合
問題:mount: /mnt/external: mount failed: Operation not permitted
解決法:
# 管理者権限で実行
sudo mount -t drvfs D: /mnt/external
# WSLを再起動
wsl --shutdown
wsl
ファイルが見つからない
問題:Windowsで作成したファイルがLinux側で見えない
解決法:
# マウント状態を確認
mount | grep drvfs
# 再マウントを試行
sudo umount /mnt/c
sudo mount -t drvfs C: /mnt/c
権限問題
問題:ファイルの権限が適切でない
解決法:
# メタデータオプション付きで再マウント
sudo umount /mnt/external
sudo mount -t drvfs D: /mnt/external -o metadata,uid=1000,gid=1000
パフォーマンス問題
遅いファイルアクセス
WSL2でWindows側ファイルアクセスが遅い場合:
# ファイルをLinux側にコピーして作業
cp /mnt/c/large_project ~/workspace/
cd ~/workspace/large_project
# 作業後にWindows側に戻す
rsync -av ~/workspace/large_project/ /mnt/c/large_project/
メモリ使用量の最適化
WSL2のメモリ制限設定:
%USERPROFILE%\.wslconfig
ファイルを作成:
[wsl2]
memory=4GB
processors=2
swap=1GB
localhostForwarding=true
セキュリティ考慮事項

アクセス権限の管理
適切な権限設定
# セキュアなマウント(読み取り専用)
sudo mount -t drvfs D: /mnt/readonly -o ro
# 特定ユーザーのみアクセス可能
sudo mount -t drvfs E: /mnt/private -o uid=1000,gid=1000,umask=077
ネットワークドライブの認証
# 認証情報を環境変数で管理
export SMB_USER="username"
export SMB_PASS="password"
# 認証情報付きマウント
sudo mount -t drvfs '\\server\share' /mnt/network -o username=$SMB_USER,password=$SMB_PASS
まとめ
Windows Subsystem for Linux(WSL)でのマウント機能について、主要なポイントをまとめます:
基本的なマウント方法
- 自動マウント:Windowsドライブは
/mnt/c
などに自動配置 - 手動マウント:
mount -t drvfs
でドライブや共有フォルダをマウント - WSL2の新機能:
wsl --mount
でLinuxファイルシステムに直接アクセス
実用的な活用法
- 開発環境:WindowsとLinuxツールの組み合わせ
- データ移行:異なるファイルシステム間でのファイル移動
- システム管理:ログ監視やバックアップ作業
パフォーマンス最適化
- ファイル配置:WSL1/WSL2の特性に応じた使い分け
- マウントオプション:用途に応じたオプション選択
- 設定ファイル:
/etc/wsl.conf
でのカスタマイズ
セキュリティ配慮
- 権限管理:適切なuid/gid設定
- アクセス制御:読み取り専用マウントなど
- 認証情報:ネットワークドライブの安全な接続
コメント