Mac Lion : fstab은 더 이상 사용되지 않습니다. 그렇다면 파티션을 마운트하지 못하도록 대체하는 것은 무엇입니까?


39

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.

사용하기 쉽고 10.9 및 10.9.1에서 작동하도록 테스트 된 스크립트가 있습니다 ( 저자 Apple 포럼에 게시 ).
Dmitry Verkhoturov 2019

허용 된 답변은 fstab이 더 이상 사용되지 않는다는 가정에 의문을 제기합니다. 질문을 적절히 편집해야합니까?
DA Vincent

답변:


29

또한 ( 예를 들어 여기 참조 )의 비난을 언급 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

와 비슷합니다 cron. 더 이상 사용되지 않으며 기본적으로 사용되지 않습니다. 차이가 있습니다.
Daniel Beck

참조 된 질문과 중복되는 부분에 의도적으로 응답하지 않습니다.
Daniel Beck

어쩌면 나는 혼란 스러울 것입니다. 위의 편집을 참조하십시오 . /etc/fstab/etc/fstab.hd 의 차이점은 무엇 입니까? 아마도 이것은 내 혼란을 없애줄 것입니다.
Meltemi

1
@Meltemi : 완전히 다른 파일이며 관련이 없습니다. 예를 들어 here 또는 here을 참조 하십시오 .
Daniel Beck

ic. 나는 /etc/fstab지금 잘 작동하고 있습니다. thx
Meltemi

20

프로그램을 실행할 필요가 없으며 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 설명서에 설명되어 있습니다-여전히 이유는 이해할 수 없습니다)


Paragon NTFS와 같은 타사 드라이버를 사용하는 경우이 기술을 수정하지 않으면 작동하지 않을 수 있습니다. 예를 들어, Label (UUID가 작동하지 않음)을 사용해야하고 파일 시스템 유형이 대신 ufsd_NTFS 여야했습니다. 더 많은 표준 옵션을 사용하면 아무런 효과가 없었지만 작동하지 않았습니다.
Zxaos

그것은 작동하지 않았다 fat32! 나는 모두를 시도 UUID하고 LABEL뿐만 아니라.
Necktwi

2

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

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


1
Adaś, mountblockd에서 plist는 볼륨 이름을 입력하라는 메시지를 표시합니다. 그러나 같은 이름의 두 권이 있습니다. plist가 대신 UUID를 사용할 수 있습니까?
Edward Ned Harvey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.