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

389

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

июль
источник
24
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ! Мы (команда WSL) НАСТОЯТЕЛЬНО рекомендуем вам НЕ записываться в папки данных дистрибутива Linux ). В противном случае потеря данных и / или повреждение ОЧЕНЬ вероятны. Мы работаем над улучшением этого сценария взаимодействия и будем сообщать
Rich Turner
@RichTurner Я обнаружил, что есть очень конкретная (и раздражающая) причина - корпоративные политики, помечающие папку .ssh с неправильными разрешениями, многократно означают необходимость помечать структуру как «запрещенную» для корпоративных сценариев. Но в целом - я бы с тобой согласился.
Дэнни Стейпл
Хотя это похоже на коробки с более свежими обновлениями - этого больше не происходит.
Дэнни Стейпл
2
@DannyStaple Если вам нужно изменить права доступа к файлам / папкам в вашем дистрибутиве Linux из Windows, используйте wsl.exe, например, wsl chmod 600 ~/.ssh/id*- не копировать файлы в эти папки через файловую систему Windows.
Рич Тернер
@RichTurner: Почему вы, ребята, не туннелируете метаданные Linux, например, как вы уже туннелируете метаданные NTFS?
Мердад

Ответы:

421

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

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

В более ранних итерациях подсистемы 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, ему не хватает советников, необходимых для VolF, поэтому они не знают, что делать с файлом, и просто игнорируют его. Многие редакторы также удаляют советники при сохранении существующего файла, снова делая файл непригодным для использования в WSL.


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

введите описание изображения здесь

Источник: блог Дастина Киркленда , howtogeek

souravc
источник
14
Lxss был спрятан в моей файловой системе ... вызвал головную боль в течение одной или двух ярых минут. Теперь я создал ярлык, но все еще не могу его показать.
Огадай,
3
@ Сегодня вы не можете отобразить его, используя окно свойств, потому что оно помечено как системный каталог. Вы можете отобразить его, используя, attrib -s -h lxssчто также пометит его как системный каталог.
developerbmw
3
Похоже, что местоположение изменилось или отличается в разных системах, так как мой находится в другом месте. Я отправил ниже с моим местоположением.
NicholasJohn16
8
@souravc Не могли бы вы добавить важную заметку в начало вашего ответа, НАСТОЯТЕЛЬНО РЕКОМЕНДУЕТ не создавать и не изменять любые файлы в LXSS с помощью приложений и инструментов Windows: Повреждение и потеря данных весьма вероятны, если вы это сделаете!
Рич Тернер
5
Пожалуйста, прочитайте пост, упомянутый выше: blogs.msdn.microsoft.com/commandline/2016/11/17/… . Доступ к файловой системе Windows из WSL безопасен, поэтому мы монтируем ваши диски под ним /mnt/<drive>/, но НЕ безопасно (пока) доступ к файловой системе Linux из Windows, поэтому мы не предоставляем легкий доступ к файловым системам дистрибутивов.
Рич Тернер
51

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

%localappdata%\lxss\home\{username}

или же:

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

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

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

%localappdata%\lxss

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

NicholasJohn16
источник
Мой компьютер не может найти: "C: \ Users \ {user} \ AppData \ Local \ Lxss \ {username}" или "% localappdata% \ Lxss \ home \ {username}", но "C: \ Users \ {user } \ AppData \ Local \ lxss \ {username} "работает. IE использует "lxss", а не "Lxss"
Джо Кодсвелл user601770
В моей системе есть подкаталог rootfs, но rootfs / home пуст, в то время как ./home имеет мою учетную запись пользователя и файлы. Кажется, безопаснее всего перейти в% localappdata% \ lxss, а затем посмотреть, что у вас есть, плюс прямой просмотр по этому адресу позволяет избежать проблем со скрытым каталогом lxss.
JLA
1
@ JoeCodeswelluser601770 Это странно. Файловые системы Windows обычно нечувствительны к регистру. Я могу ввести% localappdata% \ Lxss или% localappdata% \ lxss, и оба перейти в% HOMEPATH% \ AppData \ Local \ lxss
jla
8
Обратите внимание, что эта папка (lxss) не появилась в моем списке проводников Windows в списке папок в AppData \ Local, даже с включенным просмотром скрытых папок. Мне пришлось вручную вставить папку lxss в панель обозревателя, чтобы получить доступ к файлам, например, отредактировать папку "url" там
Colin D
Кроме того, вы можете перейти на рабочий стол, щелкнуть правой кнопкой мыши «Создать-> Ярлык» и вставить путь, например, C: \ Users \ ваше имя \ AppData \ Local \ lxss \ home \ ваше имя
Colin D
13

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

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

$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\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

PS. Я использовал 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

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

gavenkoa
источник
5

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

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

thinksinbinary
источник
вау хороший совет, была такая же проблема
Николя Момэртс
4

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

Достаточно.

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

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

Kangarooo
источник
Не работает для меня Он открывает командную строку и запускает bash.
blablatros
@blablatros Да, но в папке в Bash ведьма у вас был открытый проводник при записи в bash панели обозревателя и нажатии Enter. Попробуйте в папке «Мои документы» открыть папку Windows Explorer и в адресной строке напишите bash, и он откроет уже в этой папке ubuntu bash :)
Kangarooo
1
@Kangarooo: я хочу получить доступ к файлам через графический интерфейс Windows 10, а также наоборот. В моем ответе выше я узнал, как найти каталог bash с помощью проводника Windows 10, и я приступил к копированию некоторых файлов со своего внешнего жесткого диска в этот каталог. Однако, когда я открыл терминал bash и нажал ls -a, он не показывал добавленные файлы. Bash не распознавал файлы, которые я вставил через Windows File Explorer, который для меня полностью победил цель установки Bash на Windows.
думает бинарное