Restaurar o carregador de inicialização da Apple em um Mac (Intel) depois que um update-grub foi executado por uma instalação externa do Ubuntu

8

Eu tenho o Ubuntu instalado em um disco rígido externo e o uso como uma instalação portátil que posso levar comigo aonde quer que eu vá.

Hoje eu o inicializei no iMac de um amigo e, depois que o Software Updater me pediu para instalar as atualizações. Então eu fiz.

Como naquele momento eu terminei com ele, desliguei o computador e desconecte o HDD externo. Imediatamente após o que iniciei o iMac novamente, ele seria inicializado novamente no OSX.

Para meu choque total, horror e confusão, fui recebido com uma tela de resgate do GRUB!

Como isso é possível? O Ubuntu está instalado no disco rígido externo, não no interno! Como diabos o GRUB acabou no HDD interno do iMac?

Mais importante, como faço para corrigir isso?

Android Dev
fonte
@Fran - Não, não é um idiota. Eu queria restaurar o carregador de inicialização da Apple, não o GRUB.
Android Dev

Respostas:

7

(Role para baixo para a correção real)

Então, as coisas eram ainda mais complicadas do que pareciam a princípio.

Para manter a compatibilidade com o MS-Windows, a Apple usa um UEFI híbrido e o modo MBR herdado. Aparentemente, existe um valor de NVRAM que informa ao firmware se você deseja inicializar no modo UEFI (OS-X) ou no modo MBR herdado (Windows). Esse valor é controlado pela sua seleção em "Preferências do Sistema> Disco de Inicialização". (Não me pergunte por que, pergunte à Apple)

Agora, para inicializar o Ubuntu a partir do meu disco rígido externo, inicializei pela primeira vez a partir de um DVD no qual havia gravado um ISO de referência. (Selecionando "Inicialização EFI" com o ícone do DVD ao pressionar a Optiontecla durante a inicialização). Depois de inicializar a partir desse DVD, selecionei meu disco rígido externo para inicializar de dentro do rEFInd.

É aqui que as coisas começam a ficar realmente estranhas. Depois de dizer ao rEFInd para inicializar a partir do disco rígido externo, a tela roxa do GRUB nunca apareceu (Sim, eu havia definido um atraso) e, além disso, não havia animação de inicialização com ponto roxo. Em vez disso, foi o texto em branco de rolagem inicializado.

Pelo que posso dizer, olhando o rEFInd mais de perto antes de iniciar a inicialização é que a opção Ubuntu era realmente carregar um kernel específico, e não apenas inicializar a partir do disco.

O que isso significa é que o rEFInd é, bem, obviamente o EFI, e funciona essencialmente como uma substituição do GRUB, que, embora o Ubuntu tenha sido instalado no modo MBR no disco rígido externo, acabou sendo inicializado no modo UEFI.

Esse fato é muito importante e você verá o porquê em apenas um segundo.

Então, deixei o Atualizador de Software executar algumas atualizações. Observando os logs, parece que o update-grubcomando foi executado durante o processo de instalação. É aqui que todas as coisas ruins acontecem . Agora, neste momento, não sei exatamente o que aconteceu, mas eis o meu melhor palpite: O atualizador grub ficou confuso desde que o grub foi instalado no modo MBR, mas o Ubuntu foi inicializado no modo UEFI. Por causa da confusão e do fato de o carregador de inicialização ser instalado em um local diferente, dependendo do mod em que você foi inicializado, o atualizador grub comete um grande erro e instala o grub no modo MBR no disco rígido interno.


Agora, para a correção real!

No meu caso particular, a partição OS-X ainda era inicializável se eu mantivesse a Optiontecla pressionada durante a inicialização e selecionasse o "Macintosh HD".

Depois de inicializar o OS-X, você deseja abrir as Preferências do Sistema e, em seguida, ir para o Disco de Inicialização. Selecione o volume do OS-X, clique em Aplicar ou o que for, reinicie e BOOM! o logotipo da Apple mostra!


Agora, apenas para sua informação, acho que, embora isso resolva o problema, o GRUB ainda reside no setor 0, mas acho que não causará nenhum dano lá, e certamente não se você instalar o Windows no Boot camp, desde a inicialização do Windows carregador iria substituí-lo então

Android Dev
fonte