Mac Lion:fstab 已被弃用。那么用什么来替代它以防止分区挂载?

Mac Lion:fstab 已被弃用。那么用什么来替代它以防止分区挂载?

如果fstab在 Lion 中已被弃用(我想,在此之前也是如此?),那么如何正确地防止分区在系统启动时挂载?

这与这个问题截至本文发稿时,尚未有答案。

编辑:

所以我的困惑来自于阅读文件系统并被告知要编辑/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.

答案1

既不是man fstab也不是man diskarbitrationd(见这里例如)提到了的弃用/etc/fstab

默认情况下它不存在,但如果因为默认值很好所以它为空,那它为什么要存在呢?如果你需要它,它就在那里。


关于贬低的说法fstab已经在网上流传了一段时间了。

这里

Leopard 已弃用 etc/fstab

这里

我本来建议编辑 /etc/fstab 文件,但显然该文件在 Leopard 中已被弃用,并且现在可能已从 Snow Leopard 中删除......

除了文档中没有提到弃用之外,为什么苹果是否会添加用于正确编辑弃用配置文件的实用程序?

引用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

答案2

无需运行程序,也无需担心 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 中修改和保存文件。Vimtutor 将教你基础知识。

PS /private/etc 实际上与 /etc 相同。OS X 在内部处理 url(这在 API 文档中有解释 - 虽然我仍然不明白为什么)

答案3

由于我遇到了同样的问题,并且还没有找到任何合理的解决方案,因此我编写了一个小型启动守护进程服务,以防止安装具有指定标签的卷。

这里是:https://github.com/nanoant/mountblockd

相关内容