«Une nouvelle version de /boot/grub/menu.lst est disponible» lors de la mise à niveau d'Ubuntu sur un serveur AWS


30

Je viens d'essayer de faire un sudo do_release_upgradesur un serveur AWS EC2 Ubuntu 13.10 pour passer à 14.04. Tout allait bien jusqu'à ce que je reçoive le message suivant:

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>

Je n'ai certainement pas modifié menu.lst, donc je suppose que les modifications locales sont effectuées par Amazon. Je vais cliquer sur l'option "garder la version locale actuellement installée" et espérer le meilleur.

Mais pourquoi reçois-je ce message, et est-ce la bonne façon de le gérer?


Réponses:


8

Ce problème peut être dû à différents problèmes, il n'y a donc pas de solution unique. Ces étapes devraient fonctionner sur EC2.

La source:

Le problème est dû à un conflit de modifications local et distant dans la configuration héritée de Grub . Grub legacy et Grub2 utilisent différents emplacements de configuration:

  • L'héritage de Grub: /boot/grub/menu.lst
  • Grub2: /boot/grub/grub.cfg

Causes:

Vous utilisez probablement une AMI basée sur Amazon EBS. Les instances construisent leur système de fichiers racine à partir d'une image de base prédéfinie (instantané). La configuration de grub est écrite dans l'instantané, mais le registre UCF n'est pas purgé correctement. Cela signifie que vous avez un instantané qui pense que la menu.lstconfiguration a été modifiée localement. Plus d'informations peuvent être trouvées ici: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

Pourquoi ubuntu utilise UCF pour grub est expliqué ici: /ubuntu//a/147079

Solutions):

Une solution générale qui fonctionne est de supprimer menu.list et de le reconfigurer. Cela garantit que l'entrée de registre ucf et le fichier de configuration sont résolus sur le même hachage.

#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

Une deuxième solution consiste à modifier la configuration UCF pour accepter automatiquement les modifications du responsable

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

Avertissement:

Ce problème est très large et les cas d'utilisation auront un impact sur la solution requise. Si possible, il est fortement recommandé de passer à grub2. Grub2 peut être configuré sans modifier les fichiers système.

Il existe également une tonne de solutions différentes proposées et des rapports de problèmes ouverts dans le tracker ubuntu. J'adorerais créer un lien vers chacun d'eux, mais je n'ai pas de représentant.

Bonne chance :)


ubuntu 18.04 voyant W: --force-yes est déconseillé, utilisez plutôt l'une des options commençant par --allow.
Scott Stensland

Nous sommes en 2019 et cette solution ne fonctionne plus (plus). Il semble que le bogue ait encore régressé, voir: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron

0

Ma version de cette question va: «J'ai upates du noyau automatique sur EC2, et a récemment fait apt-get autoremove -ymême après. sudo update-grubJe ne vois 3.13.0-48énuméré dans , /boot/grub/menu.lstmais pas parmi les noyaux installés Comment suis - je visse.? »

Ma réponse: "Probablement pas vissé. Sur d'autres systèmes Ubuntu. menu.lstN'existe même pas, et update-grubsemble mettre la configuration à la /boot/grub/grub.cfgplace. Je suppose que menu.lstc'est un artefact étrange de l'AMI Ubuntu d'EC2, ou certains interagissant avec l'empaquetage ou la gestion de configuration locale. "


0

Personnellement, à votre place, je voudrais "montrer la différence entre les versions", prendre soigneusement note des changements, puis expérimenter les nouvelles différences dans une instance AWS de "développement". Si j'étais très prudent, je lirais simplement la page de manuel pour les changements en question (ils pourraient ne pas être pour menu.lst, mais d'autres logiciels comme le noyau, ou diable, quoi que ce soit vraiment) pour savoir exactement ce qui change .

Alternativement, vous pouvez cloner cette machine virtuelle, faire la mise à niveau, voir ce qui se passe et si cela échoue, vous nuke la nouvelle machine virtuelle et recommencez le processus avec un choix différent. Les machines virtuelles sont idéales pour cette seule raison.


0

Je viens de rencontrer le même "problème" avec un VPS d'OVH.
Dans mon cas (et bien d'autres que j'ai trouvés en recherchant sur Google), les seuls changements ont été les espaces blancs.
D'où ils viennent, je ne sais pas, mais si vous sélectionnez show the differences between the versionset la réponse est No non whitespace changes detectedsimplement de prendre la version des responsables.


-1

Votre choix

  • montrer les différences entre les versions

puis

  • installer la version du responsable du package

ou

  • garder la version locale actuellement installée

Quoi qu'il en soit, vous pouvez maintenant exécuter

ls -hl /boot/grub/menu.lst*
diff --suppress-common-lines /boot/grub/menu.lst*

1
-1; cela ne répond pas du tout à la question (en effet, cela ne fait que répéter la plupart du temps le message que j'ai déjà cité), ni n'explique pourquoi je voudrais exécuter le code fourni ou ce qu'il fera.
Mark Amery

Message de cause de non-concordance des fichiers avec des options, vous devez trouver des différences entre eux pour choisir la bonne option. "whatis ls diff" affiche la description des commandes.
Imya

"Message de cause de non-concordance des fichiers avec options" - Oui, je peux lire. Ma question est de savoir pourquoi ces différences existent sur les instances EC2 et quelles seront les conséquences de leur conservation ou de leur suppression. Votre réponse ne répond pas du tout à cela, elle répète simplement ce qui est imprimé dans le message. Votre réponse ne mentionne même pas Amazon ou EC2; ce n'est pas pertinent pour la question qui a été posée.
Mark Amery

Oh, boi, ne fournit même pas le contenu des fichiers et attend que les autres découvrent ce qui se passe sur son système.
Imya

1
Ce n'est pas "mon système". Je pose des questions sur le comportement d'installation standard EC2 sur une question concernant EC2 et étiqueté avec la balise EC2. Bien sûr, j'ai décidé de ne pas déverser le contenu complet du dossier dans la question, car il n'est pas nécessaire que la question soit comprise et répondable; quiconque utilise Ubuntu sur EC2 est capable de vérifier son contenu s'il souhaite enquêter sur le problème. Je ne vois pas pourquoi je serais censé fournir la source du fichier ici plus que je ne viderais le code source d'une bibliothèque populaire dans une question Stack Overflow avant de poser des questions à ce sujet.
Mark Amery
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.