みねっちょのマイコン関係ブログ

組込開発系フリーソフトやハードの情報発信ブログ

WSL1 用に C: ドライブ直下にリンクを張る

サイト内 Google 検索:


WSL1 で導入される LinuxWindows の非常に深いディレクトリに置かれるので、Windows ネイティブ側とのやりとりが面倒です。また、【こちらの別記事】で解説した様に、WSL 支配下のファイルには特別なプロパティが設定されています。

本記事では、Windows の C: ドライブ直下に、WSL1 で導入した Ubuntu-20.04 とのファイルのやりとりの場所 (Sandbox) を作る方法を紹介します。

尚、WSL1 上の Ubuntu-20.04 のファイルシステムの場所は、Windows 見えには次の通りとなります。

%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\

目次:

WSL の「~」の下にディレクトリを作る:

WSL 配下のディレクトリに場所を作ります。フォルダに付与されるプロパティの関係で、実体は必ず WSL 配下に置く必要が有ります。ここでは、ユーザーのホームディレクトリ「~」の下に、「Sandbox_Ubuntu」というディレクトリを作る事にします。また、ディレクトリ内に確認用のファイル ABC.txt を作る事にします。
WSL 用のターミナルを開いて次のコマンドを打ちます。

mkdir Sandbox_Ubuntu
cd Sandbox_Ubuntu
cat <<! > ABC.txt
I am here.
!

Windows 側からリンク (ジャンクション) を張る:

以下の例は、Ubuntu-20.04 の場合です。Windows 側から Ubuntu-20.04 側へ Windows のジャンクションを張ります。

Windowsコマンドプロンプトを開いて、次の通りコマンドを打ちます。

cd c:\
mklink /j Sandbox_Ubuntu %USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\%USERNAME%\Sandbox_Ubuntu

mklink コマンドが正しく認識されれば、次の様にメッセージが出ます。

「Sandbox_Ubuntu <<===>> C:\Users\XXXXXX\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\XXXXXX\Sandbox_Ubuntu のジャンクションが作成されました」

正しくリンクが作成されたことの確認:

Windowsエクスプローラを開いて 「C:\Sandbox_Ubuntu」に移動します。

ABC.txt というファイルが有る事を確認し、クリックして開いてみます。

「I am here.」という文字列を確認できれば完了です。

問題点:

尚、私の環境だけなのか、全ての人で発生するのか分かりませんが、Windows 側からエクスプローラこのフォルダにファイルを入れると、rwx 属性が 0 (----------) になってしまいます。移動したファイルは「chmod +r ファイル名」で r 属性を付けないと WSL 側で読めません。

WSL 側で「ダウンロード」へシンボリックリンクを張る:

ついでに、WSL の Ubuntu 上に、頻繁に使うであろう Windows の「ダウンロード」フォルダへシンボリックリンクを張っておきます。WSL の ubuntu のターミナルを開いて、次のコマンドを実行します。

cd ~
ln -s /mnt/c/Users/$LOGNAME/Downloads downloads
ls -l downloads
ls downloads/*

最後の行で Windows 側のファイルが見えれば正しくリンクが作成出来て居ます。

 


【WSL 関係の目次へ戻る】