Onde o grub está instalado e eu preciso de um novo para uma instalação separada do Linux?

4

Atualmente tenho o Arch e o Windows com o grub instalado e configurado. Vou fazer outra instalação do Arch em uma partição separada.

Eu preciso instalar e configurar o grub novamente na distribuição recém-instalada ou posso usar o antigo?

Suponho que, se eu continuar usando o grub antigo (atual deste ponto de vista), precisarei configurá-lo novamente para que ele veja a nova instalação do Arch.

O que acontecerá se eu formatar a partição atual (com a instalação antiga do Arch)?
O grub continuará funcionando ou não (ou seja, eu precisaria inicializar alguns live-cd para consertá-lo)?

Para resumir: o grub é instalado em algum lugar geral, independentemente de qualquer sistema operacional, ou está ligado a algum (minha instalação atual do Arch).
Os tutoriais fornecem este comando: grub-mkconfig -o /boot/grub/grub.cfg , o que me faz pensar que o grub está ligado à instalação específica do linux; mas eles também mostram um comando grub-install sem especificar nenhum diretório.

E se o grub estava vinculado à instalação atual, como meu computador saberia qual partição verificar para o grub? Caso contrário, se fosse "geral", por que eu teria que "instalá-lo" como um pacote na instalação do arco específico ?

    
por Al.G. 23.08.2016 / 23:16

3 respostas

8

Convenção de nomenclatura:

  • O GRUB (alguns deles) permanece no MBR.

  • GRUB (restante) são vários arquivos carregados, de /boot/grub (por exemplo: aquela bela imagem que aparece como fundo no GRUB não é armazenada no MBR)

Notas:

  • A resposta é considerar uma configuração de MBR, o GRUB pode ser usado em outras configurações.

  • Em uma configuração EFI, as coisas ficam arrojadas, o GRUB pode ser usado, mas também pode ser o próprio kernel como seu próprio stub EFI.

O GRUB (parte dele) está instalado no MBR. O MBR são os primeiros 512 bytes em um disco. O MBR também é usado pela tabela de partições do disco, portanto o próprio GRUB tem menos espaço que os 512 bytes.

O GRUB (parte dele) dentro do MBR carrega um GRUB mais completo (restante) de outra parte do disco, que é definida durante a instalação do GRUB no MBR ( grub-install ). Como o GRUB do MBR precisa encontrar sua contraparte no disco, que normalmente reside em /boot , a partição onde o GRUB principal reside não pode estar muito longe da tabela de partição (geralmente 512MB , mas pode variar).

É muito útil ter /boot como sua própria partição, desde então o GRUB para o disco inteiro pode ser gerenciado a partir daí.

O que significa:

  • O GRUB no MBR só pode carregar um GRUB (o resto) do disco.

  • Esse GRUB específico (o restante) no disco deve ser configurado para localizar todos os SOs na máquina.

O comando grub-mkconfig -o /boot/grub/grub.cfg é executado os-prober (se puder encontrá-lo), que varre todas as partições e produz um grub.cfg apontando para todos os SOs.

Portanto, se você tiver várias partições com /boot (ou os equivalentes do MS Windows, não as conheço, mas os-prober sabe), o os-prober as encontrará e criará grub.cfg de acordo. Executar grub-install instala um GRUB (parte dele) no MBR que aponta para o GRUB do sistema operacional atual com o atual grub.cfg .

O que isso significa:

  • Você só precisa de um único GRUB para todo o sistema.

  • Você pode ter GRUBs diferentes em discos diferentes (já que eles têm MBRs distintos), mas isso só faz sentido se você planeja remover o disco.

  • Você pode gerenciar a inicialização de todos os sistemas operacionais a partir de uma única instalação do GRUB.

  • Em um único disco, você sempre deverá executar grub-install somente a partir de um único sistema operacional! Isso é importante, caso contrário, você continuará sobrescrevendo sua configuração.

por 23.08.2016 / 23:43
8

Só para esclarecer: você está usando grub2 , correto?

Caso o Grub2 esteja instalado em sua própria partição de inicialização, você não precisa alterar nada. Quando não é (o que seria realmente estranho), então você poderia tecnicamente manter o grub.cfg , e se a sua distribuição o possuir, também /etc/grub.d .

/boot deve ser sua própria partição. Se você executar mount e vir algo assim:

/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,stripe=4,data=ordered)

Você tem o Grub2 instalado em sua própria partição, como deveria ser. Normalmente, ao instalar uma nova distro, o wizzard geralmente o guiará pelo processo de instalação e até mesmo descobrirá quais partições contêm quais OS-es, se aplicável. O processo no Arch é um pouco mais tedioso, mas muito bem documentado .

No caso de horribilidade segue

Faça o download do GParted , coloque-o em um dispositivo USB, inicialize a partir dele e monte a partição /boot .

Em seguida, basta executar como root (ou com sudo ):

grub-mkconfig -o /boot/grub/grub.cfg

O Grub2 deve ser capaz de autodetectar suas partições e agir de acordo.

(Neste ponto não tenho certeza se as partições precisam ser todas montadas para o Grub2 para detectar os sistemas operacionais nelas, embora)

Se você tentou instalar o Windows nesse meio tempo, pode ser que o Windows tenha sobrescrito o gerenciador de inicialização. Para corrigir isso, basta executar como root (ou com sudo ):

grub-install /dev/sdX

onde /dev/sdX é a unidade em que sua partição de inicialização reside.

Um pouco de explicação:

O Grub2 é um carregador de boot do estágio 2. O que significa que não é exatamente um sistema operacional, mas é muito mais complexo do que um simples chainloader, que caberia nos primeiros 446bytes da sua partição primária (o resto do primeiro setor é a tabela de partições, flags, etc.).

O MBR contém apenas o código para executar o código Grub2, que reside na sua partição /boot . Grub2 então chainloads em outra partição (para inicializar janelas, por exemplo, instalando seu próprio gerenciador de inicialização), mas pode também execute código (coisas como memtest ), ou acesse e execute uma imagem do kernel e do módulo ( vmlinuz ).

O que é importante notar é que, em ambos os casos, o Grub2 é descarregado da memória assim que um kernel é executado, ou outra partição é carregada em cadeia.

    
por 23.08.2016 / 23:40
3

O Grub não está vinculado a um sistema operacional específico. Ele pode residir em sua partição privada, embora geralmente esteja instalado no sistema de arquivos principal. Mas, para que seja capaz de inicializar seu (s) sistema (s), ele precisa saber sobre eles. Portanto, você precisa atualizar o Grub após quaisquer alterações importantes nos sistemas presentes em sua máquina, como um novo sistema operacional instalado ou uma atualização do kernel. Se você excluir o único Grub existente, você não inicializará seu (s) sistema (s). Pode haver muitos Grubs em uma máquina, mas apenas um é principal ou ativo. Além do Grub, existem outros gerenciadores de inicialização que podem ser usados (em vez do Grub). O Windows possui seu próprio gerenciador de inicialização, que pode ser configurado como o principal para toda a máquina.

    
por 23.08.2016 / 23:27