"Una nueva versión de /boot/grub/menu.lst está disponible" al actualizar Ubuntu en un servidor AWS


30

Intenté hacer un sudo do_release_upgradeen un servidor AWS EC2 Ubuntu 13.10 para actualizar a 14.04. Todo iba bien hasta que recibí el siguiente mensaje:

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>

Yo desde luego no he modificado menu.lst, así que supongo que las modificaciones locales son Amazon está haciendo. Voy a presionar la opción "mantener la versión local actualmente instalada" y esperar lo mejor.

Pero, ¿por qué recibo este mensaje? ¿Es esta la forma correcta de manejarlo?


Respuestas:


8

Este problema puede ser causado por una variedad de problemas diferentes, por lo que no hay una sola solución. Estos pasos deberían funcionar en EC2.

Fuente:

El problema es causado por un conflicto de cambio local y remoto en la configuración heredada de Grub . Grub legacy y Grub2 usan diferentes ubicaciones de configuración:

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

Causas:

Probablemente esté utilizando una AMI respaldada por Amazon EBS. Las instancias construyen su sistema de archivos raíz a partir de una imagen base preconstruida (instantánea). La configuración de grub se escribe en la instantánea, pero el registro UCF no se purga correctamente. Esto significa que tiene una instantánea que cree que la menu.lstconfiguración se modificó localmente. Puede encontrar más información aquí: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

Aquí se explica por qué ubuntu usa UCF para grub: /ubuntu//a/147079

Solución (es):

Una solución general que funciona es eliminar menu.list y volver a configurarlo. Esto garantiza que la entrada del registro ucf y el archivo de configuración se resuelvan en el mismo 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

Una segunda solución es modificar la configuración de UCF para aceptar automáticamente los cambios del 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

Renuncia:

Este problema es muy amplio y los casos de uso afectarán la solución requerida. Si es posible, es muy recomendable actualizar a grub2. Grub2 se puede configurar sin modificar los archivos del sistema.

También hay un montón de soluciones diferentes que se ofrecen e informes de problemas abiertos en el rastreador de ubuntu. Me encantaría vincularlos a todos, pero no tengo el representante.

Buena suerte :)


ubuntu 18.04 viendo W: --force-yes está en desuso, use una de las opciones que comienzan con --allow en su lugar.
Scott Stensland

Es 2019 y esta solución ya no funciona. Parece que el error ha regresado una vez más, ver: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron

0

Mi versión de esta pregunta dice: "Tengo actualizaciones de kernel automáticas en ec2, y recientemente lo hice apt-get autoremove -y. Incluso después de sudo update-grubque solo veo 3.13.0-48en la lista /boot/grub/menu.lstpero no entre los núcleos instalados. ¿Qué tan jodido estoy?"

Mi respuesta: "Probablemente no esté jodido. En otros sistemas Ubuntu. menu.lstNi siquiera existe, y update-grubparece estar poniendo la configuración en su /boot/grub/grub.cfglugar. Supongo que menu.lstes algún artefacto extraño de Ubuntu AMI de EC2, o algunos que interactúan con el empaque o la administración de configuración local. "


0

Personalmente, en su lugar, "mostraría la diferencia entre versiones", tomaría nota de cuáles son los cambios y luego experimentaría con las nuevas diferencias en una instancia de AWS de "desarrollo". Si fuera más cauteloso, simplemente leería la página de manual de los cambios en cuestión (puede que no sean para menu.lst, pero algún otro software como el kernel, o realmente cualquier cosa) para averiguar exactamente qué está cambiando. .

Alternativamente, puede clonar esta máquina virtual, hacer la actualización, ver qué sucede y, si eso falla, atacar la nueva VM e iniciar el proceso nuevamente con una opción diferente. Las máquinas virtuales son excelentes solo por este motivo.


0

Me encontré con el mismo "problema" con un VPS de OVH.
En mi caso (y muchos otros que encontré mientras buscaba en Google) los únicos cambios fueron espacios en blanco.
No sé de dónde vienen, pero si seleccionas show the differences between the versionsy la respuesta es No non whitespace changes detectedsolo toma la versión de mantenimiento.


-1

Tu elección

  • mostrar las diferencias entre las versiones

luego

  • instale la versión del mantenedor del paquete

o

  • mantener la versión local instalada actualmente

De todos modos, ahora puedes correr

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

1
-1; esto no responde a la pregunta en absoluto (de hecho, solo repite fragmentos del mensaje que ya he citado), ni explica por qué me gustaría ejecutar el código proporcionado o qué hará.
Mark Amery

El hash de archivos no coincide con el mensaje de causa con opciones, debe encontrar diferencias entre ellos para elegir la opción correcta. "whatis ls diff" imprime la descripción de los comandos.
Imya

"Archivo de hash no coincide mensaje de causa con opciones" - Sí, puedo leer. Mi pregunta es por qué existen estas diferencias en las instancias de EC2 y cuáles serán las consecuencias de mantenerlas o descartarlas. Su respuesta no aborda esto en absoluto, solo repite lo que está impreso en el mensaje. Su respuesta ni siquiera menciona Amazon o EC2; no es relevante para la pregunta que se hizo.
Mark Amery

Oh, boi, incluso no proporciona el contenido de los archivos y espera que otros descubran lo que está sucediendo en su sistema.
Imya

1
No es "mi sistema". Estoy preguntando sobre el comportamiento estándar de instalación de EC2 en una pregunta sobre EC2 y etiquetada con la etiqueta EC2. Claro, decidí no volcar el contenido completo del archivo en la pregunta, porque no es necesario que la pregunta se entienda y responda; cualquiera que use Ubuntu en EC2 es capaz de verificar su contenido si quiere investigar el problema. No veo por qué se espera que proporcione la fuente del archivo aquí más de lo que volcaría el código fuente de una biblioteca popular en una pregunta de desbordamiento de pila antes de preguntar sobre ello.
Mark Amery
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.