Mac Lion : fstab은 더 이상 사용되지 않습니다. 그렇다면 파티션을 마운트하지 못하도록 대체하는 것은 무엇입니까? 느슨하게 관련되어 있습니다. 편집하다: 그래서 혼란은 fstab

fstabLion에서 더 이상 사용되지 않는 경우 (그리고 이전에 생각합니까?) 파티션이 시스템 부팅시 마운트되지 않도록하려면 어떻게해야합니까?

이것은 이 게시물 과 관련 하여이 질문에 느슨하게 관련되어 있습니다.

편집하다:

그래서 혼란은 fstab 에 대해 읽고 편집하라는 말을 들었습니다 /etc/fstab.hd. 그렇다면 … /etc/fstab파티션이 마운트되지 않도록 UUID 정보를 어디에 추가해야합니까?

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



답변

또한 ( 예를 들어 여기 참조 )의 비난을 언급 man fstab하지도 않습니다 .man diskarbitrationd/etc/fstab

기본적으로는 없지만 기본값이 좋기 때문에 비어 있었다면 왜 있어야합니까? 필요한 경우 거기에 있습니다.


더 이상 사용되지 않는다는 주장이 fstab웹에 떠 올랐습니다.

에서 여기 :

etc / fstab은 Leopard에서 더 이상 사용되지 않습니다

에서 여기 :

/ etc / fstab 파일을 편집 할 것을 제안했지만 Leopard에서는 더 이상 사용되지 않으며 아마도 Snow Leopard에서 제거되었을 것입니다 …

문서에 지원 중단에 대한 언급이 없다는 사실 외에도 Apple은 더 이상 사용되지 않는 구성 파일을 올바르게 편집하기 위해 유틸리티를 추가하는 이유 는 무엇입니까?

인용 man vifs:

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

다음 프로그램이 실행되는 동안 (무한 루프, 종료하려면 Ctrl-C) 디스크가 마운트되지 않으며 적절한 조건으로 더 세밀하게 제어 할 수 있습니다.

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

main.c로 저장하고 다음을 사용하여 컴파일하십시오 (개발자 도구 필요).

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


답변

프로그램을 실행할 필요가 없으며 fstab의 위치에 대해 걱정할 필요가 없습니다.

sudo vifs를 실행하고 파일에 적절한 줄을 추가하십시오. 광산은 :-

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

vim에서 파일을 수정하고 저장하는 방법을 알고 있어야합니다. 변호사가 기본 사항을 알려줄 것입니다.

PS / private / etc는 실제로 / etc와 동일합니다. OS X은 URL을 내부적으로 처리합니다 (이것은 API 설명서에 설명되어 있습니다-여전히 이유는 이해할 수 없습니다)


답변

동일한 문제가 있으며 이에 대한 해결책을 찾지 못했기 때문에 지정된 레이블로 볼륨을 마운트하지 못하게하는 작은 시작 데몬 서비스를 작성했습니다.

여기 있습니다 : https://github.com/nanoant/mountblockd


답변