Dostęp do nośników wymiennych w Bash na Windowsie

38

Czy istnieje sposób na uzyskanie dostępu do nośników wymiennych (np. Pamięci USB lub kart SD) z poziomu Bash w systemie Windows?

Bash w systemie Windows używa DriveFs do montowania stałych dysków w /mntfolderze, ale nie instaluje automatycznie nośników wymiennych. I nie wygląda na to, aby umieszczał je w /dev:

Aaron@MYPC:/$ ls /dev
block  fd  kmsg  lxss  null  ptmx  pts  random  shm  stderr  stdin  stdout  tty  tty0  tty1  urandom  zero

Czy istnieje sposób na zamontowanie dysków wymiennych? Czy istnieje sposób na dostęp do bazowego urządzenia blokowego?

Aaron Campbell
źródło
5
Zobacz ten wpdev.uservoice.com/forums/… .
CodeIt
wpisz mounti sprawdź, czy to daje wskazówki. Jeśli używasz cygwinbash, ścieżka to / cygdrive /.
strobelight,
Nie: Aaron@MYPC:~$ mount rootfs on / type rootfs (rw,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204320k,mode=755)[itd.]
Aaron Campbell
3
Możliwy duplikat powłoki Ubuntu Bash
DavidPostill
Podobnie, chociaż pytanie to konkretnie wspomina o nośnikach wymiennych, a to odnosi się do nośników stałych. Najwyżej oceniana odpowiedź na ten post dotyczy tylko częściowo tego pytania.
Aaron Campbell,

Odpowiedzi:

50

Dobra wiadomość, teraz można montować nośniki USB (w tym sformatowane jako FAT) i udziały sieciowe za pomocą drvfs w systemie Windows 10:

Zamontuj nośniki wymienne: (np. D :)

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

Aby bezpiecznie odmontować

$ sudo umount /mnt/d

Możesz także montować udziały sieciowe bez smbfs:

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

Potrzebujesz co najmniej kompilacji 16176, więc może być konieczne włączenie programu Windows Insider, a następnie aktualizacja systemu Windows. Źródło: https://blogs.msdn.microsoft.com/wsl/2017/04/18/file-system-improvements-to-the-windows-subsystem-for-linux/

użytkownik643011
źródło
4
Nie zamieszczaj tej samej odpowiedzi na wiele pytań. Jeśli ta sama informacja naprawdę odpowiada na oba pytania, to jedno pytanie (zwykle nowsze) powinno zostać zamknięte jako duplikat drugiego. Możesz to wskazać, głosując, aby zamknąć go jako duplikat lub, jeśli nie masz wystarczającej reputacji, podnieść flagę wskazującą, że jest to duplikat. W przeciwnym razie dostosuj swoją odpowiedź na to pytanie i nie wklejaj tej samej odpowiedzi w wielu miejscach.
DavidPostill
7
Drogi Dawidzie. Możesz sam podnieść flagę do powielania. Ta odpowiedź jest dostosowana do pytania i chętnie przedstawimy sugestie dotyczące ulepszeń.
user643011
2
Drogi „użytkowniku”, głosowałem tutaj za twoim komentarzem, zakładając, że to, co powiedziałeś, było, cóż, prawdą… Teraz zdaję sobie sprawę, że się myliłem, ale nie mogę cofnąć komentarza, więc muszę wyraźnie zapytać: jak dokładnie czy jest to „dostosowane do pytania”, a jednocześnie jest dokładną „bitową” kopią drugiej odpowiedzi ?
Sz.
Hej Sz! Ponieważ to jest prawda? Odpowiada dokładnie: Czy istnieje sposób na uzyskanie dostępu do nośników wymiennych z poziomu Bash w systemie Windows. Jeśli masz lepszą odpowiedź, możesz lepiej odpowiedzieć na pytanie lub zaproponować edycję tego. Dzięki!
user643011,
wrong fs type, bad option, bad superblock on G:, missing codepage or helper program, or other error- również przeczytaj ten komentarz ; nie odpowiadaj na duplikaty.
Pozew Fund Moniki z
10

Czy istnieje sposób dostępu do nośników wymiennych z poziomu Bash w systemie Windows?

Aktualizacja:

Najwyraźniej jest to teraz możliwe, począwszy od wersji 1017 systemu Windows 10.

Zobacz https://superuser.com/a/1209701/337631 .


Nie.

W tej chwili istnieją ograniczenia dotyczące montowanych napędów:

Aby dysk pojawił się w katalogu / mnt /, musi spełniać następujące kryteria:

  1. Dysk musi być dyskiem stałym
  2. Dysk musi być sformatowany w systemie plików NTFS.

Zostało to podniesione jako problem: Dyski inne niż C: nie są zamontowane w / mnt # 1079 . Nadal jest oznaczony jako „Otwarty”.

Aby ułatwić współdziałanie z systemem Windows, WSL korzysta z systemu plików DrvFs. WSL automatycznie montuje wszystkie stałe dyski z obsługiwanymi systemami plików w / mnt, takimi jak / mnt / c, / mnt / d itd. Obecnie obsługiwane są tylko woluminy NTFS i ReFS.

Źródłowa obsługa systemu plików WSL


Dalsza lektura

DavidPostill
źródło
Teraz jest rozwiązanie: superuser.com/a/1209701/182880
user643011
0

Jeśli urządzenia nie /devma, prawdopodobnie konfiguracja nawet nie wykrywa dysku.

Polecenie lsblkpowinno zawierać listę wszystkich podłączonych urządzeń blokowych (napędów). Jeśli nie ma go na tej liście, najlepiej założyć podłączenie urządzenia przed rozpoczęciem bash.

Nie widzę w twoim pytaniu żadnej wzmianki o tym, jaką metodę korzystania z bash na Windowsach znalazłeś, ale dla większości nie powinno być zbyt trudno zrestartować bash.

Jeśli lsblkpokazuje twój dysk, znajdź ścieżkę, którą wypisuje i wpisz mount <path shown by lsblk> <path you want the drive to be mounted to>

timotree
źródło
mountDyski wymienne nie są jeszcze obsługiwane. „WSL automatycznie montuje wszystkie stałe dyski z obsługiwanymi systemami plików w / mnt, takimi jak / mnt / c, / mnt / d itd. Obecnie obsługiwane są tylko woluminy NTFS i ReFS.” Zobacz blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support
DavidPostill
lol. Zrobiłem to już jakiś czas temu :) Zobacz moją odpowiedź tutaj Manipuluj plikami systemu Windows za pomocą powłoki Linux
Bash