Mam system sid Debiana (Wheezy) (i to samo dla arch), bez żadnego środowiska graficznego (i nie ma w ogóle Xorga).
Mogę montować moje karty SD, pamięci USB, zewnętrzny dysk twardy poprzez etykietowanie w określonym katalogu /media/
ręcznie z mount
/ umount
i odpowiednimi wpisami /etc/fstab
lub automatycznie podczas uruchamiania, ale jest to przekonujące, restrykcyjne i niewystarczająco dynamiczne dla moich potrzeb: jeśli chcę, aby zostały zamontowane /media/<LABEL>
, każde urządzenie z innym <LABEL>
wymaga własnego wpisu, a <LABEL>
także należy ręcznie utworzyć / usunąć każdy podkatalog /media/
).
Więc, co jest najlepszym sposobem, aby zamontować je automatycznie w /media/<LABEL>
momencie włożenia (i odłączyć je od systemu plików, jak tylko są one odłączone od zasilania bez względu na to, jak ryzykowne jest dla danych )?
Idealne rozwiązanie:
- wykryć, gdy nośnik jest podłączony w (tj gdy dodaje się
/dev/
jakosdax
,sdbx
... przezudev
) - utwórz katalog
/media/
zgodnie z jego etykietą (etykieta nośnika wymiennego) - zamontuj go w katalogu
/media/<LABEL>
wRW
trybie (jeśli system plików obsługuje to) zflush
opcją (dla avfat
) - wykryć, czy nośnik został odłączony
- jeśli tak, odmontuj go z systemu plików
- usuń odpowiedni katalog z
/media/
(urządzenia powinny być montowane w trybie synchronicznym nadmiernie, aby uniknąć utraty danych po odłączeniu na gorąco z powodu edycji buforowania :sync
jest to zbyt wiele dla vfat
nośników wymiennych, dlatego flush
zostało stworzone jako kompromis , mniej bezpieczne sync
, ale mniej ryzykowne w zależności od życia - motocykle pamięci flash)
Znalazłem kilka informacji na temat autofs
, HAL
, udisks
, udisks2
, usbmount
itd., Ale nie jest jasne, który z nich jest przestarzała lub preferowane, a mimo to, nie zorientowali się, jak skonfigurować je łatwo w moim systemie to zrobić, aż do teraz ...
źródło
sync
, demon może odmontować urządzenie z FS, jeśli wykryje, że zostało odłączone bez utraty danych. Wszystkie dystrybucje pulpitu to robią. Chcę tego w terminalu.halevt
. Jeśli chodzi o odmontowanie, na ogół DE oczekuje, że wyjmiesz urządzenie z menedżera plików, zanim fizycznie je odłączysz.fdisk -l
, a następniemount
- to dwa polecenia, ale OK, jeśli chcesz zautomatyzować, trzeba analizowaćfdisk -l
dane wyjściowe, a następnie umieścić go wmount
- zrobić taką rzeczy zhead
,tail
,tr
,cut
, itd., ale profesjonaliści zwykle robią to zawk
, a nawet lepiej, szukają danych we właściwym miejscu. Jeśli chodzi o usuwanie, przynajmniej dla mnie, gdy montuję/mnt
, odbywa się to automatycznie. O wyzwalaczu (po podłączeniu) nie mam pojęcia, ale powiedz nam, kiedy to rozwiążesz.Odpowiedzi:
Myślę, że szukasz
pmount
.Jeśli chcesz automatycznego montażu po włożeniu, zobacz Automounting USB stick w Debianie .
Jeśli Twój system używa udisks2 , jest to preferowany sposób reagowania na wstawienie wymiennego urządzenia pamięci masowej. Zobacz Arch Wiki, aby uzyskać porady dotyczące konfiguracji Udisk.
W przeciwnym razie programem reagującym na pojawienie się nowego urządzenia jest udev , więc automatyczne podłączanie jest uruchamiane przez regułę udev . Usbmount pakiet zapewnia udev zasady automatycznego montowania urządzeń pamięci masowej USB i kilka innych. Wywoływanie
mount
z reguł udev nie działa w systemach plików FUSE (takich jak NTFS-3G), więc w razie potrzeby używaj udisk.Nie można automatycznie odmontować multimediów po ich usunięciu, ponieważ przyczynowość nie działa w ten sposób. Media muszą zostać odmontowane przed ich usunięciem. W przypadku nośników tylko do odczytu można odmontować po usunięciu, chociaż może to mylić niektóre aplikacje, jeśli mają otwarte pliki w nagle utraconym systemie plików. W przypadku zapisywalnego nośnika odłączenie zamontowanego systemu plików może spowodować uszkodzenie danych.
źródło
flush
opcja montowania zaprojektowana specjalnie w celuvfat
uniknięcia tych problemów: zapis nie jest wykonywany po każdym bloku, ale gdy tylko urządzenie wydaje się nieaktywne. A wspomnienia flash znacznie wydłużyły ich ślepe cykle życia. Teraz oczywiście użytkownik musi pamiętać, aby nie odłączać urządzeń podczas otwierania plików lub podczas kopiowania (lub wkrótce potem). Ale to dobry kompromis./media/usb-*
, co nie odpowiada moim potrzebom. Chcę móc automatycznie montować urządzenia/media/<DEV_LABEL>
zflush
parametrem, gdy zostaną wykryte (jeśli to możliwe, z dynamicznym tworzeniem katalogu), a także odmontować je i automatycznie usunąć katalogi,/media/
jeśli nie zostaną już wykryte. Ryzyko, które podejmuję, zależy ode mnie.usbmount
od tej pory nie obsługuje NTFSjessie
: bugs.debian.org/774149Oto jak to ostatnio zrobiłem i jestem teraz całkiem zadowolony z tego podejścia. Dotyczy to Ubuntu 12.04 + gentoo, ale chyba każda dystrybucja, która pozwala zainstalować udev i autofs powinna działać.
Wymagania wstępne: Musisz zainstalować udev + autofs.
Krok 1)
Utwórz następujący plik „/etc/udev/rules.d/90-usbsd-auto.rules” (oczywiście możesz użyć dowolnej nazwy, o ile kończy się ona na „.rules”). :
Co to robi: Tworzy dwa dowiązania symboliczne, jedno dla partycji urządzenia pamięci USB w „/ dev / usbdisks / <...>”. Użyje etykiety partycji pamięci USB lub nazwy jądra, jeśli nie ma etykiety. Drugie dowiązanie symboliczne będzie prowadzić od „/ media / usb / <...>” do „/ media / autousb / <...>” w celu obsługi automountera (patrz krok 2).
Uwaga: Początkowo nie używałem reguł ze zmiennymi ID_FS_LABEL_ENC, ponieważ moim zdaniem jest to niebezpieczne. Co się stanie, jeśli podłączysz dwie pamięci USB, które mają tę samą etykietę?
Ale plakat specjalnie chciał użyć etykiety dysku USB, więc odpowiednio zmodyfikowałem reguły.
Aby upewnić się, że udev czyta te zasady, użyj
W tym pliku reguł udev wszystko jest skonfigurowane do automatycznego montażu partycji urządzenia pamięci USB. Pamiętaj jednak, że w tej chwili urządzenie NIE zostanie automatycznie zamontowane (celowo). Zostanie automatycznie zamontowany, gdy go użyjesz
Krok 2)
Skonfiguruj autofs na automount / media / autousb / <...>: Dodałem następujący wiersz do mojego pliku „/etc/auto.master” (dla Ubuntu 12.04):
Oznacza to, że AutoFS odmontuje urządzenie po 60 sekundach braku aktywności. Możesz użyć mniej lub więcej, w zależności od upodobań.
W przypadku Gentoo musisz zmodyfikować plik „/etc/autofs/auto.master”, aby jego użycie było sensowne
Teraz utworzyłem plik „auto.usb” o następującej treści:
To auto.usb musi być wykonywalne, aby autofs używał go jako skryptu (bash). Na przykład
Co to robi: ten skrypt powie AutoFS (/ usr / sbin / automount), jak zamontować partycję urządzenia pamięci USB.
Skrypt najpierw użyje „/ sbin / blkid”, aby dowiedzieć się, jaki system plików znajduje się na partycji.
Skrypt zapewni wtedy odpowiednie opcje montowania w zależności od partycji urządzenia.
Uwaga: Dołączyłem przykładowy kod dla systemów plików „vfat” (prawdopodobnie najczęściej spotykany w przypadku pamięci USB), „ntfs” i „xfs”. Oczywiście jest to dość łatwe do rozszerzenia, aby obsługiwać więcej systemów plików.
Krok 3) Opcjonalnie ... Aby „wysunąć” == odmontować pamięć USB (lub partycje na pamięci USB), utwórz skrypt w katalogu / sbin / usbeject:
Za pomocą tego skryptu możesz użyć polecenia „sudo usbeject”, aby odmontować wszystkie zamontowane partycje urządzeń USB (mówiąc automount, aby je odmontował).
Oczywiście możesz po prostu upewnić się, że partycja nigdzie nie jest używana; Automounter odmontuje partycję po upływie 60 sekund ...
Prawdziwą sztuczką jest użycie dowiązań symbolicznych z „/ media / usb” do „/ media / autousb”:
źródło
Ok, minęło dużo czasu, ale nadal odpowiem na moje pytanie najlepszą opcją, jaką znalazłem na razie. Podsumowując: utwórz
udev
regułę powiązaną z niektórymi skryptami (która utworzy / usunie katalogi i odblokuje / zamontuje urządzenia wymienne) i dołącza doudev
typu zdarzenia urządzenia =partition
.1 - Tworzenie skryptów dodawania / usuwania
Zapisz poniższy skrypt
storage-automount.sh
do/lib/udev/
i uczynić go wykonywalnym (sudo chmod a+x /lib/udev/storage-automount.sh
):Zapisz poniższy skrypt
storage-autounmount.sh
do/lib/udev/
i uczynić go wykonywalnym (sudo chmod a+x /lib/udev/storage-autounmount.sh
):2 - Tworzenie
udev
reguły dołączania tych skryptów do zdarzeńNa koniec dodaj
udev
regułę/etc/udev/rules.d/
, na przykład85-storage-automount.rules
:i upewnij się, że ma takie same uprawnienia jak inne reguły w tym folderze / katalogu
Teraz, kiedy podłączysz urządzenie pamięci masowej, zostanie utworzony katalog
/media/
zgodnie z nazwą partycji (nie pamiętam, ale myślę, że działa również z partycją NTFS), a twoja partycja zostanie do niej podłączona. Jest to R / W dla użytkowników, jeśli maszplugdev
grupę w systemie. Ponadto urządzenia są montowane w trybie synchronicznym, aby ograniczyć ryzyko utraty danych w przypadku odłączenia na gorąco.Gdy urządzenie zostanie usunięte, zostanie odmontowane, a katalog zostanie usunięty
/media
Ponadto narzędziem do monitorowania
udev
zdarzeń sąudevadm monitor
opcje takie jak--env
lub--property
:Jest to testowane i działa dobrze zarówno na debianie, jak i archu, ale prawdopodobnie działa na wszystkich dystrybucjach, które na nim polegają
udev
.źródło
udev
?Myślę, że jest dość późno, ale opublikuję to, jeśli ktoś będzie tego potrzebować: (także moja pierwsza odpowiedź StackExchange)
Po sprawdzeniu rozwiązania w wielu miejscach znalazłem proste rozwiązanie w Arch Wiki:
Link do Arch Wiki .
Możemy dodać regułę udisks2, aby zmienić domyślny katalog montowania z
/run/media/$USER/
na/media/<Label>
.Dodaj następującą regułę
/etc/udev/rules.d/
o nazwie takiej jak99-udisks2.rules
:ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
Następnie możemy po prostu zainstalować proste narzędzie, takie jak Udiskie do automount .
źródło
Proszę zobaczyć stronę ArchWiki Udev . Nie należy wykonywać
mount
z reguł Udev ani ze skryptów wykonywanych przez reguły Udev.Jednak, jak pokazano w projekcie udev-media-automount , jest to dość proste, wywołując jednostkę Systemd z reguły Udev, która następnie wywołuje skrypt, który wykonuje montaż. W przeciwieństwie do udisks2 i innych rozwiązań, udev-media-automount jest nastawiony na prosty przypadek, w którym chcesz zamontować coś jako
root
użytkownik bez konieczności oczekiwania na środowisko pulpitu lub „sesję użytkownika”. Wydaje się, że jest dokładnie tym, o co prosi OP, i uznałem, że jest funkcjonalny i łatwy do zrozumienia.źródło
Znalazłem sposób na zrobienie tego poprzez edycję pliku / etc / fstab. Prosty wpis wygląda następująco:
/dev/sdb1 /media/robot/hdd1 ntfs defaults 0 0
<file system> <mount point> <type> <options> <dump> <pass>
źródło
/etc/fstab
są montowane automatycznie tylko podczas rozruchu.