Скрипт Boot Camp сломался после обновления El Capitan

У меня есть скрипт, который я вызываю из терминала для загрузки в мой раздел Windows:

#! /bin/bash
sudo bless -mount "/Volumes/BOOTCAMP" -legacy -setBoot
sudo reboot

После обновления до El Capitan (10.11.1) я больше не могу его использовать. В сообщении об ошибке говорится о невозможности установить свойство диска, поэтому я предполагаю, что это связано с функциями безопасности, которые были добавлены в этом обновлении.

Ответы (1)

Вы не можете установить загрузочный диск с благословением, если включена защита целостности системы. Это потому, что bless пишет в NVRAM, что запрещено SIP. Вот почему Системные настройки → Загрузочный диск могут установить загрузочный диск, а другие двоичные файлы - нет.

Чтобы отключить защиту целостности системы, вы можете сделать следующее:

  1. Загрузитесь в Recovery HD, перезапустив компьютер, удерживая ⌘R.
  2. Откройте Терминал (из меню «Утилиты»).
  3. Выполните следующую команду в Терминале:

    csrutil disable
    
  4. Перезапуск.

Источник: отключите OS X El Capitan Rootless и разрешите операции записи в местоположения защиты целостности системы.

Когда мне следует беспокоиться об отключении SIP?
@Sean Это позволяет приложениям записывать в /System, NVRAM и вводить код в другие запущенные процессы с учетом вашего пароля администратора (например, root). Это новинка в El Capitan, а отключенный SIP был состоянием OS X в Yosemite и более ранних версиях. Поскольку Системные настройки имеют кодовую подпись с сертификатом Apple, они обходят SIP, поэтому использование сценариев этого графического интерфейса может быть предпочтительнее, чтобы избежать отключения SIP.
Я бы не стал отключать SIP и искал другой способ. Bless не единственный, кто устанавливает загрузочный диск, и использование чего-то вроде автомата или applescript, скорее всего, будет поддерживаться Apple, что выгодно в долгосрочной перспективе, поскольку обновления с меньшей вероятностью сломают его.