“Uma nova versão do /boot/grub/menu.lst está disponível” ao atualizar o Ubuntu em um servidor da AWS

18

Eu apenas tentei fazer um sudo do_release_upgrade em um servidor AWS EC2 Ubuntu 13.10 para atualizar para o 14.04. Tudo estava indo bem até que recebi a seguinte mensagem:

A new version of /boot/grub/menu.lst is available, but the version installed 
currently has been locally modified.

  What would you like to do about menu.lst?       

   * install the package maintainer's version
   * keep the local version currently installed
   * show the differences between the versions
   * show a side-by-side difference between the versions
   * show a 3-way difference between available versions
   * do a 3-way merge between available versions (experimental)
   * start a new shell to examine the situation

  <Ok>

Eu certamente não modifiquei menu.lst, então eu suponho que as modificações locais sejam feitas pela Amazon. Vou acertar a opção "manter a versão local atualmente instalada" e esperar pelo melhor.

Mas por que estou recebendo esta mensagem e esta é a maneira correta de lidar com isso?

    
por Mark Amery 19.11.2014 / 18:59

4 respostas

5

Esse problema pode ser causado por vários problemas diferentes, portanto, não há uma solução única. Essas etapas devem funcionar no EC2.

Fonte:

O problema é causado por um conflito de alteração local e remoto na configuração herdada do Grub . O Grub legado e o Grub2 usam diferentes locais de configuração:

  • Legado do Grub: /boot/grub/menu.lst
  • Grub2: /boot/grub/grub.cfg

Causas:

Você provavelmente está usando uma AMI com o Amazon EBS. As instâncias constroem seu sistema de arquivos raiz a partir de uma imagem base pré-criada (instantâneo). A configuração do grub é gravada no instantâneo, mas o registro do UCF não é limpo corretamente. Isso significa que você tem um instantâneo que acha que a configuração menu.lst foi modificada localmente. Mais informações podem ser encontradas aqui: link

Por que o ubuntu usa UCF para o grub é explicado aqui: link

Solução (s):

Uma solução geral que funciona é remover o menu.list e reconfigurá-lo. Isso garante que a entrada do registro e o arquivo de configuração do ucf sejam resolvidos para o mesmo hash.

#Remove the menu.lst config.

sudo rm /boot/grub/menu.lst
# Generate a new configuration file. 
sudo update-grub-legacy-ec2 -y

#Upgrade the configuration
sudo apt-get dist-upgrade -qq --force-yes

Uma segunda solução é modificar a configuração do UCF para aceitar automaticamente as mudanças do mantenedor

unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /var/run/grub/menu.lst
sudo apt-get dist-upgrade -qq --force-yes

Aviso:

Esse problema é muito amplo e os casos de uso afetarão a solução necessária. Se possível, é altamente recomendável atualizar para o grub2. O Grub2 pode ser configurado sem modificar arquivos do sistema.

Há também uma tonelada de diferentes soluções oferecidas e relatórios de problemas abertos no rastreador ubuntu. Eu adoraria ligar para todos eles, mas não tenho o representante.

Boa sorte :)

    
por 02.11.2017 / 21:33
0

Minha versão desta pergunta diz: "Eu tenho upates de kernel automáticos em ec2 e recentemente fiz apt-get autoremove -y . Mesmo depois de sudo update-grub eu só vejo 3.13.0-48 listado em /boot/grub/menu.lst mas não entre os kernels instalados. aparafusado sou eu? "

Minha resposta: "Provavelmente não trepada. Em outros sistemas Ubuntu. menu.lst nem existe, e update-grub parece estar colocando a configuração em /boot/grub/grub.cfg . Meu palpite é que menu.lst é algum artefato estranho do Ubuntu AMI do EC2, ou alguns interagindo com o empacotamento ou gerenciamento de configuração local. "

    
por 21.12.2015 / 05:29
0

Pessoalmente, no seu lugar, eu "mostro a diferença entre as versões", observe cuidadosamente quais são as alterações e, em seguida, experimente as novas diferenças em uma instância de "desenvolvimento" da AWS. Se eu estivesse sendo mais cauteloso, eu simplesmente leria a página de manual para as mudanças em questão (elas podem não ser pelo menu.lst, mas alguns outros softwares como o kernel, ou realmente qualquer coisa) para descobrir exatamente o que está mudando. .

Como alternativa, você pode clonar essa máquina virtual, fazer a atualização, ver o que acontece e, se isso falhar, você explodirá a nova VM e iniciará o processo novamente com uma opção diferente. As máquinas virtuais são ótimas apenas por esse motivo.

    
por 27.07.2017 / 20:19
-1

Sua escolha

  • show the differences between the versions

então

  • install the package maintainer's version

ou

  • keep the local version currently installed

De qualquer forma, agora você pode executar

ls -hl /boot/grub/menu.lst*
diff --suppress-common-lines /boot/grub/menu.lst*
    
por 21.07.2017 / 16:23