¿Dónde está el directorio raíz del sistema de archivos Ubuntu en Windows Subsystem para Linux y viceversa?

389

He instalado el subsistema Ubuntu en Windows 10 (después de habilitar la función en la configuración), pero ¿dónde está ubicado el directorio raíz del sistema de archivos Ubuntu en la unidad?

julio
fuente
24
TENGA EN CUENTA Nosotros (el equipo de WSL) RECOMENDAMOS ENCARECIDAMENTE que NO ingrese a las carpetas de datos de distribución de Linux ). Si lo hace, la pérdida y / o corrupción de datos es MUY probable. Estamos trabajando para mejorar este escenario de interoperabilidad y anunciaremos cualquier progreso en nuestro blog: blogs.msdn.microsoft.com/commandline
Rich Turner
@RichTurner He descubierto que hay una razón muy específica (y molesta): las políticas corporativas que marcan la carpeta .ssh con los permisos incorrectos en repetidas ocasiones significa que es necesario marcar la estructura como "fuera de los límites" de los scripts corporativos. Pero en general, estoy de acuerdo contigo.
Danny Staple el
Aunque parece en cajas con actualizaciones más recientes, esto ya no sucede.
Danny Staple
2
@DannyStaple Si necesita cambiar los permisos en archivos / carpetas en su distribución de Linux desde Windows, use wsl.exe, por ejemplo, wsl chmod 600 ~/.ssh/id*- no copie archivos en estas carpetas a través del sistema de archivos de Windows.
Rich Turner
@RichTurner: ¿Por qué no hacen un túnel de metadatos de Linux como lo hacen ya con los metadatos de NTFS?
Mehrdad

Respuestas:

421

Para Ubuntu instalado desde la tienda de Windows:

Cada distribución que instale a través de la tienda se instala en el directorio de datos de aplicaciones de esa aplicación. Por ejemplo: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

En versiones anteriores de Windows Subsystem para Linux, el sistema de archivos de Ubuntu estaba en %localappdata%\Lxss(por ejemplo, C:\Users\Username\AppData\Local\Lxss- reemplace el nombre de usuario con su nombre de usuario en Windows). Consulte la publicación del blog WSL sobre Soporte del sistema de archivos :

El sistema de archivos primario utilizado por WSL es VolFs. Se utiliza para almacenar los archivos del sistema Linux, así como el contenido de su directorio de inicio de Linux. Como tal, VolFs admite la mayoría de las funciones que proporciona Linux VFS, incluidos los permisos de Linux, enlaces simbólicos, FIFO, sockets y archivos de dispositivo.

VolFs se utiliza para montar el directorio raíz de VFS, %LocalAppData%\lxss\rootfscomo almacenamiento de respaldo. Además, existen algunos puntos de montaje VolF adicionales, más notablemente /rooty /homeque se montan usando %LocalAppData%\lxss\rooty %LocalAppData%\lxss\homerespectivamente. La razón de estos montajes separados es que cuando desinstala WSL, los directorios principales no se eliminan de manera predeterminada, por lo que se conservarán todos los archivos personales almacenados allí.

PRECAUCIÓN

¡Crear / modificar cualquier archivo dentro del subsistema Linux usando aplicaciones y herramientas de Windows puede causar corrupción de datos y pérdida de datos en el subsistema Ubuntu! (Gracias a Rich Turner por sugerir que estas palabras de precaución!) Esto está absolutamente no compatible. De la misma publicación del blog:

Interoperabilidad con Windows

Si bien los archivos VolFs se almacenan en archivos normales en Windows en los directorios mencionados anteriormente, la interoperabilidad con Windows no es compatible. Si se agrega un nuevo archivo a uno de estos directorios desde Windows, carece de los EA necesarios para VolF, por lo que VolFs no sabe qué hacer con el archivo y simplemente lo ignora. Muchos editores también eliminarán los EA al guardar un archivo existente, de nuevo haciendo que el archivo sea inutilizable en WSL.


Su sistema de archivos de Windows se encuentra /mnt/cen el entorno de shell Bash.

ingrese la descripción de la imagen aquí

Fuente: blog de Dustin Kirkland , howtogeek

souravc
fuente
14
Lxss estaba oculto en mi sistema de archivos ... causó un poco de rascarse la cabeza por un minuto o dos exasperantes. Ahora he creado un acceso directo, pero parece que todavía no puedo mostrarlo.
Ogaday
3
@Ogaday no puedes mostrarlo usando la ventana de propiedades porque está marcado como un directorio del sistema. Puede mostrarlo usando lo attrib -s -h lxssque lo desmarcará como un directorio del sistema también.
developerbmw
3
Parece que la ubicación ha cambiado o es diferente entre los sistemas, ya que el mío está en una ubicación diferente. He publicado a continuación con mi ubicación.
NicholasJohn16
8
@souravc ¿Podría agregar una nota importante en la parte superior de su respuesta, RECOMENDANDO FUERTEMENTE que no cree / modifique ningún archivo dentro de LXSS utilizando las aplicaciones y herramientas de Windows: es muy probable que se produzcan daños y pérdidas de datos!
Rich Turner el
55
Lea la publicación mencionada anteriormente: blogs.msdn.microsoft.com/commandline/2016/11/17/… . Es seguro acceder al sistema de archivos de Windows desde WSL, por lo que montamos sus unidades /mnt/<drive>/, pero NO es seguro (todavía) acceder al sistema de archivos de Linux desde Windows, por lo que no proporcionamos un acceso fácil a los sistemas de distribución de archivos.
Rich Turner
51

Esto parece haber cambiado desde que Bash se introdujo originalmente, y no se aplica a las distribuciones de la Tienda Windows, o tal vez no sea coherente para todos los sistemas ya que mi directorio de inicio se encuentra en otra ubicación:

%localappdata%\lxss\home\{username}

o:

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

¿Dónde {user}está su nombre de usuario de Windows y {username}su nombre de usuario UNIX establecido durante la instalación?

Entonces el directorio raíz sería:

%localappdata%\lxss

Tenga en cuenta que el directorio raíz puede no estar visible en el Explorador de Windows desde el %localappdata%directorio. Debería poder acceder a él de todos modos escribiéndolo en la 'barra de direcciones' del Explorador.

NicholasJohn16
fuente
Mi máquina no puede encontrar: "C: \ Users \ {user} \ AppData \ Local \ Lxss \ {username}" o "% localappdata% \ Lxss \ home \ {username}" pero "C: \ Users \ {user } \ AppData \ Local \ lxss \ {username} "funciona. IE usa "lxss" NO "Lxss"
Joe Codeswell user601770
Mi sistema tiene el subdirectorio rootfs, pero rootfs / home está vacío, mientras que ./home tiene mi cuenta de usuario y mis archivos. Parece más seguro ir a% localappdata% \ lxss y luego explorar a partir de ahí para ver qué diseño tiene, además de navegar directamente a esa dirección evita problemas con el directorio lxss oculto.
jla
1
@ JoeCodeswelluser601770 Eso es extraño. Los sistemas de archivos de Windows normalmente no distinguen entre mayúsculas y minúsculas. Puedo ingresar% localappdata% \ Lxss o% localappdata% \ lxss y ambos ir a% HOMEPATH% \ AppData \ Local \ lxss
jla
8
Tenga en cuenta que esta carpeta (lxss) no apareció en mi lista de carpetas del explorador de Windows en AppData \ Local, incluso con la vista de carpetas ocultas habilitada. Tuve que pegar manualmente agregar la carpeta lxss a la barra del explorador para acceder a los archivos aquí, por ejemplo, editar la carpeta "url" allí
Colin D
Alternativamente, puede ir al Escritorio, hacer clic con el botón derecho en "Nuevo-> Acceso directo" y pegar una ruta como C: \ Users \ yourname \ AppData \ Local \ lxss \ home \ yourname
Colin D
13

Si instala Linux desde MS Market:

colocaron distribuciones debajo de:

$ 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

Distribución predeterminada definida por:

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

La raíz de Linux es más profunda:

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

PD. Usé Cygwin para explorar las claves de registro.

Si usa PowerShell para el mismo objetivo, los comandos serían:

# 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
fuente
5

Lo único que funcionó para mí fue %localappdata%\lxss\home\{username}dónde {username}está el nombre de usuario de BASH que le diste durante la instalación. Por alguna razón, después de mostrar lxss de la carpeta oculta se niega a aparecer C:\Users\WINDOWS-USER\AppData\Local\, y también da la C:\ruta completa con Windows y el nombre de usuario BASH tampoco funciona.

Y cree un acceso directo de escritorio para lo que funciona.

piensainbinario
fuente
wow buen consejo, tuve el mismo problema
Nicolas Mommaerts
4

Puede abrir rápidamente Bash desde una ventana del Explorador de archivos de la carpeta abierta escribiendo bashen la barra de ubicación.

Es suficiente.

También puede agregar un elemento de menú contextual. Personalmente, no lo recomiendo si no es necesario, porque agregar accesos directos al menú contextual usa más RAM.

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

Canguro
fuente
No funciona para mi Abre el símbolo del sistema y lanza bash.
blablatros
@blablatros sí, pero en la carpeta en bash en la bruja tenías el explorador abierto al escribir en la barra del explorador bash y presionar enter. Pruébelo en la carpeta Mis documentos abrió la carpeta del Explorador de Windows y en la barra de ubicación escriba bash y ya abrirá ubuntu bash en esa carpeta :)
Kangarooo
1
@ Kangarooo: Quiero acceder a los archivos a través de la interfaz gráfica de usuario de Windows 10 y viceversa. En mi respuesta anterior, descubrí cómo ubicar el directorio bash a través del explorador de archivos de Windows 10, y así procedí a copiar algunos archivos de mi disco duro externo en ese directorio. Sin embargo, cuando abrí el terminal bash y presioné ls -a, no mostraba los archivos que agregué. Bash no estaba reconociendo los archivos que coloqué en el explorador de archivos de Windows, lo que para mí ha derrotado por completo el propósito de instalar bash en Windows.
thinkinbinary