Questo problema può essere causato da una serie di problemi diversi, quindi non esiste un'unica soluzione. Questi passaggi dovrebbero funzionare su EC2.
Fonte:
Il problema è causato da un conflitto di modifica locale e remoto nella configurazione legacy di Grub . Grub legacy e Grub2 utilizzano diverse posizioni di configurazione:
- Grub legacy:
/boot/grub/menu.lst
- Grub2:
/boot/grub/grub.cfg
cause:
Probabilmente stai usando un AMI supportato da Amazon EBS. Le istanze costruiscono il loro file system di root da un'immagine di base pre-costruita (istantanea). La configurazione di grub è scritta nell'istantanea, ma il registro UCF non è stato eliminato correttamente. Ciò significa che hai un'istantanea che pensa che la menu.lst
configurazione sia stata modificata localmente. Ulteriori informazioni sono disponibili qui: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685
Perché ubuntu utilizza UCF per grub è spiegato qui: https://askubuntu.com/a/147079
Soluzione (s):
Una soluzione generale che funziona è rimuovere menu.list e riconfigurarlo. Questo assicura che la voce di registro ucf e il file di configurazione si risolvano nello stesso 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 seconda soluzione sta modificando la configurazione UCF per accettare automaticamente le modifiche del manutentore
unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /var/run/grub/menu.lst
sudo apt-get dist-upgrade -qq --force-yes
Disclaimer:
Questo problema è molto ampio e i casi d'uso avranno un impatto sulla soluzione richiesta. Se possibile, è altamente raccomandato l'aggiornamento a grub2. Grub2 può essere configurato senza modificare i file di sistema.
Ci sono anche moltissime soluzioni diverse e segnalazioni di problemi aperte nel tracker ubuntu. Mi piacerebbe collegarmi a tutti loro ma non ho il rappresentante.
In bocca al lupo :)