「Linux」の観点から見ると、Windows 10の「ホスト」ファイルシステムが/mnt/c/
にマウントされていることは明らかです。しかし、Windowsから「Linux」ファイルシステムへのアクセスを取得することは可能ですか?もしそうなら、それはどこですか?
シングルルートファイルシステムは、Windows 10 Fall Creatorsの更新(2017年10月にリリース)までここにありました。
%LOCALAPPDATA%\Lxss\rootfs
たとえば、C:\Users\Vigo\AppData\Local\Lxss\rootfs\
その他のマウントポイントは、lxss
ディレクトリの1つ上のレベルにあります。たとえば、Linux内の独自のhome
ディレクトリは%LOCALAPPDATA%\Lxss\home
にあります。
Fall Creatorsのアップデート以降、Linuxの複数のインスタンスをインストールし、それらを並行して実行することが可能です。既存のインスタンス(別名レガシー)はそのディレクトリに残りますが、作成された新しいインスタンスは次の場所にあります。
%LOCALAPPDATA%\ Packages \<distribution_specific_name>_<ランダムな文字列>\ LocalState\rootfs
たとえば、私のUbuntu 18.04インストールは、
CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
警告:create、modifyまたはdeleteファイルが lxss またはWindowsの配布固有のツリー。
無害な操作は、ファイルの閲覧と読み取りのみです。詳細はこちら Microsoftブログページ を参照してください。
ビルド1903以降、実行中のディストリビューションのファイルにアクセスする別の方法があり、前述の問題が発生しないことに注意してください。
パス\\wsl$\<distribution_specific_name>\
を使用するだけで、ファイルを作成および変更できます。 AppDataは、ビルド1903でファイルにアクセスするためのサポートされている方法ではありません。
現在、複数のLinuxディストリビューションをインストールできます。したがって、各ディストリビューションの独自のファイルシステムが別のフォルダーに配置されます。
%USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
の下にあります。レジストリから情報を取得する
各ファイルシステムの場所は、Windowsレジストリから取得できます。データは以下にあります
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
PowerShellウィンドウを起動し、次のコマンドを実行してファイルシステムの場所を取得できます
PS> (Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | ForEach-Object {Get-ItemProperty $_.PSPath}) | select DistributionName, @{n="Path";e={$_.BasePath + "\rootfs"}}
次のような情報を持つテーブルを取得します
DistributionName Path
---------------- ----
Ubuntu C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
Ubuntu-18.04 C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
mydistro C:\wsl\mydistro\rootfs
lxRunOfflineを使用する
LxRunOffline は、WSLにインストールされたLinuxディストリビューションを管理するためのツールです。 LxRunOfflineを使用して、インストールされたディストリビューションが使用するディレクトリを取得できます
# lxrunoffline get-dir -n <name of the distro>
C:\> lxrunoffline get-dir -n backup
c:\wsl\installed\backup
C:\> lxrunoffline get-dir -n Ubuntu
C:\Users\Jaime\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState
WSL2の場合、次のようにWindows Explorerからホームディレクトリにアクセスできます。
\\wsl$
パーティーに遅れてすみません!
Microsoftがさらに変更/非表示にしたようですが、現在は次の場所にあります:
%USERPROFILE%\ AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows _ ?????????????\LocalState\rootfs
これは将来さらに変更される可能性があるため、.profileまたは.bashrcファイルのファイル検索を実行するというPGPの提案を実行してください。
Linuxサブシステムの新しいバージョンでは、packages
にファイルシステムがインストールされるため、フルパスは次のようになります。
C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\root
または:
C:\Users\myUserName\AppData\Local\Packages\UbuntuLinux.someUID\LocalState\rootfs\home\myLinuxUserName
...もちろんマウントポイントによって異なります。 .bashrc
のディレクトリ検索を実行すると、これらのパスが明らかになります...
または、Linuxシェル内でreadlink .
を使用して、現在のLinuxパスをWindowsクリップボードへの「DOS」パスとして投稿します。実際の物理パスを読み取るのに適した場所に貼り付けます。
エクスプローラーでWLSフォルダーを開くこのスクリプトを作成しました
cd C:\Users\%USERNAME%\AppData\Local\Packages\Canonical*\LocalState\rootfs\etc
Explorer %cd%
yourScript.cmdとして保存して実行するだけです