O script do Boot Camp quebrou após a atualização do El Capitan

3

Eu tenho um script que chamo do Terminal para inicializar na minha partição do Windows:

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

Depois de atualizar para o El Capitan (10.11.1), não posso mais usá-lo. A mensagem de erro diz algo sobre não poder definir uma propriedade do disco, portanto, acho que isso está relacionado aos recursos de segurança que foram adicionados nesta atualização.

Sean Haugh
fonte

Respostas:

2

Você não pode definir o disco inicializável com bless se o System Integrity Protection estiver ativado. Isso ocorre porque a bless grava na NVRAM, que é proibida pelo SIP. É por isso que as Preferências do Sistema → Disco de Inicialização podem definir o disco de inicialização, mas outros binários não.

Para desativar a proteção de integridade do sistema, você pode fazer o seguinte:

  1. Inicialize no Recovery HD reiniciando enquanto mantém pressionado ⌘R.
  2. Abra o Terminal (no menu Utilitários).
  3. Execute o seguinte comando no Terminal:

    csrutil disable
    
  4. Reiniciar.

Fonte: Desative o OS X El Capitan Rootless e permita ações de gravação nos locais do System Integrity Protection

grg
fonte
Quando devo me preocupar em desativar o SIP?
Sean Haugh
@Sean Permite que os aplicativos gravem no / System, NVRAM e injetem código em outros processos em execução, dada a senha do administrador (ou seja, root). É novo em El Capitan e o SIP desativado era o estado do OS X em Yosemite e anteriores. Como as Preferências do Sistema são assinadas em código com o certificado da Apple, ele ignora o SIP, portanto, é preferível criar scripts para esta GUI para evitar a desativação do SIP.
grg
11
Eu evitaria desabilitar o SIP e encontrar uma maneira diferente. O Bless não é o único a definir o disco de inicialização e o uso de algo como automator ou AppleScript provavelmente será suportado pela Apple, o que é benéfico a longo prazo, já que as atualizações têm menos probabilidade de quebrá-lo.
John Keates