Bagaimana cara mengakses drive yang dipasang jaringan pada Subsistem Linux Windows?

35

Saya memiliki drive samba yang terpasang di komputer windows lokal saya.

Saya memiliki drive "/ mnt / c" di WLS ("Windows 10 bash"), tetapi tidak ada "/ mnt / z".

Apakah ada cara untuk mengaksesnya? Bisakah saya remount di WLS?

Charles Shiller
sumber
3
Ada diskusi tentang fitur ini di Tanggapan Pengembang Microsoft wpdev.uservoice.com/forums/…
Nelson

Jawaban:

21

[Perbarui - tampaknya fitur ini tersedia di build 16176 . Saya belum mencobanya.]

Tidak, meskipun mungkin ada beberapa trik yang belum saya temukan. Subsistem Windows untuk Linux tidak memasang drive jaringan. Seorang karyawan Microsoft berkata sini (dalam komentar):

Kami hanya "memasang" drive tetap saat ini. Drive USB / dapat dilepas / jaringan tidak ditangani saat ini. Kemampuan ini ada di backlog kami, tetapi tidak ada di kartu dalam waktu dekat.

Jadi jangan menahan nafas.

Saya berusaha mengatasinya dengan menggunakan tautan simbolis, seperti ini:

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

Tautan berfungsi dengan baik di Windows "normal" (cmd.exe, PowerShell, file explorer, dll.), Tetapi tidak terlihat oleh WSL:

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

Untuk penggunaan saya sendiri, batasan ini adalah show-stopper. Saya memiliki banyak hal di drive jaringan yang tidak ingin saya pindahkan. Ada beberapa alternatif; Saya menggunakan Cygwin.

Joseph Thvedt
sumber
Setuju, ini juga showstopper untuk saya - saya baru saja menginstal msys2 untuk ini.
Ela782
urutan argumen Anda ke mklink salah - seharusnya linkname targettidak target linkname
masterxilo
Ya, masterxilo, Anda benar - saya punya perintah mklink yang salah di sini. Tetap. Ketika saya benar-benar mencobanya, saya melakukannya dengan benar, dan itu tidak berhasil vis-a-vis WSL. Ini adalah titik yang diperdebatkan sekarang, karena WSL sekarang dapat me-mount berbagi jaringan. Tapi terima kasih atas koreksinya. Bahkan jika hampir tidak ada yang melihat jawaban ini, saya benci meninggalkan kesalahan seperti itu.
Joseph Thvedt
58

dari tautan bleater diposting

Mounting DrvFs

Untuk memasang drive Windows menggunakan DrvFs, Anda dapat menggunakan perintah mount Linux biasa. Misalnya, untuk memasang drive yang dapat dilepas D: sebagai direktori / mnt / d, jalankan perintah berikut:

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

Sekarang, Anda dapat mengakses file D: drive di bawah / mnt / d. Ketika Anda ingin melepas drive, misalnya agar Anda dapat menghapusnya dengan aman, jalankan perintah berikut:

$ sudo umount /mnt/d

Pemasangan lokasi jaringan

Saat Anda ingin memasang lokasi jaringan, tentu saja Anda dapat membuat drive jaringan yang dipetakan di Windows dan memasang yang seperti ditunjukkan di atas. Namun, Anda juga dapat memasang mereka secara langsung menggunakan jalur UNC:

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

Perhatikan kutipan tunggal di sekitar jalur UNC; ini diperlukan untuk mencegah perlunya melarikan diri dari garis miring terbalik. Jika Anda tidak mengelilingi jalur UNC dengan tanda kutip tunggal, Anda harus lolos dari garis miring terbalik dengan menggandakannya (mis. \\\\server\\share ).

WSL tidak memiliki cara untuk menentukan kredensial mana yang digunakan untuk menghubungkan ke jaringan berbagi. Jika Anda perlu menggunakan kredensial yang berbeda untuk terhubung ke server, tentukan kredensial di Windows dengan menavigasi ke share di File Explorer, menggunakan Windows Credential Manager, atau perintah net use. Perintah net use dapat dipanggil dari dalam WSL (menggunakan net.exe use) via interop. Ketik bantuan net.exe gunakan untuk informasi lebih lanjut tentang cara menggunakan perintah ini.

gman
sumber
benar-benar bekerja untuk "bash for windows 10" saya! Terima kasih banyak!
Ying Zhang
Jawaban yang benar harus diubah ke yang ini karena langsung menjawab pertanyaan.
Tomek
Anda perlu "Windows Insider build" untuk mendapatkan DrvFs. -1 (tidak benar-benar memilih)
FractalSpace
2
Saya tidak memiliki windows insider build dan ini berfungsi untuk saya
gman
Itu benar-benar luar biasa.
Erik
0

Ada (setidaknya) dua cara untuk menggunakan Bash di Windows:

  1. Bash yang datang dengan WLS (saat menginstal Linux pada Windows 10 dari Windows Store atau sumber lain)
  2. Git-Bash di Windows

Git-Bash memiliki akses ke folder jaringan (instal git-bash & gt; buka folder jaringan & gt; klik kanan & gt; "Git Bash Here" & gt; run pwd untuk melihat jalan).

Jika kamu harus gunakan versi bash WLS, maka Anda dapat memanggil Git-Bash dari bash WLS sebagai berikut:

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

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

Berikut adalah cara untuk memasang GFS di WSL berdasarkan Mengerjakan `sshfs` di WSL atau menemukan alternatif Triknya adalah menggunakan https://www.nsoftware.com/sftp/netdrive/ untuk ssh ke GFS dari Windows dan mengonversinya ke sistem file yang dapat dipasang di bawah WSL.

  1. Instal OpenSSH Server di bawah Win10 Pengaturan Win10 - & gt; Aplikasi - & gt; Kelola fitur opsional - & gt; Tambahkan fitur - & gt; Server OpenSSH restart jika perlu buka Layanan - & gt; OpenSSH - & gt; Properti - & gt; Jenis Startup - & gt; Otomatis (tertunda)

  2. Instal dan jalankan SFTPNetDrive, klik kanan pada ikon di ikon tersembunyi - & gt; Jendela utama (atau mungkin sudah terbuka) - & gt; Profil - & gt; profil baru (server: localhost, pengguna: * pwd: * Drive Letter: F (atau lainnya) Lanjut - & gt; (Protokol - & gt; hapus centang kompresi; Folder yang ditentukan: G: \))

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

Saya tidak yakin seberapa stabil itu, tetapi saya bisa membuka file di WSL.

Christopher Crawford
sumber