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で動作することがテストされています。
ドミトリーヴェルホトゥロフ

受け入れられた回答は、fstabが非推奨であるという仮定に疑問を投げかけています。それに応じて質問を編集する必要がありますか?
DAヴィンセント

回答:


29

の廃止も言及していませman fstabman 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ます。非推奨ではなく、デフォルトでは使用されません。違いがあります。
ダニエルベック

参照されている質問と重複する部分には意図的に答えていません。
ダニエルベック

多分私は、まあ、明らかに混乱しています!上記の編集を参照してください。/etc/fstabと/ etc / fstab.hd` の違いは何ですか?おそらくこれは私の混乱を解消するでしょう。
メルテミ

1
@Meltemi:それはまったく異なるファイルであり、無関係です。例はこちらまたはこちらをご覧ください
ダニエルベック

IC。今は/etc/fstabうまく動作しています。thx
メルテミ

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でファイルを変更して保存する方法を知っていることを確認してください。Vimtutorが基本を教えます。

PS / private / etcは、実際には/ etcと同じです。OS XはURLを内部で処理します(これはAPIドキュメントで説明されています-理由はまだわかりませんが)


Paragon NTFSなどのサードパーティドライバーを使用している場合、この手法は変更しないと機能しない可能性があります。たとえば、ラベルを使用する必要があり(UUIDは機能しません)、代わりにファイルシステムのタイプをufsd_NTFSにする必要がありました。より標準的なオプションが使用された場合、それは何も壊しませんでした、それはただ機能しませんでした。
Zxaos

それはうまくいきませんでしたfat32!私は両方を試してみましたUUIDLABEL同様。
ネクトウィ

2

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

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


1
Adaś、mountblockdで、plistはボリューム名を入力するように指示します。しかし、同じ名前の2つのボリュームがあります。代わりにplistはUUIDを使用できますか?
エドワードネッドハーベイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.