Где находится корневой каталог файловой системы Ubuntu в подсистеме Windows для Linux и наоборот?
Я установил подсистему Ubuntu в Windows 10 (после включения функции в настройках), но где находится корневой каталог файловой системы Ubuntu на диске?
6 ответов
Для 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
в качестве резервного хранилища. Кроме того, существует несколько дополнительных точек монтирования VolF, особенно/root
а также/home
которые установлены с использованием%LocalAppData%\lxss\root
а также%LocalAppData%\lxss\home
соответственно. Причина этих отдельных подключений заключается в том, что при удалении WSL домашние каталоги не удаляются по умолчанию, поэтому все личные файлы, хранящиеся там, будут сохранены.
ВНИМАНИЕ
Создание / изменение любых файлов в подсистеме Linux с помощью приложений и инструментов Windows может привести к повреждению данных и потере данных в подсистеме Ubuntu! (Спасибо Ричу Тернеру за эти слова предостережения!) Это абсолютно не поддерживается. Из того же сообщения в блоге:
Совместимость с Windows
Хотя файлы VolFs хранятся в обычных файлах Windows в указанных выше каталогах, совместимость с Windows не поддерживается. Если новый файл добавляется в один из этих каталогов из Windows, ему не хватает советников, необходимых для VolF, поэтому они не знают, что делать с файлом, и просто игнорируют его. Многие редакторы также удаляют советники при сохранении существующего файла, снова делая файл непригодным для использования в WSL.
Ваша файловая система Windows находится по адресу /mnt/c
в среде оболочки Bash.
Источник: блог Дастина Киркленда, howtogeek
Похоже, что это изменилось с тех пор, как Bash был изначально представлен, и не распространяется на дистрибутивы из Магазина Windows, или, возможно, он не совместим со всеми системами, поскольку мой домашний каталог находится в другом месте:
%localappdata%\lxss\home\{username}
или же:
C:\Users\{user}\AppData\Local\lxss\{username}
куда {user}
ваше имя пользователя Windows и {username}
ваше имя пользователя UNIX установлено во время установки.
Таким образом, корневой каталог будет:
%localappdata%\lxss
Обратите внимание, что корневой каталог может не отображаться в проводнике Windows из %localappdata%
каталог. Вы должны иметь возможность получить к нему доступ в любом случае, набрав его в "адресной строке" Explorer.
Если вы устанавливаете 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
Вы можете быстро открыть 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 username тоже не работает.
И, пожалуйста, создайте ярлык на рабочем столе для того, что работает.
Для тех, кто ищет расположение образа: C:\Users\[имя пользователя]\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\ext4.vhdx