ไดเร็กทอรีรากของระบบไฟล์ Ubuntu ใน Windows Subsystem สำหรับ Linux และในทางกลับกันอยู่ที่ใด


389

ฉันติดตั้งระบบย่อย Ubuntu บน Windows 10 (หลังจากเปิดใช้งานฟีเจอร์ในการตั้งค่า) แต่ไดเรกทอรีรากของระบบไฟล์ Ubuntu อยู่ที่ไหนในไดรฟ์


24
โปรดทราบ เรา (ทีม WSL) ที่ขอแนะนำให้คุณไม่ spelunk เข้าไปในลินุกซ์โฟลเดอร์ข้อมูล distro ) หากคุณทำเช่นนั้นการสูญหายของข้อมูลและ / หรือความเสียหายนั้นมีโอกาสมากที่เรากำลังดำเนินการเพื่อปรับปรุงสถานการณ์การทำงานร่วมกันและจะประกาศความคืบหน้าในบล็อกของเรา: blogs.msdn.microsoft.com/commandline
Rich Turner

@RichTurner ฉันพบว่ามีเหตุผลที่เฉพาะเจาะจง (และน่ารำคาญ) - นโยบายองค์กรที่ทำเครื่องหมายโฟลเดอร์. ssh ที่มีการอนุญาตผิด ๆ ซ้ำ ๆ หมายถึงจำเป็นต้องทำเครื่องหมายโครงสร้างเป็น "off limit" ของสคริปต์ขององค์กร แต่โดยทั่วไป - ฉันเห็นด้วยกับคุณ
Danny Staple

แม้ว่าจะดูเหมือนกับกล่องที่มีการอัปเดตมากกว่านี้ แต่จะไม่เกิดขึ้นอีกต่อไป
Danny Staple

2
@DannyStaple หากคุณจำเป็นต้องเปลี่ยนสิทธิ์ในไฟล์ / โฟลเดอร์ใน distro Linux ของคุณจาก Windows, การใช้งานwsl.exeเช่นwsl chmod 600 ~/.ssh/id*- ไม่ได้คัดลอกไฟล์ลงในโฟลเดอร์เหล่านี้ผ่านทางระบบแฟ้มของ Windows
Rich Turner

@ ริชเทอร์เนอร์: ทำไมคุณไม่ขุดอุโมงค์ข้อมูลเมตาของลินุกซ์อย่างที่คุณทำอุโมงค์เมตาดาต้า NTFS แล้วล่ะ?
Mehrdad

คำตอบ:


421

สำหรับ Ubuntu ที่ติดตั้งจากร้าน Windows:

การแจกจ่ายแต่ละรายการที่คุณติดตั้งผ่านร้านค้าจะถูกติดตั้งลงในไดเรกทอรี appdata ของแอปพลิเคชันนั้น ตัวอย่างเช่น: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

ในการทำซ้ำก่อนหน้าของ Windows Subsystem สำหรับ Linux ระบบไฟล์ Ubuntu นั้นอยู่ที่%localappdata%\Lxss(เช่นC:\Users\Username\AppData\Local\Lxss- แทนที่ชื่อผู้ใช้ด้วยชื่อผู้ใช้ของคุณบน Windows) ดูโพสต์บล็อก WSL เกี่ยวกับการสนับสนุนระบบไฟล์ :

ระบบไฟล์หลักที่ใช้โดย WSL คือ VolFs มันถูกใช้เพื่อเก็บไฟล์ระบบ Linux รวมถึงเนื้อหาของโฮมลินุกซ์ของคุณ ดังนั้น VolFs จึงสนับสนุนคุณสมบัติส่วนใหญ่ที่ Linux VFS มอบให้รวมถึงการอนุญาต Linux ลิงก์สัญลักษณ์ FIFOs ซ็อกเก็ตและไฟล์อุปกรณ์

VolFs ใช้เพื่อเมาท์ไดเร็กทอรีรูท VFS โดยใช้ %LocalAppData%\lxss\rootfsเป็นหน่วยเก็บข้อมูลสำรอง นอกจากนี้ยังมีหมาป่าอากาศเพิ่มเติมบางจุดเมาอยู่ที่สะดุดตาที่สุด/rootและ /homeที่ติดตั้งใช้%LocalAppData%\lxss\rootและ %LocalAppData%\lxss\homeตามลำดับ เหตุผลสำหรับการเมาต์แยกเหล่านี้คือเมื่อคุณถอนการติดตั้ง WSL โฮมไดเร็กทอรีจะไม่ถูกลบโดยค่าเริ่มต้นดังนั้นไฟล์ส่วนบุคคลใด ๆ ที่เก็บไว้ที่นั่นจะถูกเก็บไว้

ข้อควรระวัง

การสร้าง / แก้ไขไฟล์ใด ๆ ภายในระบบย่อย Linux โดยใช้แอพและเครื่องมือ Windows อาจทำให้ข้อมูลเสียหายและข้อมูลสูญหายในระบบย่อย Ubuntu! (ขอบคุณRich Turnerสำหรับการแนะนำคำเตือนเหล่านี้!) ไม่รองรับอย่างแน่นอน จากบล็อกโพสต์เดียวกัน:

การทำงานร่วมกันกับ Windows

แม้ว่าไฟล์ VolFs จะถูกเก็บไว้ในไฟล์ปกติบน Windows ในไดเรกทอรีที่กล่าวถึงข้างต้น แต่การทำงานร่วมกับ Windows ไม่ได้รับการรองรับ หากมีการเพิ่มไฟล์ใหม่ลงในหนึ่งในไดเรกทอรีเหล่านี้จาก Windows จะไม่มี EAs ที่จำเป็นสำหรับ VolFs ดังนั้น VolFs จึงไม่ทราบว่าต้องทำอย่างไรกับไฟล์และไม่สนใจเลย บรรณาธิการจำนวนมากจะตัด EAs เมื่อบันทึกไฟล์ที่มีอยู่อีกครั้งทำให้ไฟล์ใช้ไม่ได้ใน WSL


ระบบไฟล์ Windows ของคุณอยู่ที่/mnt/cในสภาพแวดล้อมเชลล์ Bash

ป้อนคำอธิบายรูปภาพที่นี่

ที่มา: บล็อกของ Dustin Kirkland , howtogeek


14
Lxss ถูกซ่อนอยู่ในระบบไฟล์ของฉัน ... ทำให้เกิดรอยขีดข่วนเล็กน้อยเป็นเวลาหนึ่งหรือสองนาที ตอนนี้ฉันได้สร้างทางลัด แต่ฉันก็ยังไม่สามารถเลิกซ่อนได้
Ogaday

3
@Ogaday คุณไม่สามารถยกเลิกการซ่อนโดยใช้หน้าต่างคุณสมบัติได้เนื่องจากถูกทำเครื่องหมายเป็นไดเรกทอรีระบบ คุณสามารถยกเลิกการซ่อนโดยใช้attrib -s -h lxssซึ่งจะยกเลิกการทำเครื่องหมายเป็นไดเรกทอรีระบบด้วย
developerbmw

3
ดูเหมือนว่าสถานที่มีการเปลี่ยนแปลงหรือแตกต่างระหว่างระบบเนื่องจากฉันอยู่ในสถานที่ที่แตกต่าง ฉันโพสต์ด้านล่างพร้อมตำแหน่งของฉัน
NicholasJohn16

8
@souravc คุณช่วยเพิ่มข้อความสำคัญให้กับคำตอบของคุณได้อย่างมากแนะนำให้สร้าง / แก้ไขไฟล์ใด ๆ ภายใน LXSS โดยใช้แอพและเครื่องมือ Windows: มีโอกาสเกิดความเสียหายและการสูญหายของข้อมูลได้มาก!
Rich Turner

5
โปรดอ่านโพสต์ที่กล่าวถึงข้างต้น: blogs.msdn.microsoft.com/commandline/2016/11/17/… . มันปลอดภัยที่จะเข้าถึงระบบไฟล์ Windows จาก WSL ซึ่งเป็นเหตุผลที่เราติดตั้งไดรฟ์ของคุณ/mnt/<drive>/แต่ไม่ปลอดภัย (ยัง) ในการเข้าถึงระบบไฟล์ Linux จาก Windows ซึ่งเป็นเหตุผลที่เราไม่ให้เข้าถึงระบบไฟล์ distro ได้ง่าย
Rich Turner

51

สิ่งนี้ดูเหมือนว่าจะมีการเปลี่ยนแปลงตั้งแต่เริ่มใช้ Bash และไม่ได้ใช้กับการกระจายจาก Windows Store หรืออาจจะไม่สอดคล้องกับระบบทั้งหมดเนื่องจากไดเรกทอรีหลักของฉันอยู่ในตำแหน่งอื่น:

%localappdata%\lxss\home\{username}

หรือ:

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

{user}ชื่อผู้ใช้ Windows ของคุณอยู่ที่ไหนและ{username}ตั้งค่าชื่อผู้ใช้ UNIX ในระหว่างการติดตั้ง

ดังนั้นไดเรกทอรีรากจะเป็น:

%localappdata%\lxss

โปรดทราบว่าไดเรกทอรีรากอาจไม่ปรากฏใน Windows Explorer จาก%localappdata%ไดเรกทอรี คุณควรจะสามารถเข้าถึงมันได้โดยพิมพ์ลงใน 'address bar' ของ Explorer


เครื่องของฉันไม่พบ: "C: \ Users \ {ผู้ใช้} \ AppData \ Local \ Lxss \ {ชื่อผู้ใช้}" หรือ "% localappdata% \ Lxss \ home \ {ชื่อผู้ใช้}" แต่ "C: \ Users \ {ผู้ใช้ } \ 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 ลงใน explorer bar เพื่อไปยังไฟล์ที่นี่เช่นแก้ไขโฟลเดอร์ "url" ไปที่นั่น
Colin D

หรือคุณสามารถไปที่เดสก์ท็อปคลิกขวาที่ "ใหม่ -> ทางลัด" และวางเส้นทางเช่น C: \ Users \ yourname \ AppData \ Local \ lxss \ home \ yourname
Colin D

13

หากคุณติดตั้ง Linux จาก MS Market:

พวกเขาวาง distros ใต้:

$ 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

distro เริ่มต้นที่กำหนดโดย:

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

Linux root อยู่ลึก:

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 ไม่ทำงานอย่างใดอย่างหนึ่ง

และโปรดสร้างทางลัดบนเดสก์ท็อปสำหรับสิ่งที่ใช้งานได้


เคล็ดลับที่ดีว้าวมีปัญหาเดียวกัน
Nicolas Mommaerts

4

คุณสามารถเปิด Bash ได้อย่างรวดเร็วจากหน้าต่าง File Explorer ของโฟลเดอร์ที่เปิดโดยการพิมพ์bashในแถบตำแหน่ง

มันเพียงพอแล้ว.

นอกจากนี้คุณสามารถเพิ่มรายการเมนูบริบท ฉันเองไม่แนะนำถ้าไม่จำเป็นเพราะการเพิ่มทางลัดไปยังเมนูบริบทใช้ RAM มากกว่า

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


ใช้งานไม่ได้สำหรับฉัน จะเปิดพร้อมรับคำสั่งและเปิดตัวทุบตี
blablatros

@blablatros ใช่ แต่ในโฟลเดอร์ที่ทุบตีเป็นแม่มดคุณเปิด explorer เมื่อเขียนใน explorer bar bash และกด enter ลองในโฟลเดอร์เอกสารของฉันเปิดโฟลเดอร์ Windows Explorer และในแถบตำแหน่งเขียนทุบตีและมันจะเปิดอูบุนตูทุบตีในโฟลเดอร์นั้นมาแล้ว :)
Kangarooo

1
@ Kangarooo: ฉันต้องการเข้าถึงไฟล์ผ่าน windows 10 gui และในทางกลับกัน ในคำตอบของฉันข้างต้นฉันพบวิธีค้นหาไดเรกทอรี bash ผ่านตัวสำรวจไฟล์ Windows 10 และดังนั้นฉันจึงดำเนินการคัดลอกไฟล์จากฮาร์ดไดรฟ์ภายนอกของฉันไปยังไดเรกทอรีนั้น อย่างไรก็ตามเมื่อฉันเปิด bash terminal และกดls -aมันไม่ได้แสดงไฟล์ที่ฉันเพิ่ม Bash ไม่รู้จักไฟล์ที่ฉันปล่อยผ่านโปรแกรมสำรวจไฟล์ windows ซึ่งสำหรับฉันได้พ่ายแพ้อย่างสิ้นเชิงกับวัตถุประสงค์ของการติดตั้ง bash บน windows
thinksinbinary
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.