web-dev-qa-db-ja.com

Mac Lion:fstabは非推奨です。それで、パーティションのマウントを防ぐためにそれを置き換えるものは何ですか?

Lionでfstabが廃止された場合(以前は、私はそう思いますか?)、システムブートでパーティションがマウントされないようにするにはどうすればよいですか?

これは この質問 と大まかに関連していますが、この投稿の時点では回答がありません。

編集:

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.
40
Meltemi

man fstabman diskarbitrationd(例 ここ を参照)も/etc/fstabの廃止について言及していません。

それはデフォルトではありませんが、デフォルトが良いのでそれが空だったのになぜそうなのですか?必要な場合はそこにあります。


fstabの廃止の主張は、しばらくの間ウェブ上に浮かんでいます。

ここ から:

etc/fstabはLeopardでは非推奨です

ここ から:

/ etc/fstabファイルの編集を提案するつもりでしたが、どうやらそれはLeopardで非推奨になり、おそらくSnow Leopardから削除されています...

ドキュメントに非推奨の記載がないことを除いて、whyは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
29
Daniel Beck

プログラムを実行したり、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ドキュメントで説明されています-まだ理由はわかりません)

20
Milliways

私は同じ問題を抱えており、これに対する適切な解決策を見つけられなかったので、指定されたラベルが付いたボリュームのマウントを防ぐ小さな起動デーモンサービスを作成しました。

ここにあります: https://github.com/nanoant/mountblockd

2
Adaś