Grub2 no LVM: Como alternar entre LVs de raiz alternativa?

2

Eu tenho uma configuração de trabalho do Ubuntu Server 12.04 LTS (precisa) instalada em um volume LVM (/ dev / vg0 / root). / boot está no mesmo LV, e o Grub2 é inicializado muito bem usando seus próprios módulos raid / lvm / xfs. Ótima coisa!

Agora eu gostaria de testar o Ubuntu Server 14.04 LTS (confiável) para avaliar se os pacotes mais recentes melhoram as coisas na minha configuração. Então, o que eu faço é simplesmente criar outro LV, digamos / dev / vg0 / root-trusty, e prepará-lo da maneira que normalmente faço quando faço configurações bare-metal usando debootstrap e chroot, instalando kernel, grub-pc, etc.

Agora eu tenho dois sistemas de arquivos raiz completos no meu LVM, incluindo dois diretórios / boot e dois arquivos /boot/grub/grub.cfg diferentes. Por favor, ajude-me a pensar: Como o Grub sabe agora qual grub.cfg usar?

A única maneira que faria sentido para mim é que grub-installsalva informações sobre o que o sistema do qual o grub-install é executado pensa que é o root-fs correto. Portanto, a alternância entre os dois LVs de raiz para inicialização pode ser feita através da emissão grub-installdo respectivo sistema de arquivos (com chroot) e, em seguida, reinicie.

É assim mesmo? Caso contrário, o que mais o Grub2 faz quando "encontra" vários sistemas de arquivos dos quais poderia usar para iniciar o estágio 2? Não consegui encontrar nenhuma informação concreta sobre isso até agora. Por isso, pensei em perguntar antes de investir as últimas horas da noite em tentativa e erro.

Obrigado por qualquer esclarecimento sobre isso!

PS: para maior clareza - NÃO digo a inicialização dupla típica usando várias entradas do SO em um único grub.cfg em uma partição / inicialização separada. Eu sei disso, mas aqui eu meio que QUERO usar instalações simultâneas do Grub2 em partições separadas.

memartin
fonte

Respostas:

1

Se você estiver olhando para a sua configuração do grub2 (use bootinfoscriptpara um rápido resumo), notará que a primeira etapa do processo de inicialização é olhar para o MBR e encontrar um ponto de entrada de onde carregar o código necessário para acessar todos esses misteriosos sistemas de arquivos que um BIOS de PC nunca sonhou ouvir.

Se você não tiver bootinfoscript, provavelmente deseja buscá-lo ...

sudo apt-get install boot-info-script cl-awk 

Exemplo de saída:

============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    for (tetrad-12.04)/boot/grub on this drive.
 [detailled per-partition output omitted]

Há um bom artigo no wiki alemão que descreve como analisar uma configuração do grub .

Para os primeiros testes da sua segunda partição de inicialização recém-instalada, sugiro que você mantenha o MBR inalterado (você fez um backup, caso a instalação o tenha danificado, não foi?), Inicialize na partição 12.04 antiga após o instalar, execute update-grubpara incluir a instalação nova e brilhante na partição 14.04 no menu, verifique /boot/grub/grub.cfg (a entrada 14.04 deve apontar para a partição correta, não a 12.04, e provavelmente usar nomdmonddf nomdmoniswenquanto você ' ainda está usando 12.04 em paralelo.

Se você conseguir reiniciar o 14.04 usando essa configuração, poderá seguir em frente e executar a grub-installpartir da partição 14.04 para inicializá-lo no 14.04 sem o desvio até o 12.04.

Ambas as partições raiz detectam a outra partição raiz durante o update-grub e são capazes de inicializar na outra partição através do menu gerado, mas é o grub-install que determina qual partição atende ao /boot/grub/grub.cnf.

PS: Acabei de configurar um ambiente como esse para experimentar com segurança a atualização de lançamento de 12.04 para 14.04. (Um lv cada para 10.04, 12.04 e 14.04)

Tatjana Heuser
fonte
0

Eu não sei se você pode, porque mesmo se você instalar o grub em diferentes HDs, acho que ainda precisa ser apontado com o MBR. Embora você possa tentar instalar o grub A no sda e o grub B no sdb e, em seguida, apenas escolher de onde inicializar na bios todas as vezes.

Michael Thees
fonte
0

Existe apenas um MBR por disco. O MBR será inicializado no grub que mais recentemente escreveu esse MBR.

O MBR encontra o sistema de arquivos que está procurando pelo UUID. larvas recentes são totalmente compatíveis com LVM. E sim, você pode alternar executando o grub-install a partir de outro sistema operacional, mesmo que esteja em chroot.

Eu acredito que responde plenamente a sua pergunta. Como você observa, você pode simplesmente usar as entradas extras adicionadas ao boot / grub / grub.cfg para inicializar em outros sistemas operacionais que você possui, no entanto, você claramente escreveu isso fora de sua pergunta.

gregrwm
fonte