Làm thế nào để tôi ngăn chặn một đĩa gắn?


4

Tôi sở hữu một Iomega Uy tín. Loạt đĩa bao gồm phân vùng CD ảo bao gồm tiện ích mã hóa tệp chỉ có thể được sử dụng trên máy Windows. Mỗi lần tôi gắn ổ đĩa ngoài vào hệ thống tập tin của mình, phân vùng CD ảo sẽ gắn kết với nó.

Tôi muốn ngăn CD ảo gắn trong khi cho phép phần còn lại của đĩa được gắn mà không gặp sự cố. Vì vậy, câu hỏi là: Làm thế nào tôi có thể loại bỏ phân vùng CD ảo hoặc làm cách nào tôi có thể ngăn chặn nó khỏi?

Tôi đã thấy một vài lựa chọn nhưng chúng sẽ không hoạt động:

  • Iomega tạo ra một tiện ích để loại bỏ điều này cho một hệ thống Windows; Vấn đề là tôi không chạy Windows mà là tôi sử dụng OS X 10.7.

  • Có một gợi ý về MacOSXH gợi ý , nhưng nó đã lỗi thời đối với Lion. /etc/fstab không được dùng trong Lion và diskutil không còn cung cấp UUID của đĩa (ít nhất là như được gợi ý trên trang).

Nhân tiện, người ta không thể đơn giản định dạng và phân vùng lại đĩa. CD ảo sẽ không bị xóa.

Câu trả lời:



5

Giữ chương trình sau luôn chạy mọi lúc trong nền, ví dụ: bằng cách tự động bắt đầu sử dụng launchd:

#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>

DADissenterRef BlockMount(DADiskRef disk, void *context)
{
    DADissenterRef dissenter = DADissenterCreate(kCFAllocatorDefault, kDAReturnNotPermitted, CFSTR("forbidden!"));

    CFDictionaryRef description = DADiskCopyDescription(disk);

    // UUID of the disk you don't want to mount:
    CFUUIDRef backupDisk = CFUUIDCreateFromString(NULL, CFStringCreateWithCString(NULL, "3B5315C1-96AE-3471-B43C-2C41CDB12A64", kCFStringEncodingUTF8));

    if (CFDictionaryContainsKey(description, kDADiskDescriptionVolumeUUIDKey)) {
        CFUUIDRef value = CFDictionaryGetValue(description, kDADiskDescriptionVolumeUUIDKey);
        if (CFEqual(backupDisk, value)) {
            return dissenter;
        }
    }
    return NULL;
}


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

Tìm hiểu UUID của âm lượng bạn không muốn gắn kết bằng cách sử dụng diskutil list (để lấy tên thiết bị) và diskutil info để đọc UUID.

Lưu dưới dạng main.c và biên dịch bằng lệnh 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

Trên Mac OS X 10.7.1, việc thực hiện sau đây đã giúp tôi rất nhiều (khá giống với những gì trong OS X Gợi ý):

Trước tiên, hãy tìm hiểu tên thiết bị của âm lượng bạn không muốn gắn:

diskutil list

Đầu ra một phần trông như thế này:

/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *2.2 TB     disk3
   1:        Apple_partition_map                         32.3 KB    disk3s1
   2:                  Apple_HFS DroboBackup             2.2 TB     disk3s3

Trong ví dụ này, DropboBackup là phân vùng thực tế, vì vậy /dev/disk3s3 là thiết bị chúng ta cần tiếp theo. Sau đó tìm ra UUID của nó:

diskutil info /dev/disk3s3

Tìm kiếm Volume UUID, ví dụ. 3B5315C1-96AE-3471-B43C-2C41CDB12A64.

Sau đó, nhập như sau:

sudo touch /etc/fstab
sudo sh -c 'echo "UUID=3B5315C1-96AE-3471-B43C-2C41CDB12A64 none hfs rw,noauto" >> /etc/fstab'

Điều này sẽ ngăn đĩa gắn.


3

Tôi không có Iomega Uy tín để thử nghiệm, nhưng bạn có thể thử Aaron Burghardt Trọng tài đĩa tiện ích.

Từ phần giới thiệu trong Sẵn sàng (nhấn mạnh của tôi):

Trọng tài đĩa là tiện ích pháp y Mac OS X được thiết kế để giúp người dùng   đảm bảo các thủ tục pháp y chính xác được tuân thủ trong quá trình chụp ảnh   thiết bị đĩa.

Trọng tài đĩa về cơ bản là giao diện người dùng với Đĩa   Khung trọng tài, cho phép một chương trình tham gia vào   quản lý các thiết bị lưu trữ khối, bao gồm lắp tự động   của hệ thống tập tin. Khi được bật, Trình phân xử đĩa sẽ chặn việc gắn kết   của hệ thống tập tin để tránh gắn kết như đọc-ghi và vi phạm   tính toàn vẹn của bằng chứng.

Điều quan trọng cần lưu ý là Trọng tài đĩa là không phải một phần mềm viết   blocker, nó không thay đổi trạng thái của các thiết bị hiện được đính kèm   Nó cũng không ảnh hưởng đến các thiết bị mới được gắn vào để buộc thiết bị phải   chỉ đọc. Người dùng vẫn phải cẩn thận để không vô tình viết thư cho   một đĩa có lệnh như dd. Do thực tế này, một phần cứng   hoặc trình chặn phần mềm ghi có thể vẫn được mong muốn cho âm thanh nhất   thủ tục. Trọng tài đĩa khen ngợi trình chặn ghi có thêm   các tính năng hữu ích và loại bỏ các khuyến nghị pháp y điển hình để   "vô hiệu hóa trọng tài đĩa."

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.