Mac Lion: fstab está obsoleto. Então, o que o substitui para evitar que uma partição seja montada?

39

Se fstab for obsoleto no Lion (e antes, eu acho?), como um, corretamente, impede que uma partição seja montada na inicialização do sistema?

Isso está vagamente relacionado a esta questão que, como neste post, não tem resposta .

Editar:

Então, minha confusão vem da leitura de fstab e de ser informado para editar /etc/fstab.hd . Então ... /etc/fstab é o que eu preciso criar e onde eu adiciono informações UUID para evitar partições de montagem?

$ 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.
    
por Meltemi 16.09.2011 / 19:22

3 respostas

28

Nem man fstab nem man diskarbitrationd (consulte aqui por exemplo) menciona a depreciação de /etc/fstab .

Não está lá por padrão, mas por que deveria estar, se estivesse vazio, porque os padrões são bons? Está lá se você precisar.

Reivindicações de depreciação de fstab estão flutuando na web há algum tempo.

De aqui :

etc/fstab is deprecated in Leopard

De aqui :

I was going to suggest editing the /etc/fstab file, but apparently that was deprecated in Leopard, and is probably now removed from Snow Leopard...

Além do fato de que não há menção de depreciação em sua documentação, por que a Apple adicionaria utilitários para editar corretamente os arquivos de configuração reprovados?

Citando man vifs :

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

Enquanto o programa a seguir é executado (loop infinito, Ctrl-C para sair), nenhum disco será montado, com condições adequadas que você pode controlá-lo com mais detalhes, é claro:

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

Salve como main.c e compile usando o seguinte (você precisa de Developer Tools):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration
    
por 16.09.2011 / 20:04
19

Não há necessidade de executar programas ou se preocupar sobre onde o fstab está localizado.

Basta executar o sudo vifs e adicionar as linhas apropriadas ao arquivo. O meu é: -

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

Verifique se você sabe como modificar e salvar um arquivo no vim. Vimtutor ensinará o básico.

PS / private / etc é na verdade o mesmo que / etc. O OS X processa a URL internamente (isso é explicado na documentação da API - embora eu ainda não entenda o porquê)

    
por 17.01.2012 / 00:19
2

Como tenho o mesmo problema e não encontrei nenhuma solução razoável para isso, escrevi um pequeno serviço de daemon de inicialização que impede a montagem de volumes com rótulos especificados.

Aqui está: link

    
por 03.05.2012 / 15:03