WSL2におけるソフトリンク対応は実際どうなってる?
ここからは具体的に、NTFS上に作られたシンボリックリンクをWSL2からアクセスしてみよう。WSL2では、Win32側へのアクセスに9pプロトコルを使い、仮想的なネットワークを介して接続する。これは、WSL2が仮想環境にあり、直接NTFSをアクセスすることができないからだ。逆も同じで、Win32側からは、WSL2のExt4ファイルシステムを9pプロトコルを使う「ネットワーク共有フォルダ」としてアクセスする。
NTFS側にハードリンク、ソフトリンクを作り、これをWSL2側からlsコマンドなどでアクセスしてみる。まずはハードリンクだが、予め、NTFS上にハードリンクを作成しておく。Windowsでは、以下のコマンドを使うことでハードリンクしているファイルを表示させることができる。
なお、「比較.txt」は比較のためのハードリンクしていないファイルである。
fsutil hardlink list ファイル名
Linuxでは、ファイルをinodeと呼ばれるデータ(構造体)を複数使ってファイルやディレクトリを管理している、1つ1つのinodeには、inode番号が割り振られ、inode番号を使うことでinodeをアクセスできる。このため、inode番号をファイルを指定するために利用できる。
実際には、Linuxでのファイルアクセスは最終的にinode番号で実行されている。もし、ファイルが同じinode番号を持っていたら、それはハードリンクされた同一のファイルだと判定できる。Linuxでinode番号を表示させるには、lsコマンドに「-i」オプションを付ける。NTFS上のハードリンクのあるフォルダーでWSL2からlsコマンドを実行させると、同じinode番号が表示され、同一のファイルであることがわかる。
ソフトリンクでは、NTFS側にシンボリックリンク(ファイル、ディレクトリ)、ジャンクション(ディレクトリ)をそれぞれ、同一ドライブ、別ドライブとして作成した。別ドライブは、WSL2側ではマウントしていないため、リンク先が不明になるパターンである。
同様に、ここをlsコマンドで表示させてみる。
ls -lコマンドでは、各項目の先頭の1文字が対象のタイプを表し、“l”になっているものがシンボリックリンクである。NTFSシンボリックリンクもジャンクションもどちらもシンボリックリンクとして扱われている。また、リンク先を同時に表示する。矢印の後ろがリンク先で、項目が赤で表示されているのは、リンク先が見つからないものだ。WSL2側ではDドライブをマウントしていないため、リンク先がないように見える。
このアップデートにより、WSL2からでも、NTFS上のファイルやディレクトリを扱いやすくなった。ジャンクションとNTFSシンボリックリンクを同一視しているが、実際には区別する必要はなく問題はないだろう。なお、WSL2側からNTFS上でのシンボリックリンクの作成はまだ未完成で、なぜかジャンクションを作ってしまう。WSL1では、正しくNTFSシンボリックリンクを作っていたので、今後のアップデートで対応すると思われる。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











