Где находится файловая система подсистемы Linux в Windows 10?

22

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

Есть четыре света
источник
Из чего вывод mountв bashоболочке?
DavidPostill
Это не возвращает никаких подсказок:rootfs on / type rootfs
Есть четыре света
Хм. Ok. Как насчет cat /etc/fstab?
DavidPostill
Нет, к сожалению, с точки зрения "linux", это выглядит сидя на железе:LABEL=cloudimg-rootfs / ext4 defaults 0 0
Есть четыре света
OK. Других идей нет.
DavidPostill

Ответы:

24

Единственная корневая файловая система находилась здесь до обновления Windows 10 Fall Creators (выпущенного в октябре 2017 года):

%LOCALAPPDATA%\Lxss\rootfs

Например, C:\Users\Vigo\AppData\Local\Lxss\rootfs\

Другие точки монтирования расположены на один уровень выше в lxssкаталоге. Например, ваш собственный homeкаталог в Linux будет в %LOCALAPPDATA%\Lxss\home.

Начиная с обновления Fall Creators, можно установить более одного экземпляра Linux и запустить их параллельно. Существующий экземпляр (он же устаревший) останется в своем каталоге, но новые созданные экземпляры находятся в:

% LOCALAPPDATA% \ Packages \ <distribution_specific_name> _ <random_string> \ LocalState \ rootfs

Например, моя установка Ubuntu 18.04 находится под

CanonicalGroupLimited.Ubuntu18.04onWindows_ 79rhkp1fndgsc
каталог.

Предупреждение : не создавайте , не изменяйте и не удаляйте файлы, расположенные в дереве специфичных для lxss или дистрибутивов, из Windows.

Изучение и чтение файлов - единственная безобидная операция. См. Эту страницу блога Microsoft для деталей.

Обратите внимание, что, начиная с сборки 1903 года, существует альтернативный способ доступа к файлам работающего дистрибутива, который не имеет ранее упомянутых проблем.

Просто используйте путь, \\wsl$\<distribution_specific_name>\и вы сможете создавать и изменять файлы. AppData по-прежнему не поддерживается для доступа к файлам в сборке 1903.

jlliagre
источник
Это было скрыто :)
Y2K
Я не могу добавить его в Quick Access из Windows Explorer в качестве закладки, чтобы найти его проще.
Джон
4
Не зависящая от пользователя версия для копирования и вставки:%USERPROFILE%\AppData\Local\Lxss\rootfs
Silveri
3
Предупреждение: согласно Microsoft, вам не следует изменять файловую систему linux с помощью приложений Windows. blogs.msdn.microsoft.com/commandline/2016/11/17/…
Корей
1
Вы можете сильно упростить первую часть этого пути, используя %LOCALAPPDATA%вместо этого%USERPROFILE%\AppData\Local
Herohtar
8

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

Для WSL2 вы можете получить доступ к домашнему каталогу из проводника Windows следующим образом:

\\wsl$

Извините, что опоздал на вечеринку!

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

PGP
источник
1

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

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

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

jesseyu
источник
1

Я создал этот скрипт, который открывает папку WLS в проводнике

cd C:\Users\Naotho Machida\AppData\Local\Packages\Canonical*\LocalState\rootfs\etc
explorer %cd%

просто сохраните его как yourScript.cmd и запустите

Наото Мачида
источник