Mac Lion: fstab jest przestarzałe. więc co go zastępuje, aby zapobiec montowaniu partycji?


39

Jeśli fstabjest to przestarzałe w Lion (i myślę, że wcześniej?), W jaki sposób można właściwie zapobiec zamontowaniu partycji przy starcie systemu?

Jest to luźno związane z tym pytaniem, które na ten post nie ma odpowiedzi.

Edytować:

Więc moje zamieszanie wynika z przeczytania o fstab i polecenia edytowania /etc/fstab.hd. Więc ... /etc/fstabto, co muszę utworzyć i gdzie dodać informacje o UUID, aby zapobiec montowaniu partycji?

$ cat /etc/fstab.hd 
IGNORE THIS FILE.
This file does nothing, contains no useful data, and might go away in
future releases.  Do not depend on this file or its contents.

Jest na to skrypt ( opublikowany przez autora na forum Apple ) - prosty w użyciu, przetestowany pod kątem 10.9 i 10.9.1.
Dmitrij Verkhoturov

Przyjęta odpowiedź kwestionuje założenie, że fstab jest przestarzały. Czy powinniśmy odpowiednio edytować pytanie?
DA Vincent

Odpowiedzi:


29

Ani man fstabani man diskarbitrationd(patrz tutaj na przykład) nie wspominają o rezygnacji z /etc/fstab.

Nie ma go domyślnie, ale dlaczego miałby być, gdyby był pusty, ponieważ wartości domyślne są dobre? Jest tam, jeśli potrzebujesz.


Roszczenia o wycofanie się krążyły fstabjuż po Internecie.

Od tutaj :

etc / fstab jest przestarzałe w systemie Leopard

Od tutaj :

Chciałem zaproponować edycję pliku / etc / fstab, ale najwyraźniej był on przestarzały w Leopardzie i prawdopodobnie został teraz usunięty z Snow Leopard ...

Oprócz faktu, że w dokumentacji nie ma wzmianki o przestarzałości, dlaczego Apple dodałoby narzędzia do prawidłowej edycji nieaktualnych plików konfiguracyjnych?

Cytowanie man vifs:

NAME
     vifs -- safely edit fstab
[...]
HISTORY
     The vifs utility originates from Mac OSX 10.5.

Podczas działania następującego programu (nieskończona pętla, Ctrl-C, aby wyjść), żaden dysk nie zostanie zamontowany, przy odpowiednich warunkach można go oczywiście kontrolować bardziej precyzyjnie:

#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>

DADissenterRef BlockMount(DADiskRef disk, void *context)
{
        DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, kDAReturnNotPermitted, CFSTR("forbidden!"));
        return dissenter;
}

int main (int argc, const char * argv[])
{
    DAApprovalSessionRef session = DAApprovalSessionCreate (kCFAllocatorDefault);
    if (!session)
    {
        fprintf(stderr, "failed to create Disk Arbitration session");
    }
        else
        {
        DARegisterDiskMountApprovalCallback(session, NULL, BlockMount, NULL);
        DAApprovalSessionScheduleWithRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);

        while (true) {
            CFRunLoopRunInMode(kCFRunLoopDefaultMode, 60 /* seconds */, false);
        }

        DAApprovalSessionUnscheduleFromRunLoop(session, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
        DAUnregisterApprovalCallback(session, BlockMount, NULL);
        CFRelease(session);
    }
    return 0;
}

Zapisz jako main.c i skompiluj, używając następujących narzędzi (potrzebujesz Narzędzi dla programistów):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration

Podobnie jest z cron. Bez utraty wartości, po prostu domyślnie nie używana. Jest różnica.
Daniel Beck

Celowo nie odpowiadam na część, która jest duplikatem przywoływanego pytania.
Daniel Beck

może jestem zdezorientowany, cóż, oczywiście! patrz edycja powyżej. jaka jest różnica między /etc/fstabi / etc / fstab.hd`? być może rozwiąże to moje zamieszanie.
Meltemi,

1
@Meltemi: To zupełnie inny plik i nie ma związku. Zobacz na przykład tutaj lub tutaj .
Daniel Beck

ic. mam już /etc/fstabdobrze. dzięki
Meltemi

20

Nie ma potrzeby uruchamiania programów ani martwienia się o to, gdzie znajduje się fstab.

Wystarczy uruchomić sudo vifs i dodać odpowiednie linie do pliku. Mój jest:-

#
# Warning - this file should only be modified with vifs(8)
#
# Failure to do so is unsupported and may be destructive.
#
UUID=E00F307A-9295-482E-8A79-2FA2C922F3CD none ntfs rw,noauto
LABEL=Tempy none ntfs rw,noauto

Upewnij się, że wiesz, jak zmodyfikować i zapisać plik w vimie. Vimtutor nauczy Cię podstaw.

PS / private / etc jest w rzeczywistości taki sam jak / etc. OS X przetwarza adres URL wewnętrznie (jest to wyjaśnione w dokumentacji API - chociaż nadal nie rozumiem dlaczego)


Jeśli używasz sterownika trzeciej części, takiego jak Paragon NTFS, ta technika może nie działać bez modyfikacji. Na przykład musiałem użyć etykiety (identyfikatory UUID nie będą działać), a typem systemu plików musiał być ufsd_NTFS. Nie zepsuło to niczego, gdyby zastosowano bardziej standardowe opcje, po prostu nie działało.
Zxaos,

To nie zadziałało fat32! Próbowałem zarówno, jak UUIDi LABELrównież.
Necktwi

2

Ponieważ mam ten sam problem i nie znalazłem żadnego rezonującego rozwiązania tego problemu, napisałem małą usługę demona uruchamiania, która uniemożliwia montowanie woluminów o określonych etykietach.

Oto on: https://github.com/nanoant/mountblockd


1
Adaś, w mountblockd, plist mówi, aby wprowadzić nazwę woluminu. Ale mam dwa tomy o tej samej nazwie. Czy zamiast tego plist może przyjmować UUID?
Edward Ned Harvey,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.