Pytanie:
Jak zapobiec automatycznemu montowaniu partycji w El Capitan
lexu
2016-03-21 14:43:30 UTC
view on stackexchange narkive permalink

Na moim MacBooku są dwie partycje rozruchowe.Działający, bootowalny El Capitan jest zainstalowany na obu.

Jak mogę zapobiec automatycznemu montowaniu partycji 2 podczas uruchamiania z partycji 1?

Według wielu stron, które znalazłem przez Google, jest to robione przezedycja fstab przez vifs i dodanie linii

  UUID = uuid_of_partition2_here none hfs rw, noauto  

Ale to nie działa!Partycja i tak jest zamontowana!

idk, jeśli białe znaki są ważne, mam tylko pojedyncze spacje między tymi elementami, a moje działa dobrze, aby zapobiec pojawieniu się sklonowanego dysku rozruchowego.Następnie może dwukrotnie / potrójnie sprawdź identyfikator UUID
@Tetsujin: zmiana każdego w pliku na pojedynczą spację rozwiązała problem ... jeśli napiszesz swój komentarz jako odpowiedź, z przyjemnością oznaczę go jako właściwy!
Ach, cieszę się, że okazało się, że to prosta poprawka.Napiszę to jako odpowiedź ...
Mam to `chmod + x` (plik wykonywalny) w moim katalogu` ~ / bin / `. https://gist.github.com/voltechs/fc48c9683d50c7c03cab2f0a6477d8da
Sześć odpowiedzi:
#1
+4
lexu
2016-03-22 13:26:23 UTC
view on stackexchange narkive permalink

Komentarze i obserwacje Tetsujin i user3439894 skłoniły nas do przeprowadzenia testów.

Okazuje się, że jest więcej niż jeden UUID, kiedy patrzysz na dyski i partycje oraz polecenie „ diskutil list ” nie zgłasza UUID, który musi być używany w poleceniach vifs / fstab.

  root% > diskutil info disk1 | grep -e UUID  

Pokazuje, że istnieją identyfikatory UUID wolumenu, dysku / partycji, LV, LVF i LVG .. Interesują mnie tylko pierwsze dwa!

Kiedy wchodzę na diskutil list , otrzymuję „Disk / Partition UUID”, kiedy wpisuję diskutil info disk1 , otrzymuję zarówno „Disk / Partition UUID”, jak i „Volume UUID” "(i nie tylko ...) Otrzymuję również" Nazwę woluminu "(etykietę dysku)

Niektóre testy, które przeprowadziłem z woluminem - UUID i etykietą dysku wskazują:

  • UUID w vifs / fstab to „UUID woluminu”, nie używaj zakładek!
  • polecenie UUID w vifs / fstab nie działa z „UUID dysku / partycji”, tabulacja / spacja nie ma znaczenia w tym przypadku
  • podczas używania składni „LABEL”, nie ! „t use zakładki

Oto dwa przykłady dotarłem do pracy:

  UUID = <Volume UUID><SPACE>none<space>rw, noautoLABEL = <Volume Name><SPACE>none<space>rw, noauto  

<Volume UUID> i <Volume Name> dysku wewnętrznego można znaleźć, uruchamiając

  diskutil info disk1 | grep -e "Nazwa \ woluminu" -e "Wolumen \ UUID"  

W moim systemie informacje o dysku zewnętrznym pojawiają się dla disk2s1 i disk3s1

Niezłe badanie.Wydawałoby się jednak, że zamiast próbować zapamiętać, które mogą przyjmować tabulatory, a które nie, najbezpieczniejszą metodą jest zawsze używanie pojedynczych spacji.
Zgadzam się ... ale użycie zakładek sprawia, że elementy są wyrównane, zwykle używam ich, gdybym kiedykolwiek ujrzał to na sucho (Ale najwyraźniej nie w vifs / fstab :-)
Wydaje się, że brakuje w nich pola ... Typ systemu plików (hfs, msdos itp.) Powinien następować po punkcie montowania (w tych przykładach jest to „none”).(Zobacz `man fstab`, aby zapoznać się z opisem specyfikacji).
#2
+3
Volte
2017-12-31 04:26:17 UTC
view on stackexchange narkive permalink

To są świetne (i poprawne) odpowiedzi!

Pomyślałem, że udostępnię mały skrypt / narzędzie, którego używam, aby to ułatwić.

Mam plik wykonywalny no_automount w moim katalogu ~ / bin / . (Nie zapomnij o chmod + x it!)

https://gist.github.com/voltechs/fc48c9683d50c7c03cab2f0a6477d8da

  #! / usr / bin / env ruby

# Użycie: no_automount / Volumes / My \ Disk

diskinfo = `diskutil info '# {ARGV [0]}'` .gsub ("\ n \ n", "\ n"). split ("\ n"). collect do | b |
    b.strip.split (/: \ s + /)
end.to_h

disk_uuid = diskinfo ['UUID woluminu']
disk_type = diskinfo ['Type (Bundle)']
disk_name = diskinfo ['nazwa woluminu']

fstab_filename = „/ etc / fstab”
text = File.read (fstab_filename)

new_contents = text.gsub (/ UUID = # {disk_uuid}. * (:? \ n) /, „”)
new_contents << "UUID = # {disk_uuid} none # {disk_type} rw, noauto # # {disk_name}"

File.open (fstab_filename, "w") {| file | file.puts new_contents}
 

Po użyciu skryptu, jeśli sudo vifs zobaczysz coś takiego (mój wygląda tak).

  #
# Uwaga - ten plik należy modyfikować tylko za pomocą vifs (8)
#
# Niezastosowanie się do tego nie jest obsługiwane i może być destrukcyjne.
#

UUID = 51C2250E-9CE4-1953-8AF6-3EEDD46F594D brak ntfs rw, noauto # Windows 10
UUID = 7E55582C-6D91-4148-28C6-208D03071164 none ntfs rw, noauto # Windows Storage
UUID = CF294178-3B0D-4B23-AC72-24D10AAC6735 brak ntfs rw, noauto # Windows Games
 
dzięki, przyjrzę się temu po zakończeniu obchodów roku!
Uwielbiam odpowiedzi z samodzielnie działającym kodem❗️ To samo się wyjaśnia
#3
+3
Bruno Bronosky
2019-12-18 09:31:37 UTC
view on stackexchange narkive permalink

Zaktualizowano dla macOS Mojave, macOS Catalina itp.

macOS Mojave 10.14 i nowsze są bardziej rygorystyczne pod względem edycji plików systemowych.

Edycja / etc / fstab jest zdecydowanie odradzana. Teraz to, czego chcesz użyć vifs . Zebrałem informacje z innych odpowiedzi i stworzyłem bash oneliner, który możesz uruchomić, a otrzymasz listę linii UUID… noauto , które możesz dodać dla każdego dysku. Następnie możesz swobodnie skopiować wybrany wiersz, a następnie użyć sudo vifs i bezpiecznie wkleić go do pliku.

  mount | sed -E '/ \ dev \ / disk /! d; s / ^ ([^] +) [^ /] * ([^ (] +) \ (. * / \ 1: \ 2 / '| while read mount_info; do echo -e "\ n \ nDisk $ {mount_info %%: *} jest zamontowany w $ {mount_info ## *:} "> / dev / stderr; sudo diskutil info $ {mount_info %%: *} | grep UUID | tee / dev / stderr | printf '# Aby zapobiec automatycznemu zamontuj ten dysk, dodaj następujący wiersz do `sudo vifs` \ tUUID =% s none rw, noauto \ n \ n '$ (sort | head -n1 | sed' s /.*: * //; s / * // g; ') | sed' s /.* UUID =. * / <no UUID znaleziony> / '| tr' \ t '' \ n '; gotowe
 

To potworny oneliner, nie chcę cię zanudzać wyjaśnieniem, do czego służy. (Ale jeśli dostanę prośbę w komentarzach, zaktualizuję to.)

Oto przykład uruchomienia:

  $ mount | sed -E '/ \ dev \ / disk /! d; s / ^ ([^] +) [^ /] * ([^ (] +) \ (. * / \ 1: \ 2 / '| \
  podczas czytania mount_info; zrobić
    echo -e "\ n \ nDisk $ {mount_info %%: *} jest zamontowany w $ {mount_info ## *:}" > / dev / stderr;
    sudo diskutil info $ {mount_info %%: *} | grep UUID | \
      tee / dev / stderr | \
      printf "$ (echo \
        '# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz' \
        'to `sudo vifs` \ tUUID =% s none rw, noauto \ n \ n'
      ) "$ (sort | head -n1 | sed 's /.*: * //; s / * // g;') | \
      sed 's /.* UUID =. * / <no UUID znaleziony> /' | \
      tr '\ t' '\ n'
  Gotowe


Dysk / dev / disk1s5 jest zamontowany w /
   UUID objętości: 066AF3CD-C098-4D28-9C3A-AD6C53A443ED
Identyfikator UUID dysku / partycji: 066AF3CD-C098-4D28-9C3A-AD6C53A443ED
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = 066AF3CD-C098-4D28-9C3A-AD6C53A443ED brak rw, noauto



Dysk / dev / disk1s1 jest zamontowany w / System / Volumes / Data
   UUID objętości: 760B55A4-3E55-4FFA-B22D-B48F0D227EEB
   Identyfikator UUID dysku / partycji: 760B55A4-3E55-4FFA-B22D-B48F0D227EEB
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = 760B55A4-3E55-4FFA-B22D-B48F0D227EEB none rw, noauto



Dysk / dev / disk1s4 jest zamontowany w / private / var / vm
   UUID objętości: B6011DF2-6391-4E5C-9A94-D73FF9AB51DC
   Identyfikator UUID dysku / partycji: B6011DF2-6391-4E5C-9A94-D73FF9AB51DC
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = B6011DF2-6391-4E5C-9A94-D73FF9AB51DC none rw, noauto



Dysk / dev / disk1s3 jest zamontowany w / Volumes / Recovery
   UUID objętości: 14EDD79D-0EDA-42B0-A1C4-7B025159146B
   Identyfikator UUID dysku / partycji: 14EDD79D-0EDA-42B0-A1C4-7B025159146B
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = 14EDD79D-0EDA-42B0-A1C4-7B025159146B brak rw, noauto



Dysk / dev / disk2s1 jest zamontowany w / Volumes / Install macOS Mojave
   UUID objętości: B14957BD-83D2-3A36-A828-89CF03C7F45A
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = B14957BD-83D2-3A36-A828-89CF03C7F45A none rw, noauto



Dysk / dev / disk3s2 jest zamontowany w / Volumes / TM Backup
   UUID woluminu: 5E0A580C-2894-3529-9B52-3E33BD10DF53
   Identyfikator UUID dysku / partycji: 22D06480-5187-48BD-9079-D95D34B0494E
# Aby zapobiec automatycznemu montowaniu tego dysku, dodaj następujący wiersz do `sudo vifs`
UUID = 22D06480-5187-48BD-9079-D95D34B0494E none rw, noauto
 
Fajny pomysł - ale niestety w moim systemie (macOS 10.15.5) generuje tylko jeden wpis, mimo że jest zamontowanych 7 woluminów.
@stef, jeśli udostępnisz podsumowanie lub wklejony fragment wyniku „mount” w systemie, odpowiem również, że będę pracować dla 10.15.5.Jeśli SO nie pozwoli Ci udostępnić linku, po prostu upuść nazwę usługi i skrót.Mam cię.
@stef, działa zsh zamiast bash?Co dziwne, wysyła tylko pierwszy dysk w zsh.Nie wiem, dlaczego dokładnie, ale działa poprawnie w bash.Po prostu uruchom `bash`, a następnie uruchom oneliner!
@BrunoBronosky, możesz rozważyć dostosowanie swojego onlinera do pracy w zsh, ponieważ jest to nowe domyślne ustawienie w Catalinie i nie tylko.Nie zorientowałem się jeszcze, dlaczego wyświetla tylko pierwszą linię w zsh, chociaż jestem pewien, że odpowiedź będzie fascynująca.
@Chris tak, sir, zsh jako domyślne w Catalinie.Próbuję iść z duchem czasu.Wysłałem Bruno wyjście z mojego systemu, może przydaje się śledzenie rozbieżności.
Doskonała odpowiedź.Byłoby wspaniale, gdyby działało z zsh
#4
+2
Tetsujin
2016-03-21 15:55:18 UTC
view on stackexchange narkive permalink

Wygląda na to, że składnia musi używać pojedynczych spacji, a nie tabulatorów, aby została rozpoznana przez system.

Byłoby to zgodne z wieloma procesami wiersza poleceń;jedynym wyjątkiem, który przychodzi na myśl, jest plik hosts , w którym można użyć dowolnej ilości białych znaków.

To dałoby poprawną składnię.

 UUID = uuid_of_partition2 none hfs rw, noauto  

zamiast

  UUID = uuid_of_partition2 none hfs rw, noauto  

... subtelna, ale ważna różnica.

Zgodnie z [stroną podręcznika] (https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/fstab.5.html) dla _fstab_ is states, „_Każdy system plików jest opisany naoddzielny wiersz; ** pola w każdym wierszu oddzielone są tabulatorami lub spacjami ** ._ ".Uwaga: dodałem pogrubione wyróżnienie w odpowiedniej części.
Interesujące - jednak empirycznie wydaje się, że tak nie jest.Czy to był człowiek dla Maca czy nixa?
W ramach testu po prostu zmodyfikowałem mój istniejący plik _fstab_, zastępując _spaces_ _tabs_, a następnie podłączyłem dysk, który ma trzy partycje, z których dwie nie są montowane.Tylko pierwsza partycja zamontowana, tak jak powinna, i dwie, które nie są montowane, nie zostały zamontowane, nawet z _tabs_ jako separatorem pól, jak podano na stronie podręcznika.Zauważ, że jest to w systemie OS X 10.8.5 i być może coś się zmieniło w systemie OS X 10.11.
Jeśli zdążę później, przetestuję na El Cap, z zakładkami i wieloma, a nie pojedynczymi spacjami.Nie mogę tego teraz zrobić, ponieważ za dużo biegam na żywo.
@user3439894:, jak wspomniano powyżej, mam doświadczenie z El Capitan.Wszystkie dokumenty, które przeczytałem sofar, doprowadziły mnie do przekonania, że tabulacja / spacja jest równoważna. Później przeprowadzę kilka testów ..
Zrobiłem kilka testów i napiszę to, co znalazłem w osobnej odpowiedzi.
„no auto” powinno być pojedynczym słowem, a „noauto” w powyższych przykładach.(mogą być interpretowane w sposób, który działa tak, jak jest, ale nie są poprawne)
#5
  0
Michael Amie
2016-07-26 10:59:07 UTC
view on stackexchange narkive permalink

W systemie OS X 10.11.6 odstępy między odstępami a tabulacjami nie miały dla mnie znaczenia (potwierdzono, że używałem „prawdziwych” zakładek, przeglądając / etc / fstab w edytorze szesnastkowym i obserwując 0x09 dla bajtu separatora pól).

Użyłem jednak vifs , ale z tego co wiem, po prostu blokuje dostęp do pliku / etc / fstab .Testowano również z początkowym znakiem nowej linii (pusta linia) pod komentarzem do pliku, a także ostatnim wierszem fstab niezawierającym nowej lub nowej linii (pusta linia pod ostatnim wpisem fstab)

Najważniejsze, co się dla mnie liczyło, to:

  1. Użyj UUID woluminu zamiast UUID dysku / partycji
  2. Określenie typu systemu plików jest kluczowe (brakowało tego w przykładzie lexusa)

Niesprawdzone czynniki:

  1. no auto vs noauto (użyłem noauto )
  2. Edytor tekstu skonfigurowany do używania wielu spacji dla kart
Czy mógłbyś rozwinąć „typ systemu plików”.Gdzie mam to określić?Czy znasz dokumentację na ten temat?
`man fstab` wymienia obsługiwane systemy plików, jak również opisuje różne oczekiwane" tokeny "(słowa kluczowe). Opublikowałem tylko dlatego, że wyglądało na to, że zachowanie fstab zostało przez chwilę zepsute na El Capitan, ale wydaje się, że działa zgodnie z oczekiwaniami / dokumentacją od systemu OS X 10.11.6.
#6
  0
Peter D
2016-11-11 15:13:56 UTC
view on stackexchange narkive permalink

Polecenie zawiera typ systemu plików do podłączenia.Upewnij się, że jeśli nie montujesz dysku Apple, który jest hfs, zamień go na swój typ, na przykład ntfs, jeśli jest to nowszy dysk z systemem Windows.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...