Mac Lion: fstab không được dùng nữa. Vì vậy, những gì thay thế nó để ngăn chặn một phân vùng gắn kết?


39

Nếu fstabtôi không đồng ý với Lion (và trước đó, tôi nghĩ vậy?) Làm thế nào để ngăn chặn một phân vùng gắn trên hệ thống khởi động?

Điều này liên quan một cách lỏng lẻo đến câu hỏi này mà bài đăng này không có câu trả lời.

Chỉnh sửa:

Vì vậy, sự nhầm lẫn của tôi đến từ việc đọc về fstab và được yêu cầu chỉnh sửa /etc/fstab.hd. Vậy ... /etc/fstablà những gì tôi cần tạo và nơi tôi thêm thông tin UUID để ngăn phân vùng gắn kết?

$ 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.

Có một kịch bản cho điều đó ( được đăng trên diễn đàn apple của tác giả ) - đơn giản để sử dụng, được thử nghiệm làm việc với 10.9 và 10.9.1.
Dmitry Verkhoturov

Các câu trả lời được chấp nhận câu hỏi giả định rằng fstab không được chấp nhận. Chúng ta có nên chỉnh sửa câu hỏi cho phù hợp?
DA Vincent

Câu trả lời:


29

Không man fstabphải cũng không man diskarbitrationd(xem ở đây chẳng hạn) đề cập đến sự phản đối /etc/fstab.

Nó không có ở đó theo mặc định, nhưng tại sao nó phải như vậy, nếu nó chỉ trống vì mặc định là tốt? Nó ở đó nếu bạn cần.


Khiếu nại về sự phản đối fstabđã nổi trên mạng một thời gian.

Từ đây :

etc / fstab không được dùng trong Leopard

Từ đây :

Tôi sẽ đề nghị chỉnh sửa tệp / etc / fstab, nhưng dường như điều đó không được chấp nhận trong Leopard, và có lẽ hiện đã bị xóa khỏi Snow Leopard ...

Ngoài thực tế là không có đề cập đến sự phản đối trong tài liệu của mình, tại sao Apple lại thêm các tiện ích để chỉnh sửa đúng các tệp cấu hình không dùng nữa?

Trích dẫn man vifs:

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

Trong khi chương trình sau chạy (vòng lặp vô hạn, Ctrl-C để thoát), sẽ không có đĩa nào được gắn, với điều kiện thích hợp, bạn có thể điều khiển nó tốt hơn tất nhiên:

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

Lưu dưới dạng main.c và biên dịch bằng cách sử dụng các mục sau (bạn cần Công cụ dành cho nhà phát triển):

cc main.c -o mountstopd -framework Foundation -framework DiskArbitration

Nó tương tự với cron. Không có khấu hao, chỉ không được sử dụng theo mặc định. Có một sự khác biệt.
Daniel Beck

Tôi cố tình không trả lời phần trùng lặp với câu hỏi được tham chiếu.
Daniel Beck

Có lẽ tôi đang bối rối, tốt, rõ ràng! xem chỉnh sửa ở trên. sự khác biệt giữa /etc/fstabvà / etc / fstab.hd`? có lẽ điều này sẽ làm sáng tỏ sự nhầm lẫn của tôi.
Meltemi

1
@Meltemi: Đây là một tệp hoàn toàn khác và không liên quan. Xem ví dụ ở đây hoặc ở đây .
Daniel Beck

ic. Tôi đã có nó làm việc với /etc/fstabchỉ là tốt bây giờ. thx
Meltemi

20

Không cần phải chạy chương trình hoặc lo lắng về vị trí của fstab.

Chỉ cần chạy sudo vifs và thêm các dòng thích hợp vào tập tin. Của tôi là:-

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

Hãy chắc chắn rằng bạn biết cách sửa đổi và lưu tệp trong vim. Vimtutor sẽ dạy bạn những điều cơ bản.

PS / private / etc thực sự giống như / etc. OS X xử lý url bên trong (điều này được giải thích trong tài liệu API - mặc dù tôi vẫn không hiểu tại sao)


Nếu bạn đang sử dụng trình điều khiển phần thứ ba như Paragon NTFS, kỹ thuật này có thể không hoạt động nếu không sửa đổi. Ví dụ: tôi đã phải sử dụng Nhãn (UUID sẽ không hoạt động) và loại hệ thống tệp phải là ufsd_NTFS thay thế. Nó không phá vỡ bất cứ điều gì nếu các tùy chọn tiêu chuẩn hơn được sử dụng, nó chỉ không hoạt động.
Zxaos

Nó không hoạt động fat32! Tôi đã thử cả hai UUIDLABELlà tốt.
Necktwi

2

Vì tôi có cùng một vấn đề và không tìm thấy bất kỳ giải pháp nào có thể giải quyết được cho vấn đề này, tôi đã viết một ít dịch vụ trình nền khởi chạy để ngăn việc gắn khối lượng với các nhãn được chỉ định.

Đây là: https://github.com/nanoant/mountblockd


1
Adaś, trong mountblockd, plist nói để nhập tên âm lượng. Nhưng tôi có hai tập cùng tên. Thay vào đó, Plist có thể lấy UUID không?
Edward Ned Harvey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.