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

6616
There Are Four Lights

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

14
Что выводится из `mount` в оболочке` bash`? DavidPostill 8 лет назад 0
Это не возвращает никаких подсказок: `rootfs on / type rootfs` There Are Four Lights 8 лет назад 0
Хм. Хорошо. Что насчет `cat / etc / fstab`? DavidPostill 8 лет назад 0
Нет, к сожалению, с точки зрения "linux" он выглядит сидя на аппаратном: `LABEL = cloudimg-rootfs / ext4 по умолчанию 0 0` There Are Four Lights 8 лет назад 0
ХОРОШО. Других идей нет. DavidPostill 8 лет назад 0
На самом деле неправильно думать об этом, используя в первую очередь понятия виртуальной машины «хост» и «гость», обратите внимание. [Это * одна * файловая система, просто представляемая различными подсистемами Windows NT по-разному, поскольку каждая из них сопоставляет свои собственные соглашения об именах с именами собственного диспетчера объектов.] (Https://news.ycombinator.com/item?id= 11415671) JdeBP 8 лет назад 0
** Предупреждение ** Обратите внимание, что Microsoft [категорически не поощряет] (https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps- и-tools /) манипулирование файлами WSL с использованием утилит не-WSL. Daniel B 7 лет назад 0

4 ответа на вопрос

17
jlliagre

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

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

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

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

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

Было спрятано :) Y2K 7 лет назад 0
Я не могу добавить его в Быстрый доступ Windows Explorer в качестве закладки, чтобы его было легко найти. john 7 лет назад 0
Не зависящая от пользователя версия с возможностью копирования и вставки: `% USERPROFILE% \ AppData \ Local \ Lxss \ rootfs` Silveri 7 лет назад 4
Предупреждение: согласно Microsoft, вам не следует изменять файловую систему linux с помощью приложений Windows. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/ Korey 6 лет назад 2
@Korey Спасибо за напоминание об этом, ответ обновлен. jlliagre 6 лет назад 0
Даже чтение не обязательно безопасно. Как упоминается в сообщении блога MS, некоторые программы блокируют (или даже изменяют) файлы в «открытом» режиме, то есть они не предназначены только для чтения. Единственная безопасная операция, о которой я могу подумать, - это копирование файла в другое место, и даже это зависит от того, что вы используете для его копирования (я считаю, что открытый для чтения заблокирует удаление?). Лучше вообще не трогать - используйте WSL для копирования в точку монтирования DrvFs. Я чувствую, что ваше предупреждение должно быть более заметным и в начале ответа - почти никогда нет веской причины что-либо делать, кроме удаления всего каталога. Bob 5 лет назад 0
3
Jaime

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

Вы получите таблицу с информацией, подобной следующей

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
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выявит эти пути ...

В качестве альтернативы можно использовать readlink .внутри оболочки Linux, чтобы опубликовать текущий путь Linux в качестве пути «DOS» в буфер обмена Windows. Вставьте куда-нибудь разумное, чтобы прочитать реальный физический путь.

1
jesseyu

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

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

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