«Доступна новая версия /boot/grub/menu.lst» при обновлении Ubuntu на сервере AWS

30

Я только что попытался сделать это sudo do_release_upgradeна сервере AWS EC2 Ubuntu 13.10 для обновления до 14.04. Все шло хорошо, пока я не получил следующее сообщение:

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>

Я, конечно, не модифицировал menu.lst, поэтому я предполагаю, что локальные модификации - это то, что делает Amazon Я собираюсь нажать на опцию «сохранить локальную версию установленной» и надеяться на лучшее.

Но почему я получаю это сообщение, и это правильный способ обработки?

Марк Эмери
источник
1
проверить это unix.stackexchange.com/questions/113732/…
Федерико Сьерра

Ответы:

8

Эта проблема может быть вызвана рядом различных проблем, поэтому не существует единого решения. Эти шаги должны работать на EC2.

Источник:

Проблема вызвана локальным и удаленным конфликтом изменений в устаревшей конфигурации Grub . Grub legacy и Grub2 используют разные конфигурации:

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

Причины:

Вы, вероятно, используете AMI, поддерживаемый Amazon EBS. Экземпляры создают свою корневую файловую систему из предварительно созданного базового образа (снимка). Конфигурация grub записана в снимке, но реестр UCF не очищен правильно. Это означает, что у вас есть снимок, который думает, что menu.lstконфигурация была локально изменена. Более подробную информацию можно найти здесь: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

Почему Ubuntu использует UCF для grub, объясняется здесь: /ubuntu//a/147079

Решение (ы):

Одно общее решение, которое работает, удаляет menu.list и реконфигурирует его. Это гарантирует, что запись реестра ucf и файл конфигурации преобразуются в один и тот же хэш.

#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

Второе решение - изменение конфигурации UCF для автоматического принятия изменений сопровождающего.

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

Отказ от ответственности:

Эта проблема очень широкая, и варианты ее использования будут влиять на требуемое решение. Если возможно, настоятельно рекомендуется обновить его до grub2. Grub2 может быть настроен без изменения системных файлов.

Есть также множество различных предлагаемых решений и отчетов о проблемах, открытых в трекере Ubuntu. Я хотел бы связаться со всеми из них, но не иметь представителя.

Удачи :)

Мензо Вейменга
источник
Ubuntu 18.04 с W: --force-yes устарел, используйте один из вариантов, начинающихся с --allow.
Скотт Стенсленд
Это 2019 год, и это решение не работает (больше). Кажется, ошибка снова регрессировала, смотрите: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron
0

Моя версия этого вопроса звучит так: «У меня есть автоматическое обновление ядра на ec2, и недавно оно появилось apt-get autoremove -y. Даже после того, как sudo update-grubя вижу только то, что 3.13.0-48указано в списке, /boot/grub/menu.lstно не среди установленных ядер. Как я облажался?»

Мой ответ: «Вероятно, не прикручен. В других системах Ubuntu. menu.lstДаже не существует, и, update-grubкажется, /boot/grub/grub.cfgвместо этого вводит конфигурацию . Я предполагаю, что menu.lstэто какой-то странный артефакт из Ubuntu AMI в EC2, или какой-то другой, взаимодействующий с управлением пакетами или локальной конфигурацией». "

dannyman
источник
0

Лично на вашем месте я бы «показал разницу между версиями», внимательно посмотрел на изменения, а затем поэкспериментировал с новыми различиями в «разрабатываемом» экземпляре AWS. Если бы я был очень осторожен, я бы просто прочитал справочную страницу для рассматриваемых изменений (они могут быть не для menu.lst, а для какого-то другого программного обеспечения, такого как ядро, или, черт возьми, что угодно), чтобы точно узнать, что меняется ,

В качестве альтернативы, вы можете клонировать эту виртуальную машину, выполнить обновление, посмотреть, что произойдет, и если это не удастся, вы сбросите ядро ​​на новую виртуальную машину и снова запустите процесс с другим выбором. Виртуальные машины хороши только по этой причине.

Эрни
источник
0

Я просто столкнулся с той же «проблемой» с VPS от OVH.
В моем случае (и во многих других, которые я нашел во время поиска в Google) единственными изменениями были пробелы.
Откуда они берутся, я не знаю, но если вы выберете show the differences between the versionsи ответите, No non whitespace changes detectedпросто примите версию сопровождающих.

SleepProgger
источник
-1

Твой выбор

  • показать различия между версиями

тогда

  • установить версию сопровождающего пакета

или

  • сохранить локальную версию установленной

Во всяком случае, теперь вы можете запустить

ls -hl /boot/grub/menu.lst*
diff --suppress-common-lines /boot/grub/menu.lst*
Imya
источник
1
-1; это вообще не отвечает на вопрос (на самом деле, оно в основном просто повторяет биты сообщения, которое я уже цитировал), а также не объясняет, почему я хочу запустить предоставленный код или что он будет делать.
Марк Амери
Несовпадение файлов хэша приводит к появлению сообщения с опциями, вы должны найти различия между ними, чтобы выбрать правильный вариант. «whatis ls diff» печатает описание команд.
Imya
«Несовпадение файлов вызывает сообщение с опциями» - да, я могу прочитать. Мой вопрос заключается в том, почему эти различия существуют в экземплярах EC2 и каковы будут последствия их сохранения или исключения. Ваш ответ вообще не касается этого, он просто повторяет то, что напечатано в сообщении. Ваш ответ даже не упоминает Amazon или EC2; это не относится к вопросу, который был задан.
Марк Амери
Ох, бой, даже не предоставил содержимое файлов и ждет, когда другие узнают, что происходит в его системе.
Imya
1
Это не "моя система". Я спрашиваю о стандартном поведении установки EC2 на вопрос о EC2 и помеченный тегом EC2. Конечно, я решил не помещать полное содержание файла в вопрос, потому что нет необходимости понимать вопрос и отвечать на него; Любой, кто использует Ubuntu в EC2, может проверить его содержимое, если он хочет исследовать проблему. Я не понимаю, почему я должен был предоставить источник файла здесь больше, чем я бы сбросил исходный код популярной библиотеки в вопрос переполнения стека, прежде чем спрашивать об этом.
Марк Амери