Como instalo duas instalações independentes do Ubuntu em um único disco rígido com UEFI?

8

Por motivos de segurança, eu gostaria de instalar um sistema operacional secundário completamente independente em um computador de disco rígido único usando UEFI. Ambas as instalações devem poder usar partições criptográficas LUKS diferentes como dispositivo raiz (LVM na parte superior da criptografia) e precisam poder usar seus próprios kernels.

Ter inicialização dupla com dois sistemas operacionais diferentes não é grande coisa. O Ubuntu e o Fedora não interferem e podem compartilhar a partição do sistema EFI, mas duas instalações do Ubuntu lutam entre si porque desejam instalar a instância do Grub no mesmo local EFI.

  • Existe uma maneira de mudar o Ubuntu para instalar o Grub em um local diferente do que /boot/efi/EFI/ubuntudurante a instalação? Eu preciso de uma maneira persistente, para que as atualizações do pacote e do kernel / grub ainda sejam instaladas nesse caminho. Assim como o Grub do Fedora seria instalado /boot/efi/EFI/fedora. Não consigo encontrar essa opção de configuração no Grub. Se eu pudesse, meu menu de inicialização do Dell UEFI me permitiria escolher qual sistema operacional carregar. Talvez eu esteja perdendo alguma cola entre efibootmgr e grub-efi aqui.

  • Como alternativa, seria possível usar uma única instalação do Grub de uma das duas instalações do Ubuntu e detectar automaticamente as configurações de inicialização corretas? Quero dizer, eu sei que os-probervou encontrar a outra /bootpartição com kernels, mas como ele pode conhecer os parâmetros de inicialização corretos para esse SO (por exemplo, volume LVM dentro do volume criptografado bloqueado como sistema de arquivos raiz)? Eu posso entender isso com instalações de partição única não criptografadas, mas não pode corresponder a um /bootcom o sistema de arquivos raiz correspondente, certo? E é completamente impossível se criptografado. Portanto, isso exigiria muitos ajustes manuais nos arquivos de configuração do grub. Também não gosto dessa opção de uma única configuração compartilhada do gerenciador de inicialização, tornando os dois sistemas operacionais menos isolados até certo ponto.

A propósito, estou bem com a instalação especializada em servidor de texto. Também algumas configurações personalizadas, desde que eu não precise repetir as etapas para todas as atualizações do kernel / Grub.

gertvdijk
fonte

Respostas:

6

Eu tenho duas sugestões ...

Opção 1: ESPs separados

Sob EFI, o carregador de inicialização reside "na" Partição de Sistema EFI (ESP). Coloquei a palavra "the" entre aspas porque não existe uma regra que diga que você está limitado a um ESP. Se você criar dois ESPs no disco rígido, poderá usar um deles para sua primeira instalação e o segundo ESP para a segunda instalação. Isso deve funcionar perfeitamente, embora você precise criar suas partições manualmente (usando a opção "Something Else" durante a instalação), pelo menos para sua segunda instalação do Ubuntu.

Um problema com essa abordagem é que, embora a especificação EFI indique explicitamente que você pode criar quantos ESPs desejar, alguns softwares podem ficar confusos com ela. Um exemplo importante disso é o instalador do Windows, pelo menos através do Windows 7 (não sei sobre o Windows 8 ou posterior); quando o instalador do Windows 7 vê um disco com dois ESP, ele se solta e faz coisas estranhas. IIRC, ele não conclui sua própria instalação corretamente. É concebível que as ferramentas de reparo do Windows sofram do mesmo problema. Se você não está inicializando o Windows neste sistema, isso não deve ser um grande problema. Se você éAo inicializar com o Windows, você deve simplesmente estar ciente do problema, porque você pode superá-lo facilmente, alterando temporariamente o código de tipo do (s) ESP (s) que não são do Windows, se tiver problemas. Observe que o Windows inicializará muito bem em um disco com vários ESPs; é apenas o instalador que engasga com esses discos.

Outra questão é como você alternaria entre suas duas distribuições. Pode ser necessário personalizar uma ou ambas as configurações do GRUB de suas instalações usando uma ferramenta como o GRUB Customizer. Outra opção (mas não incompatível) seria usar o gerenciador de inicialização do seu firmware para alternar entre suas duas instalações do GRUB e usar cada uma delas para inicializar apenas sua própria versão do Ubuntu.

Opção 2: Abandonar o GRUB (ou pelo menos as ferramentas GRUB do Ubuntu)

O problema com o GRUB para sua situação é que você tem duas instalações e as ferramentas de manutenção do GRUB provavelmente ficarão confusas com essa configuração. Essa observação leva à solução óbvia de que você simplesmente não deve usar essas ferramentas. Existem vários outros carregadores de inicialização EFI para Linux, a maioria dos quais é mais fácil de manter manualmente do que o GRUB. Você pode configurar o ELILO, SYSLINUX, o GRUB Legacy, o gummiboot ou o rEFInd do patch do Fedora, e gerenciar as duas instalações manualmente. De fato, como o rEFInd detecta os kernels sempre que é inicializado, o rEFInd deve ficar quase sem manutenção, uma vez configurado. Como alternativa, mas de maneira semelhante, você pode editar manualmente seu grub.cfgarquivo para fazer o que quiser, em vez de confiar nos scripts de instalação do GRUB.

Além do rEFInd, todas essas ferramentas exigirão que você faça alterações na configuração sempre que atualizar um kernel, o que será uma chatice. Há também a questão de quando e como instalar o programa de inicialização extra. Eu provavelmente a deixaria para depois da sua segunda instalação do Ubuntu, já que cada instalação registrará sua própria cópia do GRUB como o carregador de inicialização padrão, e você deseja substituir esse padrão.

Observe também que nenhuma dessas ferramentas pode ler um kernel de um sistema de arquivos criptografado ou de um LVM, portanto, você precisará ter uma /bootpartição não criptografada separada para cada instalação do Ubuntu. Esta é a maneira que a maioria das instruções que eu vi dizem para configurar uma instalação criptografada do Ubuntu de qualquer maneira, então provavelmente não é grande coisa, a menos que você queira jogar na "ponta sangrenta" da criptografia de disco.

Alguns carregadores de inicialização EFI têm requisitos adicionais adicionais de particionamento ou sistema de arquivos. Mais notavelmente, ELILO, SYSLINUX e gummiboot exigem que o kernel resida em uma partição FAT, e o ESP funciona melhor para isso. Você pode fazer isso montando o ESP em /boot, mas esta é uma solução duvidosa no Ubuntu porque algumas atualizações de pacotes requerem links simbólicos. Você também teria problemas ao fazer isso com duas instalações separadas do Ubuntu, porque ambas tentariam reivindicar os mesmos arquivos. (Nesse caso, "o ESP" realmente significa "a partição da qual o carregador de inicialização foi executado", para que você possa ter apenas um ESP neste caso.) O GRUB Legacy e o rEFInd são mais flexíveis quanto a isso.

Minha recomendação

Pessoalmente, eu usaria o refEnd para isso - mas, como mantenho o refE, não sou exatamente imparcial. Na verdade, eu tenho um computador que multi-inicializa entre três instalações do Ubuntu e o rEFInd alterna entre elas muito bem. Esse sistema em particular não usa criptografia, mas duvido que isso cause novos problemas da perspectiva do rEFInd.

Dito isto, os ESPs separados também devem funcionar bem, com a ressalva de que você pode precisar usar o GRUB Customizer para ajustar as configurações de pelo menos uma dessas cópias do GRUB.

Rod Smith
fonte
Muito boas sugestões, obrigado! Tenho certeza de que você está certo sobre a possibilidade de ter vários ESPs pela especificação, mas duvido que minha implementação do Dell Latitude UEFI também a suporte. Ele só me permite navegar nos caminhos por unidades individuais individuais. Eu tenho que realmente tentar isso embora.
Gtvdijk
se a implementação de EFI da Dell estiver tão quebrada que não pode lidar com vários ESPs, devolva-a à loja para reembolso. A sério; esse tipo de coisa ruim indicaria tanta coisa que eu não confiaria no firmware para realizar suas tarefas mais básicas. Na prática, não acho que seria tão ruim assim; Nunca ouvi falar de uma EFI que não possa lidar com vários ESPs.
Rod Smith
1

Aqui estão as etapas que eu usei para inicializar com dois sistemas Ubuntu criptografados LUKS em um único disco rígido com UEFI usando a opção 2, recomendada por Rod Smith anteriormente. Isso foi especificamente com o Ubuntu 18.04.1-desktop. A criptografia do diretório inicial não é mais fornecida como uma opção durante a instalação, pois há preocupações com a confiabilidade e a manutenção do eCryptfs. É recomendável usar o LUKS, então acho que é a melhor opção para ter vários usuários com partições domésticas criptografadas.

    1. Inicialize em um USB ao vivo, baixando o ISO e usando o Startup Disk Creator para formatar e configurar uma unidade USB.
    1. Use GParted para particionar o disco. Isso foi baseado nas recomendações em https://help.ubuntu.com/community/ManualFullSystemEncryption e no uso de alguns dos padrões definidos pelo instalador do Ubuntu ao selecionar a criptografia de disco para o disco completo.
      • Partição de sistema EFI / 512MiB / FAT32 / boot, esp (flags)
      • Sistema de Inicialização # 1 / 732MiB / EXT4
      • Sistema de Inicialização # 2 / 732MiB / EXT4
      • Dados criptografados # 1 / [tamanho desejado] / limpos
      • Dados criptografados # 2 / [tamanho desejado] / limpos
    1. Reinicie novamente no Live USB
      • Instale o Ubuntu
      • Selecione as preferências de instalação
      • Selecione "Algo mais" para o layout do disco da partição e dentro dessa configuração de partição para a instalação:
        • Selecione "Partição do sistema EFI" como o carregador de inicialização no menu na parte inferior.
        • Selecione "Dados criptografados nº 1" e selecione "dispositivo físico para criptografia" e digite a frase de criptografia a ser usada para a partição.
        • Selecione a partição recém-criada com EXT4 e altere o ponto de montagem para "/".
        • Selecione o "Boot System # 1" e tenha o ponto de montagem para "/ boot".
      • Continue e instale
    1. Reinicie na nova instalação
      • Instale "refind" via "apt-get install refind" e instale-o automaticamente no ESP, a "Partição do sistema EFI".
    1. Reinicie novamente no Live USB
      • Repita as etapas 3 e 4 para as partições nº 2 do sistema de inicialização e dos dados criptografados nº 2 instalando a segunda instalação do Ubuntu.
    1. Configure e atualize cada instalação, conforme necessário.
brihoriq
fonte
1

Eu uso a seguinte abordagem com um único ESP:

Criei carregadores de inicialização adicionais para cada sistema operacional com

sudo grub-install --bootloader-id=ID

usando um diferente IDpara cada sistema operacional.

Exemplo:

Eu tenho o Ubuntu 16.04 e o Ubuntu 18.04 instalados. Eu inicializo no Ubuntu 16.04 e corro

sudo grub-install --bootloader-id=Ubuntu1604

Então, a partir da inicialização no Ubuntu 18.04, eu corro

sudo grub-install --bootloader-id=Ubuntu1804

Nos UEFI-configurações vejo as novas entradas de inicialização com os nomes Ubuntu1604e Ubuntu1804e reorganizar a ordem de inicialização para um conjunto de novas entradas para o primeiro lugar.

Também posso ver as pastas com esses nomes no ESP.

Quando uma atualização do sistema é fornecida com uma nova versão do grub, ele reinstalará uma nova instância do grub na ubuntupasta-no ESP, não afetará os gerenciadores de inicialização que eu mesmo criei, mas preciso reorganizar a ordem de inicialização novamente como a ubuntuentrada será empurrada para o primeiro lugar na ordem de inicialização.

Isto é o que efibootmgr -vmostra na minha configuração:

~ $ efibootmgr -v
BootCurrent: 0001
Tempo limite: 0 segundos
BootOrder: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Arquivo (EFI \ Ubuntu \ grubx64.efi)
mook765
fonte
Ainda não funcionou para mim. Altero o padrão em / etc / default / grub para distribuição como GRUB_DISTRIBUTOR="Bionic_18_04"e a reinstalação do grub usa isso como ID padrão UEFI. Mas toda vez que ele usa apenas o /EFI/ubuntu/grub.cfg como local padrão para inicializar a partir do meu novo /EFI/bionic_18_04/grub.cfg.
25719 oldfred
@oldfred Para mim, isso funciona bem por vários anos executando uma inicialização tripla.
mook765
Tentei seu comando, em vez de renomear em / etc / default / grub. Não fez diferença. UEFI está definido como nova entrada de inicialização padrão. Mas ele inicializou usando meu / efi / ubuntu com o Disco como inicialização padrão, em vez de grub na nova pasta / EFI / ubuntu1804. Eu acho que é o grub, não a UEFI, que faz a diferença.
25819 Oldfred
@oldfred Por favor, dê uma olhada na saída efibootmgr -vque eu adicionei à minha resposta. Funciona. Você pode ter alterações adicionais que o impedem de fazer isso. O que eu descrevi é a única coisa que faço para fazê-lo funcionar.
mook765
Eu verifiquei o efibootmgr -v e ele foi configurado para nova entrada, mas inicializei o grub no / EFI / ubuntu. O meu está inicializando /EFI/ubuntu1804/shimx64.efi. Você está usando um grubx64.efi ou shimx64.efi, talvez essa seja a diferença? Eu tenho o Secure Boot desativado, mas ele padronizou como a primeira entrada do ubuntu1804. Em algum momento, acabei com tantas entradas ou pastas UEFI no / EFI que tive problemas ao inicializar e tive que usar o rEFInd em outra unidade para inicializar. Portanto, agora não gosto de ter muito na pasta / EFI ou entradas na UEFI.
25719 oldfred