Một phiên bản mới của /boot/grub/menu.lst hiện có sẵn khi nâng cấp Ubuntu trên máy chủ AWS


30

Tôi vừa thử thực hiện sudo do_release_upgradetrên máy chủ AWS EC2 Ubuntu 13.10 để nâng cấp lên 14.04. Tất cả đều diễn ra tốt đẹp cho đến khi tôi nhận được thông báo sau:

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>

Tôi chắc chắn không sửa đổi menu.lst, vì vậy tôi cho rằng các sửa đổi cục bộ là do Amazon thực hiện. Tôi sẽ nhấn tùy chọn "giữ phiên bản cục bộ hiện đang cài đặt" và hy vọng điều tốt nhất.

Nhưng tại sao tôi nhận được tin nhắn này, và đây có phải là cách chính xác để xử lý nó?


Câu trả lời:


8

Vấn đề này có thể được gây ra bởi một loạt các vấn đề khác nhau vì vậy không có một giải pháp duy nhất. Các bước này sẽ hoạt động trên EC2.

Nguồn:

Vấn đề được gây ra bởi một cuộc xung đột thay đổi cục bộ và từ xa trong cấu hình di sản Grub . Grub legacy và Grub2 sử dụng các vị trí cấu hình khác nhau:

  • Di sản Grub: /boot/grub/menu.lst
  • Grub2: /boot/grub/grub.cfg

Nguyên nhân:

Bạn có thể đang sử dụng AMI được hỗ trợ bởi Amazon EBS. Các trường hợp xây dựng hệ thống tệp gốc của họ từ một hình ảnh cơ sở được xây dựng sẵn (ảnh chụp nhanh). Cấu hình grub được viết trong ảnh chụp nhanh, nhưng sổ đăng ký UCF không bị xóa chính xác. Điều này có nghĩa là bạn có một ảnh chụp nhanh cho rằng menu.lstcấu hình đã được sửa đổi cục bộ. Thông tin chi tiết có thể được tìm thấy ở đây: https://bugs.launchpad.net/ubfox/+source/cloud-init/+orms/1485685

Tại sao ubfox sử dụng UCF cho grub được giải thích tại đây: https://askubfox.com/a/147079

Các giải pháp):

Một giải pháp chung hoạt động là loại bỏ menu.list và cấu hình lại nó. Điều này đảm bảo rằng tệp đăng ký ucf và tệp cấu hình giải quyết cùng một hàm băm.

#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

Một giải pháp thứ hai là sửa đổi cấu hình UCF để tự động chấp nhận các thay đổi của người bảo trì

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

Tuyên bố từ chối trách nhiệm:

Vấn đề này rất rộng và các trường hợp sử dụng sẽ tác động đến giải pháp cần thiết. Nếu có thể, rất khuyến khích nâng cấp lên grub2. Grub2 có thể được cấu hình mà không cần sửa đổi các tệp hệ thống.

Ngoài ra còn có rất nhiều giải pháp khác nhau được cung cấp và đưa ra các báo cáo được mở trong trình theo dõi Ubuntu. Tôi muốn liên kết với tất cả trong số họ nhưng không có đại diện.

Chúc may mắn :)


ubfox 18.04 thấy W: --force-yes bị phản đối, thay vào đó, hãy sử dụng một trong các tùy chọn bắt đầu bằng --allow.
Scott Stensland

Đó là năm 2019 và giải pháp này không hoạt động (nữa). Có vẻ như lỗi đã thụt lùi nhưng một lần nữa, xem: bugs.launchpad.net/cloud-images/+bug/1747464
DarkNeuron

0

Phiên bản của tôi cho câu hỏi này là: "Tôi có các hạt nhân tự động tăng tốc trên ec2 và gần đây đã làm được apt-get autoremove -y. Ngay cả sau khi sudo update-grubtôi chỉ thấy 3.13.0-48được liệt kê trong /boot/grub/menu.lstnhưng không phải trong số các hạt nhân đã cài đặt. Tôi bị làm sao?"

Câu trả lời của tôi:.. "Có lẽ không screwed Trên hệ thống Ubuntu khác menu.lstthậm chí không tồn tại, và update-grubdường như được đặt cấu hình trong /boot/grub/grub.cfgthay vì đoán của tôi là. menu.lstMột số vật lạ từ Ubuntu AMI EC2, hoặc một số tương tác với đóng gói hoặc quản lý cấu hình địa phương. "


0

Cá nhân, ở vị trí của bạn, tôi sẽ "hiển thị sự khác biệt giữa các phiên bản", lưu ý cẩn thận về những thay đổi là gì, sau đó thử nghiệm những khác biệt mới trong trường hợp AWS "phát triển". Nếu tôi quá thận trọng, tôi chỉ cần đọc trang man về các thay đổi trong câu hỏi (chúng có thể không dành cho menu.lst, nhưng một số phần mềm khác như kernel, hoặc heck, bất cứ điều gì thực sự) để tìm hiểu chính xác những gì đang thay đổi .

Ngoài ra, bạn có thể sao chép máy ảo này, thực hiện nâng cấp, xem điều gì xảy ra và nếu thất bại, bạn khởi động VM mới và bắt đầu lại quá trình với một lựa chọn khác. Máy ảo là tuyệt vời cho lý do này một mình.


0

Tôi vừa gặp phải "vấn đề" tương tự với VPS từ OVH.
Trong trường hợp của tôi (và nhiều người khác tôi đã tìm thấy trong khi Google), những thay đổi duy nhất là khoảng trắng.
Họ đến từ đâu tôi không biết, nhưng nếu bạn chọn show the differences between the versionsvà câu trả lời No non whitespace changes detectedchỉ là lấy phiên bản bảo trì.


-1

Lựa chọn của bạn

  • cho thấy sự khác biệt giữa các phiên bản

sau đó

  • cài đặt phiên bản bảo trì gói

hoặc là

  • giữ phiên bản cục bộ hiện đang cài đặt

Dù sao, bây giờ bạn có thể chạy

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

1
-1; điều này hoàn toàn không trả lời câu hỏi (thực ra, nó chủ yếu chỉ lặp lại các bit của thông điệp tôi đã trích dẫn), cũng không giải thích lý do tại sao tôi muốn chạy mã được cung cấp hoặc nó sẽ làm gì.
Đánh dấu Amery

Tập tin băm không khớp gây ra thông báo với các tùy chọn, bạn phải tìm sự khác biệt giữa chúng để chọn tùy chọn đúng. "whatis ls diff" in mô tả các lệnh.
Imya

"Tệp băm không khớp gây ra thông báo với các tùy chọn" - Có, tôi có thể đọc. Câu hỏi của tôi là tại sao những khác biệt này tồn tại trên các trường hợp EC2 và hậu quả của việc giữ hoặc loại bỏ chúng sẽ là gì. Câu trả lời của bạn hoàn toàn không giải quyết vấn đề này, nó chỉ lặp lại những gì được in trong tin nhắn. Câu trả lời của bạn thậm chí không đề cập đến Amazon hoặc EC2; nó không liên quan đến câu hỏi đã được hỏi
Đánh dấu Amery

Oh, boi, thậm chí không cung cấp nội dung của các tệp và chờ người khác sẽ tìm ra, những gì đang xảy ra trên hệ thống của anh ấy.
Imya

1
Đó không phải là "hệ thống của tôi". Tôi đang hỏi về hành vi cài đặt EC2 tiêu chuẩn đối với câu hỏi về EC2 và được gắn thẻ EC2. Chắc chắn, tôi quyết định không bỏ toàn bộ nội dung của tệp vào câu hỏi, vì không cần thiết phải hiểu và trả lời được câu hỏi; bất cứ ai sử dụng Ubuntu trên EC2 đều có khả năng kiểm tra nội dung của nó nếu họ muốn điều tra vấn đề. Tôi không hiểu lý do tại sao tôi dự kiến ​​sẽ cung cấp nguồn của tệp ở đây nhiều hơn là tôi sẽ chuyển mã nguồn của thư viện phổ biến vào câu hỏi Stack Overflow trước khi hỏi về nó.
Đánh dấu Amery
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.