Jak uzyskać dostęp do dysku sieciowego w podsystemie Windows Linux?

62

Mam napęd samba, który jest zamontowany na moim lokalnym komputerze z systemem Windows.

Mam dysk „/ mnt / c” w WLS („Windows 10 bash”), ale nie mam „/ mnt / z”.

Czy jest jakiś sposób, aby uzyskać do niego dostęp? Czy mogę zamontować go ponownie w WLS?

Charles Shiller
źródło
3
Dyskusja na temat tej funkcji znajduje się na stronie Microsoft Developer Feedback wpdev.uservoice.com/forums/…
Nelson

Odpowiedzi:

23

[Aktualizacja - podobno ta funkcja jest dostępna w kompilacji 16176 . Jeszcze tego nie próbowałem.]

Nie, chociaż może być jakaś sztuczka, której nie odkryłem. Podsystem Windows dla systemu Linux nie montuje dysków sieciowych. Pracownik Microsoft mówi tutaj (w komentarzu):

Obecnie „montujemy” tylko stałe dyski. Dyski USB / wymienne / sieciowe nie są obecnie obsługiwane. Ta funkcja znajduje się w naszych zaległościach, ale nie będzie jej wkrótce w kartach.

Więc nie wstrzymuj oddechu.

Próbowałem obejść to za pomocą dowiązania symbolicznego, takiego jak to:

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

Link działa dobrze w „normalnym” systemie Windows (cmd.exe, PowerShell, eksplorator plików itp.), Ale jest niewidoczny dla WSL:

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

Na własny użytek ograniczenie to stanowi ograniczenie. Na dyskach sieciowych mam rzeczy, których nie chcę przenosić. Istnieją alternatywy; Używam Cygwin.

Joseph Thvedt
źródło
Zgadzam się, to także showstopper dla mnie - właśnie zainstalowałem do tego msys2.
Ela782
kolejność twoich argumentów na mklink jest nieprawidłowa - powinno być linkname target, nietarget linkname
masterxilo
Tak, masterxilo, masz rację - błędnie podałem tutaj polecenie mklink. Naprawiony. Kiedy faktycznie tego spróbowałem, zrobiłem to dobrze i nie działało to w stosunku do WSL. Jest to teraz kwestia sporna, ponieważ WSL może teraz montować udziały sieciowe. Ale dzięki za korektę. Nawet jeśli prawie nikt nie patrzy na tę odpowiedź, nie chcę zostawiać takiego błędu.
Joseph Thvedt
109

z opublikowanego linku bleater

Montaż DrvFs

Aby zamontować dysk Windows za pomocą DrvF, możesz użyć zwykłego polecenia montowania w systemie Linux. Na przykład, aby zamontować dysk wymienny D: as / katalog / mnt / d, uruchom następujące polecenia:

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

Teraz będziesz mógł uzyskać dostęp do plików na dysku D: pod / mnt / d. Aby na przykład odmontować dysk, aby na przykład bezpiecznie go usunąć, uruchom następujące polecenie:

$ sudo umount /mnt/d

Montowanie lokalizacji sieciowych

Jeśli chcesz zamontować lokalizację sieciową, możesz oczywiście utworzyć zmapowany dysk sieciowy w systemie Windows i zamontować go, jak wskazano powyżej. Możliwe jest jednak również zamontowanie ich bezpośrednio przy użyciu ścieżki UNC:

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

Zwróć uwagę na pojedyncze cudzysłowy wokół ścieżki UNC; są one niezbędne, aby zapobiec potrzebie ucieczki przed ukośnikami. Jeśli nie otaczasz ścieżki UNC pojedynczymi cudzysłowami, musisz uciec przed odwrotnym ukośnikiem, podwajając je (np \\\\server\\share.).

WSL nie ma żadnego sposobu na określenie, które poświadczenia mają być używane do łączenia się z udziałem sieciowym. Jeśli musisz użyć różnych poświadczeń, aby połączyć się z serwerem, określ je w systemie Windows, przechodząc do udziału w Eksploratorze plików, używając Menedżera poświadczeń systemu Windows lub polecenia net use. Polecenie net use można wywołać z poziomu WSL (używając net.exe use) przez interop. Wpisz polecenie net.exe help, aby uzyskać więcej informacji na temat korzystania z tego polecenia.

gman
źródło
2
całkowicie działało na moją „bash na Windows 10”! Dziękuję bardzo!
Ying Zhang
6
Prawidłowa odpowiedź powinna zostać zmieniona na tę, ponieważ bezpośrednio odpowiada na pytanie.
Tomek
Potrzebujesz „Windows Insider build”, aby uzyskać DrvF. -1 (tak naprawdę nie głosuje w dół)
FractalSpace
5
Nie mam kompilacji systemu Windows dla osób wewnętrznych i działa dla mnie
gman
2
To montuje udział, ale wszystko jest własnością root, a niektóre pliki są nieczytelne (nawet w sudo i nawet jeśli uprawnienia w WSL wynoszą 777). Mogę czytać pliki w Eksploratorze plików systemu Windows. Dodanie dowolnej opcji montowania ( -o) powoduje błąd „zły typ fs, zła opcja, zły superblok”.
Jay K
2

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

Oto sposób na zamontowanie GFS w WSL w oparciu o Pierwsze działanie `sshfs` na WSL lub znalezienie alternatywy . Sztuczka polega na użyciu https://www.nsoftware.com/sftp/netdrive/ do ssh do GFS z Windows i przekonwertowania go do systemu plików, który można zamontować pod WSL.

  1. Zainstaluj serwer OpenSSH w obszarze Win10 Ustawienia Win10 -> Aplikacje -> Zarządzaj opcjonalnymi funkcjami -> Dodaj funkcję -> Uruchom ponownie serwer OpenSSH, jeśli to konieczne otwórz Usługi -> OpenSSH -> Właściwości -> Typ uruchomienia -> Automatyczny (opóźniony)

  2. Zainstaluj i uruchom SFTPNetDrive, kliknij prawym przyciskiem myszy ikonę w ukrytych ikonach -> Okno główne (a może już otwarte) -> Profil -> nowy profil (serwer: localhost, użytkownik: * pwd: * Dysk litera: F (lub inny) Zaawansowane - > (Protokół -> odznacz kompresję; Określony folder: G: \))

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

Nie jestem pewien, jak stabilny, ale mogłem otwierać pliki w WSL.

Christopher Crawford
źródło
-2

Istnieją (co najmniej) dwa sposoby korzystania z Bash w systemie Windows:

  1. The Bash dostarczany z WLS (podczas instalacji Linuksa na Windows 10 ze Sklepu Windows lub innych źródeł)
  2. Git-Bash w systemie Windows

Git-Bash ma dostęp do folderów sieciowych (zainstaluj git-bash> przejdź do folderu sieciowego> kliknij prawym przyciskiem myszy> „Git Bash tutaj”> uruchom, pwdaby zobaczyć ścieżkę).

Jeśli trzeba użyć wersji WLS bash, można nazwać Git Bash od WLS bash, co następuje:

WLS_Bash_Shell:$ /mnt/c/Program\ Files/Git/bin/bash.exe ScriptThatUsesNetworkFolders.sh
LoMaPh
źródło