Где находится корневой каталог файловой системы Ubuntu в подсистеме Windows для Linux и наоборот?

Я установил подсистему Ubuntu в Windows 10 (после включения функции в настройках), но где находится корневой каталог файловой системы Ubuntu, расположенный на диске?

Для Ubuntu, установленной из магазина Windows:

Каждый дистрибутив, который вы устанавливаете через магазин, устанавливается в каталог appdata этого приложения. Например: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - бенхиллис

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

\\wsl$

В более ранних версиях подсистемы Windows для Linux файловая система Ubuntu находилась на %localappdata%\Lxss (например, C:\Users\Username\AppData\Local\Lxss - замените Имя пользователя с вашим именем пользователя в Windows). Видеть сообщение в блоге WSL о поддержке файловой системы:

Основной файловой системой, используемой WSL, является VolFs. Он используется для хранения системных файлов Linux, а также содержимого вашего домашнего каталога Linux. Таким образом, VolFs поддерживает большинство функций, предоставляемых Linux VFS, включая разрешения Linux, символические ссылки, FIFO, сокеты и файлы устройств.

VolFs используется для монтирования корневого каталога VFS с помощью %LocalAppData%\lxss\rootfs в качестве резервного хранилища. Кроме того, существует несколько дополнительных точек монтирования VolFs, в первую очередь /root и /home которые монтируются с помощью %LocalAppData%\lxss\root и %LocalAppData%\lxss\home соответственно. Причина этих отдельных подключений заключается в том, что при удалении WSL домашние каталоги по умолчанию не удаляются, поэтому все личные файлы, хранящиеся там, будут сохранены.

осторожность

Создание/ изменение любых файлов в подсистеме Linux с помощью приложений и инструментов Windows может привести к повреждению и потере данных в подсистеме Ubuntu! (Благодаря Богатый Тернер за то, что предложил эти слова предостережения!) Это абсолютно нет поддерживаемый. Из того же поста в блоге:

Совместимость с Windows

В то время как файлы VolFs хранятся в обычных файлах Windows в каталогах, упомянутых выше, совместимость с Windows не поддерживается. Если новый файл добавляется в один из этих каталогов из Windows, ему не хватает советников, необходимых VolFs, поэтому VolFs не знает, что делать с файлом, и просто игнорирует его. Многие редакторы также удаляют советников при сохранении существующего файла, что снова делает файл непригодным для использования в WSL.


Ваша файловая система Windows находится по адресу /mnt/c в среде оболочки Bash.

enter image description here

Источник: Блог Дастина Киркланда, как это сделать

Похоже, это изменилось с тех пор, как Bash был первоначально представлен, и не относится к дистрибутивам из магазина Windows, или, возможно, оно не совместимо для всех систем, поскольку мой домашний каталог расположен в другом месте:

%localappdata%\lxss\home\{username}

или:

C:\Users\{user}\AppData\Local\lxss\{username}

Где {user} является вашим именем пользователя Windows и {username} задано ли ваше имя пользователя UNIX во время установки.

Таким образом, корневой каталог будет:

%localappdata%\lxss

Обратите внимание, что корневой каталог может быть недоступен в проводнике Windows из %localappdata% каталог. Вы должны иметь возможность получить к нему доступ в любом случае, введя его в "адресной строке" Проводника.

Если вы устанавливаете Linux из MS Market:

они разместили дистрибутивы под:

$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePathC:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Дистрибутив по умолчанию, определенный:

bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution{861c29b4-ebe2-49a5-8a22-7e53a27934a0}

Корень Linux глубже:

c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs

пс. Я использовал Cygwin для изучения разделов реестра.

Если использовать PowerShell для той же цели, команды будут:

# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)# which will have a value like:echo  $DEFAULT_LXSS_ID{bde539d6-0c87-4e12-9599-1dcd623fbf07}# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState

ППС. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

Вы можете быстро открыть Bash из окна проводника открытой папки, набрав bash в строке местоположения.

Этого достаточно.

Также вы можете добавить пункт контекстного меню. Лично я не рекомендую это делать, если в этом нет необходимости, потому что добавление ярлыков в контекстное меню требует больше оперативной памяти.

https://www.howtogeek.com/270810/how-to-quickly-launch-a-bash-shell-from-windows-10s-file-explorer/

Единственное, что сработало для меня, было %localappdata%\lxss\home\{username}, где {username} это ваше имя пользователя BASH, которое вы указали во время установки. По какой-то причине после отображения скрытой папки lxss отказывается отображаться в C:\Users\WINDOWS-USER\AppData\Local\, а также предоставление полного C:\ путь с windows и именем пользователя BASH также не работает.

И, пожалуйста, создайте ярлык на рабочем столе для того, что работает.

Для тех, кто ищет местоположение изображения:C:\Users\[username]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ

Мы (команда WSL) НАСТОЯТЕЛЬНО рекомендуем вам НЕ вводить данные в дистрибутив Linux folders
). Если вы это сделаете, очень вероятна потеря и/или повреждение данных

Мы работаем над улучшением этого сценария взаимодействия и сообщим о любом прогрессе в нашем блоге: Windows Command Line

@DannyStaple Если вам нужно изменить разрешения для файлов / папок в вашем дистрибутиве Linux из Windows, используйте wsl.exe , например wsl chmod 600 ~/.ssh/id* - не копируйте файлы в эти папки через файловую систему Windows.

@mehrdad WSL реализует файловый сервер P9, предоставляя / сортируя файлы из / в файловую систему дистрибутива, как это сделал бы любой файловый сервер P9. Таким образом, нет метаданных NTFS для маршалирования. Пожалуйста, посмотрите сессию Крейга Левена и Бена Хиллиса на сборке 2919 для получения дополнительной информации

@mehrdad Где я сказал, что мы сортируем метаданные NTFS? P9 маршалирует метаданные файла (т.е. временные метки, разрешения, имя файла и т.д.), А не данные NTFS.

@RichTurner: Почему бы вам, ребята, не туннелировать метаданные Linux так, как вы уже туннелируете метаданные NTFS?

@RichTurner: Ну, это было там, где я спросил * “Почему вы, ребята, не туннелируете метаданные Linux, как вы уже туннелируете метаданные NTFS?” * и вы сказали * “Мы делаем это в 1903 году и позже” *. Я специально спрашивал, почему бы вам просто не использовать драйвер файловой системы NTFS для туннелирования метаданных Linux (например, LXATTRB … или, возможно, всех советников) вместе со всеми другими метаданными, которые он уже туннелирует. По сути, это точно такая же проблема в той же ситуации, когда программы используют замену файлов вместо усечения, поэтому я в замешательстве, почему вы не попробуете то же решение, которое у вас уже было для этой проблемы в течение последнего десятилетия или двух.

@RichTurner Я обнаружил, что есть очень специфическая (и раздражающая) причина - корпоративные политики, неоднократно отмечающие папку .ssh с неправильными разрешениями, означают необходимость отмечать структуру как “недоступную” для корпоративных скриптов. Но в целом - я бы согласился с вами.

Хотя это выглядит как на коробках с более свежими обновлениями - этого больше не происходит.

@mehrdad: Я думаю, вы неправильно понимаете, как работает интеграция файловой системы в WSL. Подводя итог: В WSL мы добавляем метаданные Linux в каждый файл и папку в корневой папке дистрибутива FS. Системные вызовы Linux используют метаданные Linux и Windows FS для вычисления эффективных метаданных (включая разрешения и т.д.). WSL также синтезирует разрешения Linux из файлов / папок Windows при доступе к /mnt/c/ etc. В WSL > = 1903 мы интегрировали файловый сервер P9, через который Windows может получать доступ к файлам Linux. Файловый сервер P9 маршалирует данные и метаданные, как и следовало ожидать

@mehrdad: Если у вас есть дополнительные вопросы, пожалуйста, разместите свои вопросы в выпуске репозитория GitHub (GitHub - microsoft/WSL: Issues found on WSL ), где у нас есть больше возможностей для более подробного объяснения.