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.lst
cấ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 :)