Mac Lion: fstab ist veraltet. Was ersetzt es also, um die Montage einer Partition zu verhindern?


39

Wenn fstabLion veraltet ist (und ich denke schon?), Wie verhindert man ordnungsgemäß, dass eine Partition beim Systemstart bereitgestellt wird?

Dies hängt lose mit dieser Frage zusammen, die ab diesem Beitrag keine Antwort hat.

Bearbeiten:

Meine Verwirrung rührt daher, dass ich über fstab lese und zum Bearbeiten aufgefordert werde /etc/fstab.hd. Also ... muss /etc/fstabich erstellen und UUID-Informationen hinzufügen, um das Mounten von Partitionen zu verhindern?

$ 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.

Dafür gibt es ein Skript ( vom Autor im Apple-Forum veröffentlicht ) - einfach zu bedienen, getestet mit 10.9 und 10.9.1.
Dmitry Verkhoturov

Die akzeptierte Antwort stellt die Annahme in Frage, dass fstab veraltet ist. Sollen wir die Frage entsprechend bearbeiten?
DA Vincent

Antworten:


29

Weder erwähnen man fstabnoch man diskarbitrationd(siehe hier zum Beispiel) Verfall von /etc/fstab.

Es ist nicht standardmäßig vorhanden, aber warum sollte es sein, wenn es nur leer wäre, weil die Standardeinstellungen gut sind? Es ist da, wenn Sie es brauchen.


Behauptungen über die Nichtbeachtung von fstabschweben seit einiger Zeit im Internet.

Von hier :

etc / fstab ist in Leopard veraltet

Von hier :

Ich wollte vorschlagen, die Datei / etc / fstab zu bearbeiten, aber anscheinend war das in Leopard veraltet und wird wahrscheinlich jetzt aus Snow Leopard entfernt ...

Abgesehen von der Tatsache, dass die Dokumentation keine Hinweise auf veraltete Konfigurationsdateien enthält , warum sollte Apple Dienstprogramme hinzufügen, um veraltete Konfigurationsdateien ordnungsgemäß zu bearbeiten?

Zitat man vifs:

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

Während das folgende Programm ausgeführt wird (Endlosschleife, Strg-C zum Beenden), wird keine Festplatte gemountet. Unter geeigneten Bedingungen können Sie es natürlich feiner steuern:

#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;
}

Speichern Sie es als main.c und kompilieren Sie es wie folgt (Sie benötigen Developer Tools):

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

Ähnlich ist es mit cron. Keine Veralterung, wird nur standardmäßig nicht verwendet. Es besteht ein Unterschied.
Daniel Beck

Ich beantworte absichtlich nicht den Teil, der ein Duplikat der referenzierten Frage ist.
Daniel Beck

vielleicht bin ich ja natürlich verwirrt! siehe oben bearbeiten . Was ist der Unterschied zwischen /etc/fstabund / etc / fstab.hd`? Vielleicht klärt das meine Verwirrung.
Meltemi,

1
@ Meltemi: Es ist eine völlig andere Datei und ohne Beziehung. Siehe zum Beispiel hier oder hier .
Daniel Beck

ic. Ich habe es /etc/fstabjetzt ganz gut zum Laufen gebracht. thx
Meltemi

20

Sie müssen keine Programme ausführen oder sich Gedanken darüber machen, wo sich fstab befindet.

Führen Sie einfach sudo vifs aus und fügen Sie der Datei die entsprechenden Zeilen hinzu. Meins ist:-

#
# 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

Stellen Sie sicher, dass Sie wissen, wie Sie eine Datei in vim ändern und speichern. Vimtutor bringt Ihnen die Grundlagen bei.

PS / private / etc ist eigentlich dasselbe wie / etc. OS X verarbeitet die URL intern (dies wird in der API-Dokumentation erklärt - obwohl ich immer noch nicht verstehe, warum)


Wenn Sie einen Treiber eines Drittanbieters wie Paragon NTFS verwenden, funktioniert diese Technik möglicherweise nicht ohne Änderungen. Ich musste zum Beispiel ein Label verwenden (UUIDs würden nicht funktionieren) und der Dateisystemtyp musste stattdessen ufsd_NTFS sein. Es hat nichts kaputt gemacht, wenn die Standardoptionen verwendet wurden, es hat einfach nicht funktioniert.
Zxaos,

Es hat nicht funktioniert fat32! Ich habe beides UUIDund LABELauch versucht .
Necktwi

2

Da ich das gleiche Problem habe und keine vernünftige Lösung dafür gefunden habe, habe ich einen kleinen Dienst zum Starten von Daemons geschrieben, der das Mounten von Volumes mit angegebenen Bezeichnungen verhindert.

Hier ist es: https://github.com/nanoant/mountblockd


1
Adaś, in mountblockd, fordert die plist zur Eingabe des Datenträgernamens auf. Aber ich habe zwei Bände mit demselben Namen. Kann die plist stattdessen UUID nehmen?
Edward Ned Harvey
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.