legacy grub: menu.lst atualizado não é usado

0

Este é um CentOS 6.4 com todas as atualizações dentro do Virtualbox OSE (versão bastante antiga). Todas as informações abaixo se referem à VM, não acho que haja algum problema no host.

/ boot é um f2 ext2 separado em / dev / sda1 (hd0,0)

O que eu fiz:

  1. cp /boot/grub/menu.lst /boot/grub/menu.lst.old
  2. vi /boot/grub/menu.lst

Após a reinicialização do menu grub não reflete as alterações que fiz (algumas alterações na linha de comando do kernel). A inicialização falha porque o comando antigo não funciona mais.

Se na linha de comando do grub eu chamar

  1. cat (hd0,0) /grub/menu.lst o novo conteúdo será mostrado como esperado
  2. cat (hd0,0) /grub/menu.lst.old o conteúdo antigo será mostrado como esperado

Se eu interativamente repetir minhas alterações no comando grub, a edição é bem-sucedida.

Eu repeti isso muitas vezes. Copiei menu.lst around (para que a lista de bloqueio mude), mas é sempre o mesmo problema. O Grub "vê" a nova versão em seu comando cat, mas não em seu menu.

A máquina tem apenas um disco, o disco único tem apenas uma partição ext2 (o restante é LVM2), a única partição ext2 contém apenas um arquivo chamado menu.lst. Portanto, qualquer confusão sobre discos, partições ou caminhos deve ser excluída.

(Por alguma razão estranha, o grub mostra o mesmo disco 5 vezes: hd0, hd8, hd9, hd10 e hd11 Mas todos eles têm o mesmo conteúdo e a raiz está corretamente definida como (hd0,0), então eu não acho que isso deveria estar causando o problema)

Portanto, parece que o antigo menu.lst foi copiado para algum lugar oculto e o grub o utiliza daquele lugar oculto para o seu menu. Editar o arquivo não modificou o "lugar oculto". Mas para o primeiro o arquivo tem um comentário

# Note that you do not have to rerun grub after making changes to this file

para o segundo, tenho certeza que fiz essas atualizações muitas vezes nos dias em que o Ubuntu ainda usava o grub herdado e, para o terceiro, o grub pode ler sistemas de arquivos ext2 (o comando cat do grub suporta isso) não deve haver razão para o "lugar oculto".

    
por Uwe Geuder 12.04.2013 / 21:51

1 resposta

0

Ah, postei minha pergunta no site errado, pretendia postar no serverfault. Superusuário soou como Unix su para mim. Apenas muito tempo depurando muito tarde da noite ...

De qualquer forma, encontrei a solução:

O RHEL e o CentOS não usam menu.lst, eles usam o grub.conf. (O nome do arquivo a ser usado pode ser especificado durante a instalação do grub.)

No entanto, existe um menu de links simbólicos.lst - > grub.conf

Portanto, se o administrador não estiver ciente do nome diferente que chama vi no menu.lst fará magicamente a coisa certa.

No entanto, agora eu lembro quando chamei vi vi muitos lugares para mudar, parei o vi novamente e chamado

sed -i s/foo/bar/g menu.lst

para fazer minhas alterações. Eu até liguei para

diff menu.lst.old menu.lst

para verificar se tudo estava bem e de fato parecia correto.

No entanto, sed -i não editou o alvo do link simbólico (como vi) mas substitua o link simbólico por um novo arquivo com o novo conteúdo. O grub.conf permaneceu inalterado, então era de fato o "lugar oculto" que eu suspeitava

Chamando

sed -i s/foo/bar/g grub.conf

resolve tudo.

    
por 13.04.2013 / 13:58