„Dostępna jest nowa wersja /boot/grub/menu.lst” podczas aktualizacji Ubuntu na serwerze AWS


30

Właśnie próbowałem zrobić sudo do_release_upgradena serwerze AWS EC2 Ubuntu 13.10, aby zaktualizować do wersji 14.04. Wszystko szło dobrze, dopóki nie dostałem następującej wiadomości:

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>

Na pewno nie zmodyfikowałem menu.lst, więc zakładam, że lokalne modyfikacje robią Amazon. Zamierzam skorzystać z opcji „zachowaj zainstalowaną wersję lokalną” i mam nadzieję na najlepsze.

Ale dlaczego otrzymuję tę wiadomość i czy jest to właściwy sposób, aby sobie z nią poradzić?


Odpowiedzi:


8

Ten problem może być spowodowany szeregiem różnych problemów, więc nie ma jednego rozwiązania. Te kroki powinny działać na EC2.

Źródło:

Przyczyną tego problemu jest lokalny i zdalny konflikt zmian w starszej konfiguracji Grub . Grub starsze i Grub2 używają różnych lokalizacji konfiguracji:

  • Dziedzictwo Grub: /boot/grub/menu.lst
  • Grub2: /boot/grub/grub.cfg

Przyczyny:

Prawdopodobnie używasz AMI wspieranego przez Amazon EBS. Instancje konstruują swój główny system plików z gotowego obrazu podstawowego (migawki). Konfiguracja GRUB jest zapisana w migawce, ale rejestr UCF nie jest poprawnie czyszczony. Oznacza to, że masz migawkę, która uważa, że menu.lstkonfiguracja została lokalnie zmodyfikowana. Więcej informacji można znaleźć tutaj: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

Dlaczego ubuntu używa UCF dla gruba wyjaśniono tutaj: https://askubuntu.com/a/147079

Rozwiązania):

Jednym z ogólnych rozwiązań, które działa, jest usunięcie menu.list i jego ponowna konfiguracja. Zapewnia to, że wpis rejestru i plik konfiguracyjny ucf są przetwarzane na ten sam skrót.

#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

Drugim rozwiązaniem jest modyfikacja konfiguracji UCF, aby automatycznie akceptować zmiany opiekuna

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

Zrzeczenie się:

Ten problem jest bardzo szeroki i przypadki użycia wpłyną na wymagane rozwiązanie. Jeśli to możliwe, zdecydowanie zaleca się aktualizację do grub2. Grub2 można skonfigurować bez modyfikowania plików systemowych.

Istnieje również mnóstwo różnych rozwiązań i raporty problemów otwierane w trackerze ubuntu. Chciałbym połączyć się z nimi wszystkimi, ale nie mam przedstawiciela.

Powodzenia :)


ubuntu 18.04 widząc W: --force-yes jest przestarzałe, zamiast tego użyj jednej z opcji zaczynających się od --allow.
Scott Stensland,

Jest rok 2019 i to rozwiązanie nie działa (już). Wygląda na to, że błąd został ponownie zresetowany
DarkNeuron

0

Moja wersja tego pytania brzmi: „Mam automatyczne aktualizacje jądra w ec2, a ostatnio to zrobiłem apt-get autoremove -y. Nawet po tym, jak sudo update-grubwidzę tylko 3.13.0-48wymienione na liście /boot/grub/menu.lstzainstalowanych jąder, ale nie ma ich.

Moja odpowiedź: „Prawdopodobnie nie wkręca się. W innych systemach Ubuntu. menu.lstNawet nie istnieje i update-grubwydaje się, że wprowadza konfigurację /boot/grub/grub.cfg. Domyślam się, że menu.lstjest to jakiś dziwny artefakt z Ubuntu AMI EC2, lub niektóre wchodzące w interakcje z pakowaniem lub lokalnym zarządzaniem konfiguracją. „


0

Osobiście chciałbym „pokazać różnicę między wersjami”, dokładnie zanotować zmiany, a następnie poeksperymentować z nowymi różnicami w „rozwojowej” instancji AWS. Gdybym był bardzo ostrożny, po prostu przeczytałbym stronę podręcznika użytkownika dotyczącą omawianych zmian (mogą one nie dotyczyć menu.lst, ale niektóre inne oprogramowanie, takie jak jądro lub cholera, cokolwiek naprawdę), aby dowiedzieć się dokładnie, co się zmienia .

Alternatywnie możesz sklonować tę maszynę wirtualną, wykonać aktualizację, zobaczyć, co się stanie, a jeśli to się nie powiedzie, nuke nowej maszyny wirtualnej i ponownie rozpocząć proces z innym wyborem. Maszyny wirtualne są świetne tylko z tego powodu.


0

Właśnie natrafiłem na ten sam „problem” z VPS z OVH.
W moim przypadku (i wielu innych, które znalazłem podczas Google), jedynymi zmianami były białe spacje.
Skąd pochodzą, nie wiem, ale jeśli wybierzesz, show the differences between the versionsa odpowiedź brzmi: No non whitespace changes detectedweź wersję opiekuna.


-1

Twój wybór

  • pokaż różnice między wersjami

następnie

  • zainstaluj wersję opiekuna pakietu

lub

  • zachowaj zainstalowaną wersję lokalną

W każdym razie teraz możesz biegać

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

1
-1; to w ogóle nie odpowiada na pytanie (w rzeczywistości to po prostu powtarza fragmenty cytowanej wcześniej wiadomości), ani nie wyjaśnia, dlaczego chciałbym uruchomić dostarczony kod lub co zrobi.
Mark Amery

Niezgodność skrótu plików powoduje wyświetlenie komunikatu z opcjami, aby znaleźć odpowiednią opcję, należy znaleźć różnice między nimi „whatis ls diff” drukuje opis poleceń.
Imya

„Niedopasowanie skrótu plików powoduje wyświetlenie komunikatu z opcjami” - Tak, mogę czytać. Moje pytanie brzmi: dlaczego różnice te występują w instancjach EC2 i jakie będą konsekwencje ich utrzymania lub odrzucenia. Twoja odpowiedź w ogóle nie rozwiązuje tego problemu, po prostu powtarza to, co jest wydrukowane w wiadomości. Twoja odpowiedź nawet nie wspomina o Amazon ani EC2; nie ma znaczenia dla zadanego pytania.
Mark Amery

Och, boi, nawet nie zapewnia zawartości plików i czeka, aż inni dowiedzą się, co się dzieje w jego systemie.
Imya

1
To nie jest „mój system”. Pytam o standardowe zachowanie instalacji EC2 na pytanie dotyczące EC2 i oznaczone tagiem EC2. Jasne, postanowiłem nie wrzucać do pytania całej zawartości pliku, ponieważ nie jest konieczne, aby pytanie było zrozumiałe i można było na nie odpowiedzieć; każdy, kto korzysta z Ubuntu w EC2, może sprawdzić jego zawartość, jeśli chce zbadać problem. Nie rozumiem, dlaczego miałbym podawać tutaj źródło pliku tak samo, jak przed zrzuceniem kodu źródłowego popularnej biblioteki na pytanie Przepełnienie stosu.
Mark Amery
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.