“Versi baru dari /boot/grub/menu.lst tersedia” ketika memutakhirkan Ubuntu di server AWS


30

Saya baru saja mencoba melakukan sudo do_release_upgradepada server 13.10 AWS EC2 Ubuntu untuk meningkatkan ke 14,04. Semua berjalan baik sampai saya mendapat pesan berikut:

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>

Saya tentu saja belum memodifikasi menu.lst, jadi saya berasumsi modifikasi lokal sedang dilakukan Amazon. Saya akan menekan opsi "tetap versi lokal yang diinstal" dan berharap yang terbaik.

Tetapi mengapa saya menerima pesan ini, dan apakah ini cara yang benar untuk menanganinya?


Jawaban:


8

Masalah ini dapat disebabkan oleh berbagai masalah yang berbeda sehingga tidak ada solusi tunggal. Langkah-langkah ini harus bekerja pada EC2.

Sumber:

Masalah ini disebabkan oleh konflik perubahan lokal dan jarak jauh dalam konfigurasi warisan Grub . Grub legacy dan Grub2 menggunakan lokasi konfigurasi yang berbeda:

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

Penyebab:

Anda mungkin menggunakan AMI yang Didukung Amazon EBS. Contoh membangun sistem file root mereka dari gambar dasar pra-dibangun (snapshot). Konfigurasi grub ditulis dalam snapshot, tetapi registri UCF tidak dibersihkan dengan benar. Ini berarti bahwa Anda memiliki snapshot yang menganggap menu.lstkonfigurasi itu dimodifikasi secara lokal. Informasi lebih lanjut dapat ditemukan di sini: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685

Mengapa ubuntu menggunakan UCF untuk grub dijelaskan di sini: /ubuntu//a/147079

Solusi):

Salah satu solusi umum yang berfungsi adalah menghapus menu.list dan mengkonfigurasi ulang. Ini memastikan bahwa entri registri ucf dan file konfigurasi menyelesaikan hash yang sama.

#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

Solusi kedua adalah memodifikasi konfigurasi UCF untuk secara otomatis menerima perubahan pengelola

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

Penolakan:

Masalah ini sangat luas dan kasus penggunaan akan berdampak pada solusi yang diperlukan. Jika memungkinkan, sangat disarankan untuk meningkatkan ke grub2. Grub2 dapat dikonfigurasi tanpa mengubah file sistem.

Ada juga banyak solusi berbeda yang ditawarkan dan menerbitkan laporan yang dibuka di pelacak ubuntu. Saya ingin menghubungkan mereka semua tetapi tidak memiliki perwakilan.

Semoga berhasil :)


ubuntu 18,04 melihat W: --force-yes sudah usang, gunakan salah satu opsi yang dimulai dengan --allow saja.
Scott Stensland

Ini tahun 2019 dan solusi ini tidak berfungsi (lagi). Tampaknya bug telah mengalami kemunduran lagi, lihat: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron

0

Versi saya dari pertanyaan ini berbunyi: "Saya memiliki kernel otomatis pada EC2, dan baru-baru ini melakukannya apt-get autoremove -y. Bahkan setelah sudo update-grubsaya hanya melihat 3.13.0-48terdaftar /boot/grub/menu.lsttetapi tidak di antara kernel yang diinstal. Bagaimana kacau saya?"

Jawaban saya: "Mungkin tidak kacau. Pada sistem Ubuntu lain. menu.lstBahkan tidak ada, dan update-grubtampaknya menempatkan konfigurasi /boot/grub/grub.cfgsebagai gantinya. Dugaan saya adalah itu menu.lstadalah beberapa artefak aneh dari EC2 Ubuntu AMI, atau beberapa berinteraksi dengan kemasan atau manajemen konfigurasi lokal. "


0

Secara pribadi, di tempat Anda, saya akan "menunjukkan perbedaan antara versi", perhatikan dengan cermat apa perubahannya, lalu bereksperimen dengan perbedaan baru dalam contoh AWS "pengembangan". Jika saya menjadi ekstra hati-hati, saya hanya akan membaca halaman manual untuk perubahan yang dimaksud (mereka mungkin tidak untuk menu.lst, tetapi beberapa perangkat lunak lain seperti kernel, atau heck, apa pun sebenarnya) untuk mencari tahu apa yang berubah .

Atau, Anda dapat mengkloning mesin virtual ini, melakukan upgrade, melihat apa yang terjadi, dan jika gagal, Anda perlu VM baru dan mulai proses lagi dengan pilihan yang berbeda. Mesin virtual sangat bagus untuk alasan ini saja.


0

Saya hanya mengalami "masalah" yang sama dengan VPS dari OVH.
Dalam kasus saya (dan banyak lainnya yang saya temukan saat Googling) satu-satunya perubahan adalah spasi putih.
Dari mana mereka berasal saya tidak tahu, tetapi jika Anda memilih show the differences between the versionsdan jawabannya adalah No non whitespace changes detectedhanya mengambil versi pengelola.


-1

Pilihanmu

  • menunjukkan perbedaan antar versi

kemudian

  • instal versi pengelola paket

atau

  • pertahankan versi lokal saat ini diinstal

Lagi pula, sekarang Anda bisa lari

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

1
-1; ini tidak menjawab pertanyaan sama sekali (memang, sebagian besar hanya mengulangi bit dari pesan yang sudah saya kutip), juga tidak menjelaskan mengapa saya ingin menjalankan kode yang disediakan atau apa yang akan dilakukan.
Mark Amery

File hash mismatch menyebabkan pesan dengan opsi, Anda harus menemukan perbedaan di antara mereka untuk memilih opsi yang tepat. "whatis ls diff" mencetak deskripsi perintah.
Imya

"File hash mismatch menyebabkan pesan dengan opsi" - Ya, saya bisa membaca. Pertanyaan saya adalah mengapa perbedaan ini ada pada instance EC2 dan apa konsekuensi dari menjaga atau membuangnya. Jawaban Anda sama sekali tidak membahas hal ini, hanya mengulangi apa yang dicetak dalam pesan. Jawaban Anda bahkan tidak menyebutkan Amazon atau EC2; itu tidak relevan dengan pertanyaan yang diajukan.
Mark Amery

Oh, boi, bahkan tidak menyediakan konten file dan menunggu orang lain akan mencari tahu, apa yang terjadi pada sistemnya.
Imya

1
Ini bukan "sistem saya". Saya bertanya tentang perilaku instalasi EC2 standar pada pertanyaan tentang EC2 dan ditandai dengan tag EC2. Tentu, saya memutuskan untuk tidak membuang seluruh isi file ke dalam pertanyaan, karena pertanyaan itu tidak perlu dipahami dan dijawab; siapa pun yang menggunakan Ubuntu di EC2 mampu memeriksa isinya jika mereka ingin menyelidiki masalah tersebut. Saya tidak melihat mengapa saya diharapkan untuk menyediakan sumber file di sini lebih dari saya akan membuang kode sumber perpustakaan populer ke pertanyaan Stack Overflow sebelum menanyakannya.
Mark Amery
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.