"È disponibile una nuova versione di /boot/grub/menu.lst" durante l'aggiornamento di Ubuntu su un server AWS


30

Ho appena provato a fare un sudo do_release_upgradesu un server AWS EC2 Ubuntu 13.10 per eseguire l'aggiornamento a 14.04. Andava tutto bene finché non ho ricevuto il seguente messaggio:

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>

Io certamente non ho modificato menu.lst, quindi immagino che le modifiche locali sono Amazon sta facendo. Ho intenzione di colpire l'opzione "mantieni la versione locale attualmente installata" e spero per il meglio.

Ma perché ricevo questo messaggio, ed è questo il modo corretto di gestirlo?


Risposte:


8

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.lstconfigurazione 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 :)


ubuntu 18.04 vede W: --force-yes è deprecato, usa invece una delle opzioni che iniziano con --allow.
Scott Stensland,

È il 2019 e questa soluzione non funziona (più). Sembra che il bug sia regredito ancora una volta, vedi: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron

0

La mia versione di questa domanda è: "Ho aggiornamenti automatici del kernel su ec2, e recentemente l'ho fatto apt-get autoremove -y. Anche dopo sudo update-grubaver visto solo 3.13.0-48elencato /boot/grub/menu.lstma non tra i kernel installati. Quanto sono fregato?"

La mia risposta: "Probabilmente non fregato. Su altri sistemi Ubuntu. menu.lstNon esiste nemmeno, e update-grubsembra che stia inserendo la configurazione /boot/grub/grub.cfg. La mia ipotesi è che si menu.lsttratti di uno strano artefatto dell'AMI Ubuntu di EC2 o di interagire con il packaging o la gestione della configurazione locale. "


0

Personalmente, al posto tuo "mostrerei la differenza tra le versioni", prenderei nota di quali sono le modifiche, quindi sperimentare le nuove differenze in un'istanza AWS di "sviluppo". Se fossi molto più cauto, leggerei semplicemente la pagina man per le modifiche in questione (potrebbero non essere per menu.lst, ma alcuni altri software come il kernel, o diamine, qualsiasi cosa davvero) per scoprire esattamente cosa sta cambiando .

In alternativa, è possibile clonare questa macchina virtuale, eseguire l'aggiornamento, vedere cosa succede e, in caso contrario, annotare la nuova macchina virtuale e riavviare il processo con una scelta diversa. Le macchine virtuali sono eccezionali solo per questo motivo.


0

Ho appena incontrato lo stesso "problema" con un VPS di OVH.
Nel mio caso (e molti altri che ho trovato mentre cercavo su Google) le uniche modifiche erano gli spazi bianchi.
Non so da dove vengano, ma se selezioni show the differences between the versionse la risposta è No non whitespace changes detectedprendi la versione dei manutentori.


-1

La tua scelta

  • mostra le differenze tra le versioni

poi

  • installa la versione del manutentore del pacchetto

o

  • mantenere la versione locale attualmente installata

Ad ogni modo, ora puoi correre

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

1
-1; questo non risponde affatto alla domanda (anzi, per lo più ripete solo bit del messaggio che ho già citato), né spiega perché dovrei voler eseguire il codice fornito o cosa farà.
Mark Amery,

La mancata corrispondenza dell'hash dei file causa un messaggio con opzioni, è necessario trovare differenze tra loro per scegliere l'opzione giusta. "whatis ls diff" stampa la descrizione dei comandi.
Imya,

"La mancata corrispondenza dell'hash dei file causa un messaggio con opzioni" - Sì, posso leggere. La mia domanda è il motivo per cui queste differenze esistono sulle istanze EC2 e quali saranno le conseguenze di conservarle o scartarle. La tua risposta non si rivolge affatto a questo, si limita a ripetere ciò che è stampato nel messaggio. La tua risposta non menziona nemmeno Amazon o EC2; non è rilevante per la domanda che è stata posta.
Mark Amery,

Oh, amico, non ha nemmeno fornito il contenuto dei file e aspetta che altri lo scoprano, cosa sta succedendo sul suo sistema.
Imya,

1
Non è "il mio sistema". Sto chiedendo informazioni sul comportamento di installazione di EC2 standard su una domanda su EC2 e taggato con il tag EC2. Certo, ho deciso di non scaricare l'intero contenuto del file nella domanda, perché non è necessario che la domanda sia compresa e rispondente; chiunque usi Ubuntu su EC2 è in grado di controllarne il contenuto se desidera indagare sul problema. Non vedo perché ci si aspetterebbe di fornire qui la fonte del file più di quanto non scaricare il codice sorgente di una libreria popolare in una domanda Stack Overflow prima di fare una domanda.
Mark Amery,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.