¿Cómo acceder a la unidad montada en red en el subsistema Windows Linux?

62

Tengo una unidad de samba que está montada en mi computadora con Windows local.

Tengo una unidad "/ mnt / c" en WLS ("Windows 10 bash"), pero no "/ mnt / z".

¿Hay alguna manera de acceder de alguna manera? ¿Puedo volver a montarlo en WLS?

Charles Shiller
fuente
3
Hay discusión sobre esta característica en Microsoft Developer Feedback wpdev.uservoice.com/forums/…
Nelson

Respuestas:

23

[Actualización: aparentemente esta función está disponible en la compilación 16176 . No lo he probado todavía.]

No, aunque puede haber algún truco que no he descubierto. El subsistema de Windows para Linux no monta unidades de red. Un empleado de Microsoft dice aquí (en un comentario):

Solo "montamos" unidades fijas en este momento. Las unidades USB / extraíbles / de red no se manejan en este momento. Esta capacidad está en nuestra cartera de pedidos, pero no está en las tarjetas en el corto plazo.

Así que no contengas la respiración.

Intenté solucionarlo usando un enlace simbólico, como este:

c:> mklink /d c:\some\directory \\some_server\some_share

El enlace funciona bien en Windows "normal" (cmd.exe, PowerShell, explorador de archivos, etc.), pero es invisible para WSL:

$ ls -ld /mnt/c/some/directory
/mnt/c/some/directory not found

Para mi propio uso, esta limitación es un show-stopper. Tengo cosas en unidades de red que no estoy dispuesto a mover. Hay alternativas; Estoy usando Cygwin.

Joseph Thvedt
fuente
De acuerdo, este es un showtopper para mí también: acabo de instalar msys2 para esto.
Ela782
el orden de sus argumentos para mklink es incorrecto - debería serlo linkname target, notarget linkname
masterxilo
Sí, masterxilo, tienes razón: tuve el comando mklink incorrecto aquí. Fijo. Cuando realmente lo probé, lo hice bien, y no funcionó frente a WSL. Es un punto discutible ahora, ya que WSL ahora puede montar recursos compartidos de red. Pero gracias por la corrección. Incluso si casi nadie está mirando esta respuesta, odio dejar un error como ese.
Joseph Thvedt
109

desde el enlace bleater publicado

Montaje de DrvFs

Para montar una unidad de Windows usando DrvFs, puede usar el comando regular de montaje de Linux. Por ejemplo, para montar una unidad extraíble D: como directorio / mnt / d, ejecute los siguientes comandos:

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

Ahora podrá acceder a los archivos de su unidad D: bajo / mnt / d. Cuando desee desmontar la unidad, por ejemplo, para poder quitarla con seguridad, ejecute el siguiente comando:

$ sudo umount /mnt/d

Montaje de ubicaciones de red

Cuando desee montar una ubicación de red, por supuesto, puede crear una unidad de red asignada en Windows y montarla como se indicó anteriormente. Sin embargo, también es posible montarlos directamente usando una ruta UNC:

$ sudo mkdir /mnt/share
$ sudo mount -t drvfs '\\server\share' /mnt/share

Tenga en cuenta las comillas simples alrededor de la ruta UNC; Estos son necesarios para evitar la necesidad de escapar de las barras invertidas. Si no rodea la ruta UNC con comillas simples, debe escapar de las barras diagonales duplicadas (p. Ej.\\\\server\\share . .).

WSL no tiene ninguna forma de especificar qué credenciales usar para conectarse a un recurso compartido de red. Si necesita usar diferentes credenciales para conectarse al servidor, especifíquelas en Windows navegando al recurso compartido en el Explorador de archivos, utilizando el Administrador de credenciales de Windows o el comando net use. El comando net use se puede invocar desde dentro de WSL (usando net.exe use) a través de interoperabilidad. Escriba net.exe help use para obtener más información sobre cómo usar este comando.

gman
fuente
2
totalmente trabajado para mi "bash para windows 10"! Muchas gracias!
Ying Zhang
66
La respuesta correcta debe cambiarse a esta ya que responde directamente a la pregunta.
Tomek
Necesita "compilación de Windows Insider" para obtener DrvF. -1 (en realidad no baja)
FractalSpace
55
No tengo compilación de información privilegiada de Windows y funciona para mí
gman
2
Esto monta el recurso compartido, pero todo es propiedad de root, y algunos archivos son ilegibles (incluso con sudo, e incluso si los permisos dentro de WSL son 777). Puedo leer los archivos del explorador de archivos de Windows. Agregar cualquier opción de montaje ( -o) me da el error "tipo fs incorrecto, opción incorrecta, superbloque incorrecto".
Jay K
2

ver https://github.com/Microsoft/WSL/issues/2999#issuecomment-455835951

Aquí hay una manera de montar GFS en WSL basado en hacer que sshfs funcione en WSL o encontrar una alternativa. El truco es usar https://www.nsoftware.com/sftp/netdrive/ para ssh a GFS desde Windows y convertirlo a un sistema de archivos que se puede montar bajo WSL.

  1. Instale OpenSSH Server en Win10 Win10 Settings -> Aplicaciones -> Administrar funciones opcionales -> Agregar función -> OpenSSH Server reinicie si es necesario abra Servicios -> OpenSSH -> Propiedades -> Tipo de inicio -> Automático (retrasado)

  2. Instale y ejecute SFTPNetDrive, haga clic con el botón derecho en el icono en los iconos ocultos -> Ventana principal (o tal vez ya abierta) -> Perfil -> nuevo perfil (servidor: localhost, usuario: * pwd: * Letra de unidad: F (u otra) Avanzado - > (Protocolo -> desmarcar compresión; Carpeta especificada: G: \))

  3. en Bash (wsl): sudo mkdir / mnt / f; sudo mount -t drvfs F: / mnt / f

No estoy seguro de lo estable que es, pero pude abrir archivos en WSL.

Christopher Crawford
fuente
-2

Hay (al menos) dos formas de usar Bash en Windows:

  1. El Bash que viene con WLS (al instalar Linux en Windows 10 desde la Tienda Windows u otras fuentes)
  2. Git-Bash en Windows

Git-Bash tiene acceso a las carpetas de red (instala git-bash> ve a la carpeta de red> haz clic derecho> "Git Bash Here"> ejecuta pwdpara ver la ruta).

Si tiene que usar la versión WLS de bash, puede llamar a Git-Bash desde WLS bash de la siguiente manera:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
LoMaPh
fuente