Я использую VirtualBox на своем MBP, и мне часто нужно монтировать флешку внутри гостя. Проблема, с которой я сталкиваюсь, заключается в том, что хост-ОС (OS X Mavericks) сразу же монтирует флэш-накопитель USB, когда я его вставляю. Когда я пытаюсь размонтировать его (изящно, через Finder), OS X жалуется, что устройство используется. Дальнейшее исследование lsof показывает, что Spotlight и AVG делают свое дело с флешкой.
Вместо того, чтобы возиться с настройками отдельных приложений, я хотел бы просто изменить поведение хост-ОС, чтобы USB-устройство не монтировалось автоматически. Какие-либо предложения?
Согласно статье Тофера Кесслера на CNET , вы можете добавить запись в /etc/fstab
, указав noauto
опцию.
Такая запись может выглядеть так:
UUID=791E37B4-82A3-37E7-9F15-3C39359126B4 none hfs rw,noauto
UUID можно получить, найдя Volume UUID
строку, которая печатается при запуске .diskutil info /Volumes/volume name
root
. Кстати, эта команда sudo vifs
рекомендуется вместо прямого редактирования, и она создаст для вас файл, если он не существует.OS X имеет механизм, называемый Disk Arbitration framework , с помощью которого программы могут контролировать, что происходит, когда диски вставляются или извлекаются. Это также дает возможность перехватить событие вставки диска и предотвратить обычное автоматическое монтирование.
Однако для изменения поведения требуется сторонняя утилита, поскольку структура Disk Arbitration — это просто программный интерфейс. Одной из хороших утилит является Disk Arbitrator , бесплатная (под лицензией BSD) утилита от Aaron Burghardt.
Во время работы Disk Arbitrator вы можете наложить вето на монтирование вновь вставленных дисков, монтировать их только для чтения или просто разрешить обычное автоматическое монтирование. После выхода Disk Arbitrator нормальное поведение при монтировании восстанавливается.
Я думаю, что модификация fstab для отключения автоматического монтирования немного чрезмерна для того, что вы пытаетесь сделать. Это похоже на снятие дверей в машине, потому что время от времени вам нужно войти или выйти.
Для этого я бы использовал встроенные USB-фильтры VirtualBox . Это позволяет автоматически монтировать конкретное USB-устройство при вставке. Вы можете найти USB-фильтры в меню «Настройки» конкретной виртуальной машины, которой вы хотите их назначить.
Например, ниже перечислены мои USB-устройства, которые доступны, если я хочу автоматически подключить их к моей виртуальной машине Windows 10 Pro. Я могу подключить свой Seagate FreeAgent Go, SanDisk Cruzer или любое из подключенных USB-устройств. Однако подключение USB-приемника Logitech в конечном итоге сделает мышь неработоспособной на хосте, поэтому будьте осторожны с тем, что вы подключаете.
Откуда я знаю, что это работает? Что ж, я случайно подключил накопитель FreeAgent Go, и он не будет (как я понял) монтироваться в OS X. См. мою первоначальную «проблему»: USB-накопитель не монтируется, не указан в Дисковых утилитах, но найден в System Profiler.
Он делает это по серийному номеру или по UUID (я недостаточно исследовал, чтобы выяснить, что именно), но у меня было несколько дисков FreeAgent Go одинаковой модели и размера, и только один из них автоматически подключался к виртуальной машине. В то время я думал, что мой драйв испортился.
Суть в том, что автоматическое монтирование все еще работало, и я смог подключить USB-устройство напрямую к виртуальной машине, не пытаясь сначала размонтировать его.
Вот как я отключаю автоматическое монтирование томов APFS в macOS Catalina.
Macintosh HD - Data
Для томов macOS Macintosh HD
в файлах /etc/fstab
.
Найдите объем (ы) с помощью diskutil list
и установите VOLUME_PATH
соответственно.
# Disable auto mounting of "macOS - Data" volume
VOLUME_PATH="/Volumes/macOS - Data"
VOLUME_UUID=`diskutil info "$VOLUME_PATH" | awk '/Volume UUID:/ { print $3 }'`
cat << EOF | sudo tee -a /etc/fstab
UUID=$VOLUME_UUID none apfs rw,noauto
EOF
# Disable auto mounting of "macOS" volume
VOLUME_PATH="/Volumes/macOS"
VOLUME_UUID=`diskutil info "$VOLUME_PATH" | awk '/Volume UUID:/ { print $3 }'`
cat << EOF | sudo tee -a /etc/fstab
UUID=$VOLUME_UUID none apfs rw,noauto
EOF
Вот что происходит при выполнении вышеуказанных команд:
Установить VOLUME_PATH
переменную в/Volumes/macOS - Data
VOLUME_PATH="/Volumes/macOS - Data"
Установите VOLUME_UUID
переменную для тома UUID /Volumes/macOS - Data
тома
Запуск diskutil info "$VOLUME_PATH"
выводит сведения о томе /Volumes/macOS - Data
(включая его UUID).
Передача ( |
) этих сведений для awk '/Volume UUID:/ { print $3 }'
извлечения UUID.
VOLUME_UUID=`diskutil info "$VOLUME_PATH" | awk '/Volume UUID:/ { print $3 }'`
Добавление и вывод на консоль (см UUID=$VOLUME_UUID none apfs rw,noauto
. tee )/etc/fstab
cat << EOF | sudo tee -a /etc/fstab
UUID=$VOLUME_UUID none apfs rw,noauto
EOF
grep/awk
вawk '/Volume UUID:/ { print $3 }'
Я нашел официальное руководство по адресу https://discussions.apple.com/docs/DOC-7942 «Предотвращение монтирования тома при запуске».
bmike
diskutil unmount force disk1s2
Кроме того, если вы выберете файловую систему, которую Spotlight не будет индексировать, или зададите этот диск для исключения в настройках Spotlight, вы можете уменьшить эту задержку и накладные расходы, быстро изменив настройки.Дэн
Spotlight
, антивирусов и атак.Дэн