Mac Lion: fstab sudah usang. jadi apa yang menggantikannya untuk mencegah pemasangan partisi?

39

Jika fstabsudah usang dalam Lion (dan sebelumnya, saya pikir?) Bagaimana caranya, dengan benar, mencegah partisi dari pemasangan pada boot sistem?

Ini terkait longgar dengan pertanyaan ini yang sampai saat ini tidak memiliki jawaban.

Edit:

Jadi kebingungan saya berasal dari membaca tentang fstab dan disuruh mengedit /etc/fstab.hd. Jadi ... /etc/fstabapakah yang perlu saya buat dan di mana saya menambahkan info UUID untuk mencegah partisi dari pemasangan?

$ 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.
Meltemi
sumber
Ada skrip untuk itu ( diposting di forum apel oleh penulis ) - mudah digunakan, diuji bekerja dengan 10.9 dan 10.9.1.
Dmitry Verkhoturov
Jawaban yang diterima mempertanyakan asumsi bahwa fstab sudah usang. Haruskah kita mengedit pertanyaan sesuai?
DA Vincent

Jawaban:

29

Baik man fstabatau man diskarbitrationd(lihat di sini misalnya) menyebutkan penghentian /etc/fstab.

Itu tidak ada di sana secara default, tetapi mengapa harus begitu, jika itu hanya kosong karena standarnya baik? Itu ada di sana jika Anda membutuhkannya.


Klaim penghentian fstabtelah melayang di web untuk beberapa waktu sekarang.

Dari sini :

etc / fstab sudah usang di Leopard

Dari sini :

Saya akan menyarankan untuk mengedit file / etc / fstab, tetapi tampaknya itu sudah usang di Leopard, dan mungkin sekarang dihapus dari Snow Leopard ...

Terlepas dari kenyataan bahwa tidak ada menyebutkan penghinaan dalam dokumentasinya, mengapa Apple akan menambah utilitas untuk mengedit file konfigurasi yang sudah usang dengan benar?

Mengutip man vifs:

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

Sementara program berikut berjalan (infinite loop, Ctrl-C untuk berhenti), tidak ada disk yang akan dipasang, dengan kondisi yang tepat Anda dapat mengendalikannya lebih halus tentu saja:

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

Simpan sebagai main.c dan kompilasi menggunakan yang berikut (Anda membutuhkan Alat Pengembang):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration
Daniel Beck
sumber
Mirip dengan cron. Tidak ada penghinaan, hanya saja tidak digunakan secara default. Ada perbedaan.
Daniel Beck
Saya sengaja tidak menjawab bagian yang merupakan duplikat dari pertanyaan yang dirujuk.
Daniel Beck
mungkin saya bingung, yah, jelas! lihat edit di atas. apa perbedaan antara /etc/fstabdan / etc / fstab.hd`? mungkin ini akan menjernihkan kebingungan saya.
Meltemi
1
@Meltemi: Ini file yang sama sekali berbeda dan tidak terkait. Lihat misalnya di sini atau di sini .
Daniel Beck
ic Saya sudah membuatnya bekerja dengan /etc/fstabbaik sekarang. thx
Meltemi
20

Tidak perlu menjalankan program atau khawatir tentang di mana fstab berada.

Jalankan saja sudo vifs dan tambahkan baris yang sesuai ke file. Punya saya:-

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

Pastikan Anda tahu cara memodifikasi dan menyimpan file di vim. Vimtutor akan mengajarkan Anda dasar-dasar.

PS / private / etc sebenarnya sama dengan / etc. OS X memproses url secara internal (ini dijelaskan dalam dokumentasi API - walaupun saya masih tidak mengerti mengapa)

Milliways
sumber
Jika Anda menggunakan pengandar bagian ketiga seperti Paragon NTFS, teknik ini mungkin tidak berfungsi tanpa modifikasi. Sebagai contoh, saya harus menggunakan Label (UUID tidak akan berfungsi) dan tipe sistem file harus ufsd_NTFS sebagai gantinya. Itu tidak merusak apa pun jika lebih banyak opsi standar digunakan, itu hanya tidak berfungsi.
Zxaos
Tidak berhasil fat32! Saya mencoba keduanya UUIDdan LABELjuga.
Necktwi
2

Karena saya memiliki masalah yang sama, dan belum menemukan solusi yang beresonansi untuk ini, saya telah menulis sedikit layanan daemon peluncuran yang mencegah pemasangan volume dengan label yang ditentukan.

Ini dia: https://github.com/nanoant/mountblockd

Adaś
sumber
1
Adaś, di mountblockd, plist mengatakan untuk memasukkan nama volume. Tapi saya punya dua volume dengan nama yang sama. Bisakah plist mengambil UUID?
Edward Ned Harvey