Совершенно очевидно, что файловая система "хоста" Windows 10 смонтирована в /mnt/c/
с точки зрения "Linux". Но возможно ли получить доступ к файловой системе "Linux" из Windows? Если так, где это?
4 ответа
Единственная корневая файловая система находилась здесь до обновления Windows 10 Fall Creators (выпущенного в октябре 2017 года):
%USERPROFILE%\AppData\Local\Lxss\rootfs
Например, C:\Users\Vigo\AppData\Local\Lxss\rootfs\
Другие точки монтирования расположены на один уровень выше в каталоге lxss
. Например, ваш собственный home
каталог в Linux будет находиться в папке %USERPROFILE%\AppData\Local\Lxss\home
.
Начиная с обновления Fall Creators, можно установить более одного экземпляра Linux и запустить их параллельно. Существующий экземпляр (он же устаревший) останется в своем каталоге, но новые созданные экземпляры находятся в:
%USERPROFILE%\AppData\Local\Packages\<distribution_specific_name>_<random_string>\LocalState\rootfs
Например, моя установка Ubuntu 18.04 находится под
CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscкаталог.
Предупреждение: не создавайте, не изменяйте и не удаляйте файлы, расположенные под конкретным деревом lxss или дистрибутива, из Windows.
Изучение и чтение файлов - единственная безобидная операция. См. Эту страницу блога Microsoft для деталей.
Обратите внимание, что начиная с Build 1903, существует альтернативный способ доступа к файлам работающего дистрибутива, в котором не обнаружены ранее упомянутые проблемы.
Просто используйте путь \\wsl$\<distribution_specific_name>\
и вы сможете создавать и изменять файлы. AppData по-прежнему не поддерживается для доступа к файлам в сборке 1903.
В настоящее время вы можете установить несколько дистрибутивов Linux. Поэтому каждый дистрибутив будет иметь свою собственную файловую систему, расположенную в отдельной папке.
- Если вы устанавливаете некоторые дистрибутивы Linux из Магазина Windows, файловые системы находятся в
%USERPROFILE%\AppData\Local\Packages\...\LocalState\rootfs
- Если вы установили, переместили или продублировали дистрибутив Linux с помощью LxRunOffline или любой другой версии WSLDistroLauncher, файловая система может находиться в любой папке вашего компьютера.
Получение информации из реестра
Расположение каждой файловой системы можно получить из реестра 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 - это инструмент для управления дистрибутивами Linux, установленный на WSL. Вы можете использовать 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
Похоже, что Microsoft изменила / скрыла это еще немного, в настоящее время это:
% USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows _?????????????\LocalState\ корневой файловой системы
Поскольку это может еще больше измениться в будущем, просто предложите PGP выполнить поиск файлов в файлах .profile или .bashrc.
Более поздняя версия подсистемы 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
покажет эти пути ...
В качестве альтернативы используйте readlink .
в оболочке linux, чтобы опубликовать текущий путь linux в виде пути 'DOS' в буфер обмена Windows. Вставьте куда-нибудь разумное, чтобы прочитать реальный физический путь.