Mac Lion: fstab está en desuso. Entonces, ¿qué lo reemplaza para evitar que se monte una partición?

39

Si fstabestá en desuso en Lion (¿y creo que antes?), ¿Cómo se evita que una partición se monte correctamente en el arranque del sistema?

Esto está poco relacionado con esta pregunta que a partir de esta publicación no tiene respuesta.

Editar:

Entonces mi confusión viene de leer sobre fstab y de que me pidan que edite /etc/fstab.hd. Entonces ... ¿ /etc/fstabes lo que necesito crear y dónde agrego información de UUID para evitar que las particiones se monten?

$ 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.
Meltemi
fuente
Hay un script para eso ( publicado en el foro de Apple por autor ): fácil de usar, probado trabajando con 10.9 y 10.9.1.
Dmitry Verkhoturov
La respuesta aceptada cuestiona la suposición de que fstab está en desuso. ¿Deberíamos editar la pregunta en consecuencia?
DA Vincent

Respuestas:

29

Ni man fstabni man diskarbitrationd(ver aquí por ejemplo) mencionan la depreciación de /etc/fstab.

No está allí por defecto, pero ¿por qué debería estarlo, si solo estuviera vacío porque los valores predeterminados son buenos? Está ahí si lo necesitas.


Las reclamaciones de depreciación fstabhan estado flotando en la web desde hace algún tiempo.

Desde aquí :

etc / fstab está en desuso en Leopard

Desde aquí :

Iba a sugerir editar el archivo / etc / fstab, pero aparentemente eso fue desaprobado en Leopard, y probablemente ahora sea eliminado de Snow Leopard ...

Además del hecho de que no se menciona la desaprobación en su documentación, ¿por qué Apple agregaría utilidades para editar adecuadamente los archivos de configuración desaprobados?

Citando man vifs:

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

Mientras se ejecuta el siguiente programa (bucle infinito, Ctrl-C para salir), no se montará ningún disco, por supuesto, con las condiciones adecuadas puede controlarlo de forma más fina:

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

Guarde como main.c y compile usando lo siguiente (necesita herramientas de desarrollador):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration
Daniel Beck
fuente
Es similar con cron. Sin desaprobación, simplemente no se usa por defecto. Hay una diferencia
Daniel Beck
No estoy respondiendo intencionalmente la parte que es un duplicado de la pregunta referenciada.
Daniel Beck
tal vez estoy confundido, bueno, obviamente! ver editar arriba. ¿ /etc/fstabCuál es la diferencia entre y / etc / fstab.hd`? Quizás esto aclare mi confusión.
Meltemi
1
@Meltemi: es un archivo completamente diferente y no relacionado. Ver por ejemplo aquí o aquí .
Daniel Beck
ic. Lo tengo funcionando /etc/fstabbien ahora. thx
Meltemi
20

No hay necesidad de ejecutar programas o preocuparse acerca de dónde se encuentra fstab.

Simplemente ejecute sudo vifs y agregue las líneas apropiadas al archivo. El mio es:-

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

Asegúrese de saber cómo modificar y guardar un archivo en vim. Vimtutor te enseñará lo básico.

PS / private / etc es en realidad lo mismo que / etc. OS X procesa la url internamente (esto se explica en la documentación de la API, aunque todavía no entiendo por qué)

Milliways
fuente
Si está utilizando un controlador de terceros, como Paragon NTFS, es posible que esta técnica no funcione sin modificaciones. Por ejemplo, tuve que usar una etiqueta (los UUID no funcionarían) y el tipo de sistema de archivos tenía que ser ufsd_NTFS. No se rompía nada si se usaban las opciones más estándar, simplemente no funcionaba.
Zxaos
¡No funcionó fat32! Probé ambos UUIDy LABELtambién.
Necktwi
2

Como tengo el mismo problema y no he encontrado ninguna solución razonable para esto, he escrito un pequeño servicio de demonio de lanzamiento que impide el montaje de volúmenes con etiquetas especificadas.

Aquí está: https://github.com/nanoant/mountblockd

Adaś
fuente
1
Adaś, en mountblockd, el plist dice que ingrese el nombre del volumen. Pero tengo dos volúmenes con el mismo nombre. ¿Puede el plist tomar UUID en su lugar?
Edward Ned Harvey