15

Совершенно очевидно, что файловая система "хоста" Windows 10 смонтирована в /mnt/c/ с точки зрения "Linux". Но возможно ли получить доступ к файловой системе "Linux" из Windows? Если так, где это?

4 ответа4

18

Единственная корневая файловая система находилась здесь до обновления 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.

4

В настоящее время вы можете установить несколько дистрибутивов 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
1

Похоже, что Microsoft изменила / скрыла это еще немного, в настоящее время это:

% USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows _?????????????\LocalState\ корневой файловой системы

Поскольку это может еще больше измениться в будущем, просто предложите PGP выполнить поиск файлов в файлах .profile или .bashrc.

1

Более поздняя версия подсистемы 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. Вставьте куда-нибудь разумное, чтобы прочитать реальный физический путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .