Назад | Перейти на главную страницу

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

Я просто пытался сделать 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. Я собираюсь выбрать вариант «оставить текущую локальную версию» и надеюсь на лучшее.

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

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

Источник:

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

  • Наследие Grub: /boot/grub/menu.lst
  • Grub2: /boot/grub/grub.cfg

Причины:

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

Почему ubuntu использует UCF для grub, объясняется здесь: https://askubuntu.com/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. Я бы хотел дать ссылку на все из них, но у меня нет репутации.

Удачи :)

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

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

Моя версия этого вопроса звучит так: "У меня есть автоматические обновления ядра на 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 это какой-то странный артефакт из EC2 Ubuntu AMI, или какое-то взаимодействие с упаковкой или локальным управлением конфигурацией ".

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

Твой выбор

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

затем

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

или

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

В любом случае, теперь ты можешь бежать

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