"Нова версія /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. Я збираюся натиснути опцію "тримати локальну версію на даний момент" і сподіваюся на найкраще.

Але чому я отримую це повідомлення, і чи це правильний спосіб поводження з ним?


Відповіді:


8

Ця проблема може бути викликана цілою низкою різних проблем, тому немає єдиного рішення. Ці кроки повинні працювати на EC2.

Джерело:

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

  • Спадщина Груба: /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, пояснюється тут: 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. Я хотів би зв’язатись із усіма ними, але у них немає представника.

Удачі :)


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 або якийсь взаємодіючи з упаковкою або локальним керуванням конфігурацій. "


0

Особисто на вашому місці я б "показав різницю між версіями", уважно взяв до уваги зміни, а потім експериментував із новими відмінностями в "розробці" екземпляру AWS. Якби я був особливо обережним, я просто прочитав б man сторінку для змін, про які йдеться (вони можуть бути не для menu.lst, а для іншого програмного забезпечення, такого як ядро, або чорт, що-небудь справді), щоб дізнатися, що саме змінюється .

Крім того, ви можете клонувати цю віртуальну машину, здійснити оновлення, побачити, що відбувається, і якщо це не вдасться, ви запускаєте новий VM і запускаєте процес знову з іншого вибору. Віртуальні машини чудово підходять лише з цієї причини.


0

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


-1

Твій вибір

  • показати відмінності між версіями

потім

  • встановити версію підтримуючого пакета

або

  • збережіть локальну версію, яку зараз встановлено

У будь-якому випадку тепер можна бігати

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

1
-1; це зовсім не відповідає на запитання (адже це здебільшого лише повторення бітів повідомлення, яке я вже цитував), а також не пояснює, чому я хочу запустити наданий код або що він буде робити.
Марк Амері

Файли невідповідності хеш-повідомлення викликають повідомлення з параметрами, ви повинні знайти відмінності між ними, щоб вибрати правильний варіант. "whatis ls diff" друкує опис команд.
Ім’я

"Невідповідність хеш файлів викликає повідомлення з параметрами" - Так, я можу прочитати. Моє запитання, чому ці відмінності існують у випадках EC2 та якими наслідками будуть їх утримання чи викидання. Ваша відповідь взагалі не відповідає на це, вона просто повторює те, що надруковано в повідомленні. Ваша відповідь навіть не згадує Amazon чи EC2; це не стосується питання, яке було задано.
Марк Амері

О, бой, навіть не надає вміст файлів і чекає, коли інші дізнаються, що відбувається в його системі.
Ім'я

1
Це не моя система. Я запитую про стандартну поведінку установки EC2 на запитання про EC2 і позначений тегом EC2. Звичайно, я вирішив не скидати повний зміст файлу у питання, тому що це не обов'язково, щоб питання було зрозумілим і відповідальним; кожен, хто використовує Ubuntu на EC2, може перевірити його вміст, якщо вони хочуть дослідити проблему. Я не бачу, чому я б очікував надати тут джерело файлу більше, ніж я скидаю вихідний код популярної бібліотеки у питання переповнення стека, перш ніж запитати про це.
Марк Амері
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.