Inicialização tripla do macOS High Sierra, Ubuntu e Windows sem RFI

10

Atualmente, tenho três sistemas operacionais instalados no meu MacBook Air 2017: macOS, Ubuntu e Windows 10. Não consegui inicializar no Ubuntu sem o rEFInd, mas prefiro fortemente o gerenciador de inicialização padrão, porque quero usar a senha do firmware (que rEFInd não tem).

Existe alguma maneira de o gerenciador de inicialização do macOS reconhecer o Ubuntu sem usar um gerenciador de inicialização de terceiros?

NOTAS:

  • Não quero o Ubuntu definido como meu sistema operacional padrão como alternativa. Eu só quero que ele apareça no menu de inicialização.
  • Eu não me importo se isso for apenas para o GRUB. Contanto que ele possa carregar o kernel, tudo bem.

A saída do comando diskutil list.

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         242.6 GB   disk0s2
   3:           Linux Filesystem                         49.9 GB    disk0s4
   4:       Microsoft Basic Data WinData                 75.1 GB    disk0s5
   5:       Microsoft Basic Data Windows                 125.1 GB   disk0s6

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +242.6 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            74.0 GB    disk1s1
   2:                APFS Volume Preboot                 25.1 MB    disk1s2
   3:                APFS Volume Recovery                506.6 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4
kouwei32
fonte
Qual é o ano do seu MacBook Air? O que eu realmente quero saber é como o Windows, Ubuntu e rEFInd estão instalados. Alguma inicialização do BIOS? Onde você instalou o rEFInd? Além disso, ajudaria se você incluísse a saída do diskutil listcomando. Sua pergunta já foi feita antes. Existem várias soluções simples.
David Anderson
Existem, de fato, várias soluções, mas nenhuma delas funciona para mim. O ano do MacBook Air é 2017. Instalei o Windows pela primeira vez com o bootcamp, reduzi o volume do macOS para criar outro volume de dados para o Windows, instalei o Ubuntu diminuindo a partição do macOS novamente (o que quebrou as coisas e tive que reinstalar o macOS e redefinir o Windows partição de dados). Eu instalei o refE depois no site oficial. diskutil listSaída: Pastebin
kouwei32
1
Você provavelmente deveria ter lido isso primeiro: Instalando o Ubuntu no Mac com o macOS e o Windows já instalados . Atualmente, estou postando uma resposta para sua pergunta. Minha resposta se baseia um pouco no link acima.
David Anderson
Reinicie o seu Mac e execute o comando diskutil list. Substitua a saída na sua resposta por esta nova saída. Eu pergunto isso porque disk0s3está faltando na sua saída exibida no momento.
David Anderson

Respostas:

5

Segunda resposta alternativa

Esta segunda resposta difere da minha primeira resposta das seguintes maneiras.

  • A segunda partição EFI é substituída por uma partição HFS +.

  • O rótulo exibido no Startup Manager será "Ubuntu" em vez do genérico "EFI Boot".

Assumirei o seguinte:

  • Você instalou o Ubuntu para usar o método de inicialização EFI.
  • Você está usando o grub para inicializar o Ubuntu
  • O Grub inicializa da partição EFI.
  • Existe apenas uma partição EFI.
  • A partição EFI é a primeira partição no disco.
  • Há apenas um disco envolvido e o disco é interno.
  • O rEFInd está instalado na partição EFI.

Vou oferecer duas maneiras de resolver seu problema. Cada um tem seus prós e contras.

O Mac Startup Manager exibirá um sistema operacional se você colocar o arquivo .efi no local certo. Este local é a System/Library/CoreServicespasta do volume em uma partição HFS +. O nome do arquivo deve ser boot.efi. Além disso, você pode personalizar o ícone exibido para o sistema operacional colocando um .VolumeIcon.icnsarquivo na pasta raiz do volume na partição HFS +.

O Primeiro Caminho.

Nota: Aqui, o rEFInd ainda está sendo usado, mas não como um substituto para o Startup Manager. Você poderá usar uma senha de firmware. De fato, nenhum menu refe é exibido. O gerenciador de inicialização rEFInd apenas inicializa silenciosamente o grub (que inicializa o Ubuntu).

  1. Faça o download do rEFInd neste site SourceForge . Presumo que o arquivo baixado tenha o nome refind-bin-0.11.2.zipe esse arquivo tenha sido baixado para sua ~/Downloadspasta.
  2. Crie uma nova partição HFS +. As instruções são fornecidas na seção "Adicionando uma partição HFS +".
  3. Monte a nova partição HFS +, digitando o seguinte comando.

    sudo  diskutil  mount  disk0s3
    

    A nova partição HFS + terá o nome do volume Ubuntu.

  4. Instale rEFInd no volume na nova partição HFS +.

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --ownhfs  /dev/disk0s3
    

    Nota: A mensagem de erro Could not set boot device property: 0xe00002bcera esperada e pode ser ignorada.

  5. Configure o aplicativo TextEdit. Abra o TextEdit e navegue até a janela "Preferências ...". Desmarque todas as "Opções", como mostrado abaixo. Quando terminar, feche o TextEdit.

    y1

  6. Use o comando abaixo para navegar para a pasta que contém o refind.confarquivo.

    cd  /Volumes/Ubuntu/System/Library/CoreServices
    

    Faça uma cópia de backup deste arquivo.

    sudo  cp  refind.conf  refind.conf.orignal
    

    Adicione permissões de gravação para a CoreServicespasta e o refind.confarquivo.

    sudo  chmod  a+w  .  refind.conf
    

    Abra o arquivo no aplicativo TextEdit.

    open  -e  refind.conf
    
  7. Neste volume, edite o System/Library/CoreServices/refind.confarquivo para inicializar silenciosamente o grub (que iniciará internamente o Ubuntu). Isso pode ser feito adicionando as seguintes linhas ao final do refind.confarquivo. Você poderá apenas recortar e colar essas linhas. Quando terminar, salve as alterações e feche o TextEdit.

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \System\Library\CoreServices\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  8. Desmonte o novo volume nomeado Ubuntudigitando os seguintes comandos.

    cd  ~
    diskutil  unmount  disk0s3
    

Prós: o Ubuntu não é afetado, portanto, nenhuma atualização do Ubuntu exigirá atenção.

Contras: Você precisa usar o gerenciador de inicialização de terceiros rEFInd.

A segunda maneira.

  1. Crie uma nova partição HFS +. As instruções são fornecidas na seção "Adicionando uma partição HFS +".
  2. Monte a partição EFI original e a nova partição HFS +, digitando os seguintes comandos.

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    A partição EFI original terá o nome EFIe a nova partição HFS + terá o nome Ubuntu.

  3. No novo volume nomeado Ubuntu, crie as pastas EFI/ubuntue System/Library/CoreServices, digitando os seguintes comandos.

    mkdir  -p  /Volumes/Ubuntu/EFI/ubuntu
    mkdir  -p  /Volumes/Ubuntu/System/Library/CoreServices
    
  4. Copie os arquivos grub.cfge grubx64.efipara o novo volume nomeado Ubuntu. Os comandos necessários são dados abaixo.

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/Ubuntu/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/Ubuntu/System/Library/CoreServices/boot.efi
    
  5. Desmonte a partição EFI original e a nova partição HFS +, digitando os seguintes comandos.

    diskutil  unmount  disk0s1
    diskutil  unmount  disk0s3
    

Prós: Você não precisa usar o gerenciador de inicialização de terceiros rEFInd.

Contras: Se o grubx64.efiou grub.cfgfor atualizado, você deverá copiar manualmente esses arquivos para o novo volume nomeado Ubuntu.

Adicionando um ícone personalizado

Os passos abaixo adicionarão o seguinte ícone do Ubuntu ao menu Iniciar.

os_ubuntu.png

  1. Faça o download de uma coleção de ícones no site da sourceforge, Mac icns .
  2. Use o aplicativo Finder para abrir o arquivo baixado mac-icns.dmg. Presumo que este arquivo baixado para sua ~/Downloadspasta.
  3. Monte o volume nomeado Ubuntudigitando o seguinte comando.

    sudo  diskutil  mount  disk0s3
    
  4. Use o aplicativo Finder para copiar o os_ubuntu.icnsarquivo de ícone na pasta raiz do volume nomeado Ubuntu. Como alternativa, você pode usar o comando mostrado abaixo.

    sudo cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/Ubuntu/.
    
  5. Renomeie o os_ubuntu.icnsarquivo de ícone para .VolumeIcon.icns. Isso pode ser feito inserindo o seguinte comando.

    sudo mv  /Volumes/Ubuntu/os_ubuntu.icns  /Volumes/Ubuntu/.VolumeIcon.icns
    

    Nota: Os arquivos iniciados com um ponto ( .) normalmente não aparecem na janela do aplicativo Finder.

  6. Use o aplicativo Finder para ejetar a partição do sistema EFI com o nome do volume Ubuntu. Como alternativa, você pode usar o comando mostrado abaixo para desmontar o volume.

    diskutil  unmount  disk0s3
    
  7. Use o aplicativo Finder para ejetar o volume nomeado mac-icns.

Adicionando uma partição HFS +

Nota: Abaixo, você baseia a saída diskutil listfornecida na sua pergunta.

  1. Digite o comando abaixo em uma janela do aplicativo Terminal. Isso criará um volume "Mac OS Extended" chamado "Ubuntu" em uma nova partição.

    sudo  diskutil  apfs  resizeContainer  disk0s2  242300M  HFS+  Ubuntu  200M
    
  2. Obtenha o UUID do volume chamado "Ubuntu" digitando o comando abaixo.

     diskutil info Ubuntu | grep "Volume UUID"
    

    A saída deve ser semelhante à mostrada abaixo.

       Volume UUID:              795F14D2-ED1F-3CA0-A004-BD0A27000DC8
    
  3. Em seguida, impeça que este novo nome de volume "Ubuntu" seja montado automaticamente, digitando os seguintes comandos. Substitua seu UUID pelo mostrado abaixo.

    sudo  bash
    echo  >> /etc/fstab
    echo  UUID=795F14D2-ED1F-3CA0-A004-BD0A27000DC8 none hfs rw,noauto >> /etc/fstab
    exit
    

    Nota: A maneira correta, para editar o /etc/fstabarquivo, é usar o comando sudo vifs. Usar o echocomando é apenas um atalho rápido.

  4. Use o aplicativo Finder para ejetar esse novo volume. Como alternativa, você pode inserir o comando mostrado abaixo para desmontar este volume.

    diskutil  unmount  Ubuntu
    

Se você precisar que eu expanda alguma das etapas acima, informe-me.

David Anderson
fonte
1
Este funciona para mim perfeitamente! Obrigado! Além disso, não é muito bom usar o TextEdit para a edição de configuração, pois ele marca o arquivo de configuração como bloqueado. Eu costumava sudo nano /Volumes/Ubuntu/System/Library/CoreServices/refind.confignorar esse problema.
precisa saber é o seguinte
kouwei32: É bom quando alguém pode verificar meus passos. Eu adicionei um comando para alterar as permissões para que o aplicativo TextEdit possa ser usado. E sim, nanoé um bom substituto.
David Anderson
@DavidAnderson Muito obrigado! Isso foi fundamental para que todos os três sistemas operacionais fossem inicializados corretamente. Sem a segunda partição EFS, só era possível inicializar no [macOS ou Ubuntu] OU [Ubuntu ou Windows, via GRUB], dependendo de como o MBR híbrido foi definido e se eu escolhi ocultar a partição APFS principal. Você sabe por que esse é o caso? Mesmo com o rEFInd, não havia uma instância única em que os três sistemas operacionais fossem inicializáveis ​​... até eu adicionar a segunda partição EFS e seguir as etapas do First Way.
Igordcard
@igordcard: Fiz algumas correções depois de ler seu comentário. Nota: Desde que publiquei esta resposta, o Ubuntu não inicializa mais da mesma maneira. Portanto, minha resposta pode não funcionar, se você estiver usando o Ubuntu 18. Os Macs construídos em 2017 não contêm mais um BIOS, portanto, não há necessidade de um MBR híbrido. De fato, um MBR híbrido impediria a inicialização do Windows. Não sei ao certo o que você quer dizer com "ocultar a partição principal do APFS".
David Anderson
@igordcard: os Macs Intel são projetados para inicializar o OS X, macOS ou Windows. No entanto, o firmware também permite inicializar um sistema operacional, se os arquivos de inicialização do sistema operacional forem instalados usando as especificações na seção 3.5.1.1 Removable Media Boot Behavior91 na Especificação da UEFI (Unified Extensible Firmware Interface) . Para Macs Intel, a mídia precisa ser removível.
David Anderson
1

Resposta original

Minha segunda resposta difere desta resposta das seguintes maneiras.

  • Na segunda resposta, a segunda partição EFI é substituída por uma partição HFS +. Esse tipo de partição é mais fácil de criar e modificar.
  • Na segunda resposta, o rótulo exibido no Gerenciador de Inicialização será "Ubuntu" em vez do genérico "EFI Boot".

Assumirei o seguinte:

  • Você instalou o Ubuntu para usar o método de inicialização EFI.
  • Você está usando o grub para inicializar o Ubuntu
  • O Grub inicializa da partição EFI.
  • Existe apenas uma partição EFI.
  • A partição EFI é a primeira partição no disco.
  • Há apenas um disco envolvido e o disco é interno.
  • O rEFInd está instalado na partição EFI.

Vou dar duas maneiras de resolver o seu problema. Cada um tem seus prós e contras.

O Mac Startup Manager exibirá um sistema operacional se você colocar o arquivo .efi no local certo. Este local é a EFI/bootpasta do volume em uma partição EFI. O nome do arquivo deve ser bootx64.efi. Além disso, você pode personalizar o ícone exibido para o sistema operacional colocando um .VolumeIcon.icnsarquivo na pasta raiz do volume na partição EFI.

O Primeiro Caminho.

Nota: Aqui, o rEFInd ainda está sendo usado, mas não como um substituto para o Startup Manager. Você poderá usar uma senha de firmware. De fato, nenhum menu refe é exibido. O gerenciador de inicialização rEFInd apenas inicializa silenciosamente o grub (que inicializa o Ubuntu).

  1. Faça o download do rEFInd neste site SourceForge . Presumo que o arquivo baixado tenha o nome refund-bin-0.11.2.zipe esse arquivo tenha sido baixado para sua ~/Downloadspasta.
  2. Crie uma nova partição EFI. As instruções são fornecidas na seção "Adicionando uma partição EFI".
  3. Faça o download do software rEFInd Boot Manager neste site SourceForge .
  4. Instale rEFInd no volume na nova partição EFI.

    cd  ~/Downloads/refind-bin-0.11.2
    ./refind-install  --usedefault  /dev/disk0s3
    
  5. Desmonte e monte a nova partição EFI, digitando os seguintes comandos.

    diskutil  unmount  disk0s3
    sudo  diskutil  mount  disk0s3
    

    A nova partição EFI terá o nome do volume EFI2.

  6. Configure o aplicativo TextEdit. Abra o TextEdit e navegue até a janela "Preferências ...". Desmarque todas as "Opções", como mostrado abaixo. Quando terminar, feche o TextEdit.

    y1

  7. Use o comando abaixo para navegar para a pasta que contém o refind.confarquivo.

    cd  /Volumes/EFI2/EFI/BOOT
    

    Faça uma cópia de backup deste arquivo.

    cp  refind.conf  refind.conf.orignal
    

    Abra o arquivo no aplicativo TextEdit.

    open  -e  refind.conf
    
  8. Neste volume, edite o EFI/BOOT/refind.confarquivo para inicializar silenciosamente o grub (que iniciará internamente o Ubuntu). Isso pode ser feito adicionando as seguintes linhas ao final do refind.confarquivo. Você poderá apenas recortar e colar essas linhas. Quando terminar, salve as alterações e feche o TextEdit.

    #
    # Added to make rEFInd silent. 
    #
    menuentry "Ubuntu" {
        icon \EFI\BOOT\icons\os_ubuntu.png
        volume "EFI"
        loader \EFI\ubuntu\grubx64.efi
        ostype Linux
        graphics on
    }
    timeout -1
    hideui all
    scanfor manual
    
  9. Desmonte o novo volume nomeado EFI2.

    diskutil  unmount  disk0s3
    

Prós: o Ubuntu não é afetado, portanto, nenhuma atualização do Ubuntu exigirá atenção.

Contras: Você precisa usar o gerenciador de inicialização de terceiros rEFInd.

A segunda maneira.

  1. Crie uma nova partição EFI. As instruções são fornecidas na seção "Adicionando uma partição EFI".
  2. Monte as partições EFI originais e novas, inserindo os seguintes comandos.

    sudo  diskutil  mount  disk0s1
    sudo  diskutil  mount  disk0s3
    

    A partição EFI original terá o nome EFIe a nova partição EFI terá o nome EFI2.

  3. No novo volume nomeado EFI2, crie as pastas EFI/ubuntue EFI/boot, digitando os seguintes comandos.

    mkdir  -p  /Volumes/EFI2/EFI/ubuntu
    mkdir  -p  /Volumes/EFI2/EFI/boot
    
  4. Copie os arquivos grub.cfge grubx64.efipara o novo volume nomeado EFI2. Os comandos necessários são dados abaixo.

    cp  /Volumes/EFI/EFI/ubuntu/grub.cfg  /Volumes/EFI2/EFI/ubuntu/grub.cfg
    cp  /Volumes/EFI/EFI/ubuntu/grubx64.efi  /Volumes/EFI2/EFI/boot/bootx64.efi
    

Prós: Você não precisa usar o gerenciador de inicialização de terceiros rEFInd.

Contras: Se o grubx64.efiou grub.cfgfor atualizado, você deverá copiar manualmente esses arquivos para o novo volume nomeado EFI2.

Adicionando um ícone personalizado

Os passos abaixo adicionarão o seguinte ícone do Ubuntu ao menu Iniciar.

os_ubuntu.png

  1. Faça o download de uma coleção de ícones no site da sourceforge, Mac icns .
  2. Use o aplicativo Finder para abrir o arquivo baixado mac-icns.dmg. Presumo que este arquivo baixado para sua ~/Downloadspasta.
  3. Monte o volume nomeado EFI2digitando o seguinte comando.

    sudo  diskutil  mount  disk0s3
    
  4. Use o aplicativo Finder para copiar o os_ubuntu.icnsarquivo de ícone na pasta raiz do volume nomeado EFI2. Como alternativa, você pode usar o comando mostrado abaixo.

    cp  /Volumes/mac-icns/os_ubuntu.icns  /Volumes/EFI2/.
    
  5. Renomeie o os_ubuntu.icnsarquivo de ícone para .VolumeIcon.icns. Isso pode ser feito inserindo o seguinte comando.

    mv  /Volumes/EFI2/os_ubuntu.icns  /Volumes/EFI2/.VolumeIcon.icns
    

    Nota: Os arquivos iniciados com um ponto ( .) normalmente não aparecem na janela do aplicativo Finder.

  6. Use o aplicativo Finder para ejetar a partição do sistema EFI com o nome do volume EFI2. Como alternativa, você pode usar o comando mostrado abaixo para desmontar o volume.

    diskutil  unmount  disk0s3
    
  7. Use o aplicativo Finder para ejetar o volume nomeado mac-icns.

Adicionando uma partição EFI

Nota: Abaixo, você baseia a saída diskutil listfornecida na sua pergunta.

Enquanto inicializado no macOS, digite os comandos abaixo em uma janela do aplicativo Terminal.

sudo  diskutil  apfs  resizecontainer  disk0s2  242300M  %EFI%  n  200M
sudo  newfs_msdos  -F  32  -v  EFI2  /dev/disk0s3

Se você precisar que eu expanda alguma das etapas acima, informe-me.

David Anderson
fonte
Infelizmente, a primeira solução não é a que eu queria e a segunda não funciona.
kouwei32
A segunda solução é baseada em soluções comprovadas postadas anteriormente. Muitos outros usuários usaram com sucesso esta solução. Veja aqui e aqui .
David Anderson
1
Talvez eu não tenha dado detalhes suficientes. Por exemplo, no seu caso, você precisará criar uma nova partição EFI. Esta não pode ser uma partição formatada em FAT32 normal. Essa deve ser uma partição EFI onde está o GUID na GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B.
David Anderson
Eu já tenho uma partição EFI. Tentei 3 vezes e sem sucesso.
kouwei32
Você pode ter quantas partições EFI precisar. No seu caso, o Windows já está usando a pasta EFI / boot na sua partição EFI. É por isso que você precisa de uma segunda partição EFI.
David Anderson