Де знаходиться кореневий каталог файлової системи Ubuntu в підсистемі Windows для Linux і навпаки?


389

Я встановив підсистему Ubuntu в Windows 10 (після ввімкнення функції в налаштуваннях), але де в накопичувачі знаходиться коренева директорія файлової системи Ubuntu?


24
ЗВЕРНІТЬ УВАГУ Ми (WSL команди) НАСТІЙНО рекомендую Вам НЕ spelunk в папки дистрибутива даних Linux ). Якщо у вас є, втрата даних та / або корупція ДУЖЕ ймовірно. Ми працюємо над тим, щоб покращити цей сценарій взаємодії та повідомимо про будь-який прогрес у нашому блозі: blogs.msdn.microsoft.com/commandline
Rich Turner

@RichTurner Я виявив, що існує дуже специфічна (і дратівлива) причина - корпоративна політика, що маркує папку .ssh неправильними дозволами, неодноразово означає, що потрібно позначати структуру як "поза межами" корпоративних сценаріїв. Але взагалі - я погодився б з вами.
Danny Staple

Хоча це виглядає як на скриньках із більш новими оновленнями - цього більше не відбувається.
Danny Staple

2
@DannyStaple Якщо вам потрібно змінити дозволи на файли / папки у вашому дистрибутиві Linux від Windows, використовуйте wsl.exe, наприклад, wsl chmod 600 ~/.ssh/id*- не копіюйте файли в ці папки через файлову систему Windows.
Багатий Тернер

@RichTurner: Чому ви, хлопці, не тунелюєте метадані Linux, як, як ви вже тунелюєте метадані NTFS?
Мехрдад

Відповіді:


421

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

Кожен дистрибутив, який ви встановлюєте через магазин, встановлюється в каталог додатків цього додатка. Наприклад: 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 доданий новий файл, йому не вистачає EA, необхідних VolF, тому VolFs не знає, що робити з файлом, і просто ігнорує його. Багато редакторів також знімуть EA під час збереження наявного файлу, знову зробивши файл непридатним у WSL.


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

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

Джерело: Блог Дастіна Кіркленда , howtogeek


14
Lxss був прихований у моїй файловій системі ... спричинив трохи подряпин по голові протягом вразливої ​​хвилини чи двох. Тепер я створив ярлик, але все ще не можу його сховати.
Огадай

3
@Ogaday ви не можете його сховати за допомогою вікна властивостей, оскільки він позначений як системний каталог. Ви можете приховати його, використовуючи, 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%каталогу. Ви можете мати доступ до нього будь-коли, ввівши його в 'адресному рядку' Провідника.


Моя машина не може знайти: "C: \ Users \ {user} \ AppData \ Local \ Lxss \ {username}" або "% localappdata% \ Lxss \ home \ {username}", але "C: \ Users \ {user } \ AppData \ Local \ lxss \ {ім'я користувача} "працює. IE використовує "lxss" НЕ "Lxss"
Joe Codeswell user601770

У моїй системі є підкаталог rootfs, але rootfs / home порожній ./home має мій обліковий запис користувача та файли. Здається, найбезпечніше просто перейти до% localappdata% \ lxss, а потім вивчити звідти, щоб побачити, який макет у вас є, а також безпосередньо переглядати цю адресу, щоб уникнути проблем із тим, щоб каталог з lxss був прихованим.
jla

1
@ JoeCodeswelluser601770 Це дивно. Файлові системи Windows, як правило, не чутливі до регістру. Я можу ввести% localappdata% \ Lxss або% localappdata% \ lxss і обидва перейти до% HOMEPATH% \ AppData \ Local \ lxss
jla

8
Зауважте, що ця папка (lxss) не відображалася в моєму списку провідників Windows Explorer у папках AppData \ Local, навіть із увімкненим поданням прихованих папок. Мені довелося вручну вставити папку lxss в панель провідника, щоб дістатися до файлів тут, наприклад, відредагувати папку "url" туди
Colin D

Крім того, ви можете зайти на робочий стіл, клацнути правою кнопкою миші «Створити-> ярлик» і вставити шлях на зразок C: \ Users \ ваше ім’я \ AppData \ Local \ lxss \ home \ yourname
Колін 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/


5

Єдине, що працювало для мене %localappdata%\lxss\home\{username}, - {username}це ваше ім’я користувача BASH, яке ви дали йому під час встановлення. Чомусь, після показу прихованої папки lxss папки відмовляється з'являтися в C:\Users\WINDOWS-USER\AppData\Local\, а також надаючи повний C:\шлях з windows та ім'ям BASH, також не працює.

І будь ласка, створіть ярлик на робочому столі для того, що працює.



4

Ви можете швидко відкрити Bash у вікні провідника файлів відкритої папки, ввівши bashв рядку місцезнаходження.

Це досить.

Також ви можете додати пункт контекстного меню. Я особисто не рекомендую його, якщо не потрібно, тому що для додавання ярликів у контекстне меню використовується більше оперативної пам'яті.

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


Не працює для мене. Він відкриває командний рядок і запускає bash.
blablatros

@blablatros так, але в папці в bash у відьмі ви відкрили провідник, коли писали в барі Explorer і натискали клавішу Enter. Спробуйте в папці "Мої документи" відкрити папку "Провідник Windows", а в рядку розташування напишіть bash, і вона відкриє ubuntu bash вже в цій папці :)
Kangarooo

1
@Kangarooo: Я хочу отримати доступ до файлів через Windows 10 gui, а також навпаки. У своїй відповіді вище я дізнався, як знайти каталог bash через провідник файлів Windows 10, і тому приступив до копіювання деяких файлів із зовнішнього жорсткого диска в цей каталог. Однак, коли я відкрив термінал bash і натиснув ls -a, він не показав додані файли. Bash не розпізнавав файли, які я потрапив через провідник файлів windows, що для мене повністю перемогло мету встановлення bash на windows.
думаєінбінарний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.