Como descobrir a saída do menu do GRUB2

4

Acabei de atualizar uma máquina remota que está executando o Ubuntu Server 12.04. Eu tenho acesso somente através do SSH e agora ele está pedindo uma reinicialização. Eu estou supondo que um novo kernel foi instalado. Eu preciso fazê-lo inicializar em um kernel muito específico, caso contrário, ele apenas irá travar. Existe alguma maneira de verificar (desde a linha de comando, desde que eu estou conectando através do SSH) o que o GRUB2 fará na próxima reinicialização?

Eu principalmente preciso ter certeza de que:

  1. A máquina vai inicializar no kernel correto (o que agora pode foram movidos para o submenu " Previous Linux Versions ")
  2. O menu GRUB2 vai "obedecer" ao meu pedido de tempo limite (em alguns     ocasiões eu encontrei máquinas que ficariam presas com o GRUB2     menu de inicialização, apesar de ter um parâmetro GRUB_TIMEOUT especificado em      /etc/default/grub )

Então existe alguma maneira de "simular" ou diagnosticar o que o GRUB2 fará na próxima reinicialização? Alguma maneira de verificar coisas como " Ele irá inicializar o kernel yaddayaddayadda e tem um timeout ativado de yadda segundos "

Eu sei que é um tiro no escuro, mas talvez haja algo como uma ferramenta de diagnóstico (que terá que ser a linha de comando ... Eu nem tenho o X-Windows no computador ao qual estou me conectando)

Obrigado antecipadamente!

    
por BorrajaX 28.01.2013 / 19:03

1 resposta

2

A única maneira de realmente SIMULAR que eu conheço é passar o disco para uma VM.

Eu faço muito isso com meu pen drive GRUB2, que tem kernels para o meu desktop e netbook, além de uma dúzia de Live CDs do Linux, bem como entradas de boot do memtest, DOS, Windows, ...

Quando modifico algo na configuração (como adicionar outra ISO do Live CD), posso testar se inicializa iniciando o dispositivo USB em uma sessão do KVM.

Infelizmente esta solução será mortal para você, se o sistema realmente inicializar e depois gravar no disco! Os sistemas de arquivos usam o ka-boom, já que eles ainda estão sendo usados pelo host, e então os convidados começam a consertá-los e usá-los também ...

Então, para usar isso com segurança, você precisa garantir que sua VM a use no modo somente leitura. A opção mais segura para conseguir isso é através de um dispositivo de loop somente leitura.

# losetup --read-only --find --show /dev/sda
/dev/loop42
# sync
# qemu-kvm -disk file=/dev/loop42,readonly

Como o próprio GRUB não precisa fazer nenhuma gravação, você deve conseguir ver exatamente o que está acontecendo. Certifique-se de que seu disco está sincronizado, embora uma modificação recente no arquivo / boot ainda possa residir apenas na memória e não no disco. Se você puder desmontar / boot, essa seria a melhor opção.

Para o seu problema de linha de comando, note que você pode fazer X sobre SSH (mesmo que seja muito lento). O KVM também oferece VNC, console serial e outros recursos remotos.

Se você não conseguir executar uma VM no servidor (por exemplo, se for um VServer), poderá usar o Network Block Device (NBD) em modo somente leitura ou até mesmo no modo de cópia na gravação para executar a VM do servidor pela rede. O servidor nem precisa suportar o NBD para isso, apenas precisa executar o daemon do servidor. O cliente teria que suportar o NBD no kernel.

É claro que todo o show de simulação é exagerado se você pudesse ler e entender o arquivo grub.cfg. Infelizmente, os gerados automaticamente fazem grandes esforços para torná-lo ilegível com um estilo desnecessário.

    
por 28.01.2013 / 20:13