WSL2 から Windows11 のファイルシステムへアクセスする方法

## はじめに

### 説明
WSL2 から Windows11 のファイルシステムへアクセスする方法について記載します。
当初、これが出来ないものだと思ってました。
と言うのも、WSL側で pwd コマンドを実行すると、以下のように出力されます。

```bash
test-ubuntu@user:~$ pwd
/home/test-ubuntu
test-ubuntu@user:~$
```

元々、Windows11 で Cドライブ直下にあるフォルダへアクセスし、そこにあるファイルを色々といじりたかったのですが、普段から Linux コマンドに慣れている私からしたらコマンドプロンプトは使いにくい。

その点、WSL2 に関しては Linux コマンドが使えますが、上記で確認した通り「そもそも Windows とはディレクトリ構造が違うのではないか。Windows の Cドライブへのアクセスなどは出来ない感じかな」と思いました。
それを、ボソッとツイートしたらフォロワー様が教えてくれましたので、備忘録も兼ねて記事にしました。

WSL2 のインストール方法は下記のページで解説してますので、まだの方はそちらのご確認下さい。

https://qiita.com/good_engineer00/items/4347dcc3d381e8e7d8fa


**環境**

- Windows 11 home
- WSL の Ubuntu-20.04

**【前提】WSL について**

WSL（indows Subsystem for Linux）は、Windows上で Linux の環境を直接実行出来るソフトウェアです。
仮想化ソフト（VirtualBox など）などのインストールが必要ないので、あたかも Windows に Ubuntu をインストールしたかのような感じで使えるのです。
さくっと Linux コマンドを試したい時など、いちいち VirtualBox を起動して VM を起動して～などの手順がなくなり、ワンクリックで立ち上げるようになる。というお話です。

## 手順

### /mnt パスを使う
「/mnt」というパスは、Windows 上のファイルシステムにアクセスするためのマウントポイントです。
これにより、WSL 上で Windows の Cドライブのファイルに直接アクセスできます。
「drvfs」と記載されているのが、Cドライブですね。その右に書いているのがパスです。

```bash
test-ubuntu@user:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
none            3.9G  4.0K  3.9G   1% /mnt/wsl
none            476G  174G  303G  37% /usr/lib/wsl/drivers
none            3.9G     0  3.9G   0% /usr/lib/wsl/lib
/dev/sdc       1007G  1.4G  955G   1% /
none            3.9G   88K  3.9G   1% /mnt/wslg
rootfs          3.9G  1.9M  3.9G   1% /init
none            3.9G     0  3.9G   0% /dev
none            3.9G     0  3.9G   0% /run
none            3.9G     0  3.9G   0% /run/lock
none            3.9G     0  3.9G   0% /run/shm
none            3.9G     0  3.9G   0% /run/user
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
none            3.9G   72K  3.9G   1% /mnt/wslg/versions.txt
none            3.9G   72K  3.9G   1% /mnt/wslg/doc
drvfs           476G  174G  303G  37% /mnt/c
test-ubuntu@user:~$
```

例えば、WSL2 を開いて、「cd /mnt/c」と入力することで、以下のように「C:\」ドライブに移動することができます。

```bash
test-ubuntu@user:~$ cd /mnt/c
test-ubuntu@user:/mnt/c$
```

後はもう簡単です。

例えば、Windows11 で「Cドライブ」→「Users」→「xxx」→「OneDrive」→「Documents」の中に作った「test」フォルダまで行きたいなら以下の通りで OK です。（ Users の後の "xxx" は、各々の ユーザー名が入ります）

```bash
test-ubuntu@user:~$ 
test-ubuntu@user:~$ cd /mnt/c/Users/xxx/OneDrive/Documents/test/
test-ubuntu@user:/mnt/c/Users/xxx/OneDrive/Documents/test$
test-ubuntu@user:/mnt/c/Users/xxx/OneDrive/Documents/test$ ls -l
total 0
-rwxrwxrwx 1 test-ubuntu test-ubuntu 0 May  3 21:15 testfile_1
-rwxrwxrwx 1 test-ubuntu test-ubuntu 0 May  3 21:15 testfile_2
-rwxrwxrwx 1 test-ubuntu test-ubuntu 0 May  3 21:15 testfile_3
test-ubuntu@user:/mnt/c/Users/xxx/OneDrive/Documents/test$
```

testフォルダまで移動出来ましたし、その中にあるファイルも ls でちゃんと確認できています。
これで、もうコマンドプロンプトを開かずとも、Windows11 のファイルシステムへアクセスし操作が出来るわけです。

### 【補足】WSL2で Windows のファイルを操作し、パーミッション、オーナーの変更といった権限管理をしたい場合の設定方法

WSL2 で Windows のファイルを操作し、パーミッション（ファイルの実行権限）やオーナーの変更といった権限変更はエラーになります。
これは NTFS フォーマットの管理下にファイルが存在しているからと言われています。
WSL の設定ファイル（/etc/wsl.conf）を以下の記事を参考に修正することで、さらに利便性が向上しますので、良かったらこちらも見てみて下さい。

https://qiita.com/cabbage_lettuce/items/acecfaf270b564d8c5aa


## 終わり

当初は、WSL2 と Windows11 は、ディレクトリ構造が全然違うっぽいので、無理だと思ってましたが普通に出来ましたね。さすが、WSL2 です。。
Windows では、ls などが dir だったりなど Linux に慣れている人からするとかなり使いずらかったわけですが、今回のこの方法を使えばファイルシステムにアクセス出来るので安心です。

以上になります。
ここまで見ていただき、ありがとうございます。
又、教えて下さったフォロワー様ありがとうございます。