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.lst
configuració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 :)