Mac Lion: fstab застарілий. так що замінює його, щоб запобігти монтажу перегородки?


39

Якщо fstabв Lion застаріло (і раніше, я думаю?), Як один, належним чином, запобігає встановленню розділу на системному завантаженні?

Це слабко пов'язане з цим питанням, яке станом на цій посаді не має відповіді.

Редагувати:

Тож моя плутанина виникає з того, що я читав про 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 fstabні man diskarbitrationd(див. Приклад тут ) не згадують про застаріння /etc/fstab.

За замовчуванням його немає, але чому воно має бути, якщо воно просто порожнє, тому що за замовчуванням це добре? Це там, якщо вам це потрібно.


Претензії щодо застарілості fstabвже деякий час плавають по Інтернету.

Від сюди :

тощо / fstab застаріло в Леопарді

Від сюди :

Я збирався запропонувати редагувати файл / 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: Це зовсім інший файл і не пов'язаний між собою. Дивіться, наприклад, тут чи тут .
Даніель Бек

ік. У мене зараз це добре працює /etc/fstab. thx
Мелтемi

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. OS X обробляє URL всередині (це пояснюється в документації API, хоча я досі не розумію, чому)


Якщо ви використовуєте драйвер третьої частини, такий як Paragon NTFS, ця техніка може не працювати без змін. Наприклад, мені довелося використовувати мітку (UUID не працюватимуть), а тип файлової системи повинен бути замість цього ufsd_NTFS. Це нічого не зламало, якщо використовувались більш стандартні варіанти, він просто не працював.
Zxaos

Це не спрацювало fat32! Я спробував і те, UUIDі LABELдобре.
Necktwi

2

Оскільки у мене є та ж проблема, і я не знайшов резонного рішення для цього, я написав невелику послугу демон-запуску, яка запобігає встановленню томів із заданими мітками.

Ось це: https://github.com/nanoant/mountblockd


1
Adaś, в mountblockd, пліст каже ввести назву гучності. Але у мене є два томи з однаковою назвою. Чи може замість цього списку взяти UUID?
Едвард Нед Харві
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.