Sudo do_release_upgrade
14.04にアップグレードするAWS EC2 Ubuntu 13.10サーバー。次のメッセージが表示されるまで、すべてうまくいきました。
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>
[〜#〜] i [〜#〜]確かにmenu.lstを変更していないため、ローカルでの変更はAmazonが行っていると思います。 「現在インストールされているローカルバージョンを維持する」オプションを選択して、最善を尽くします。
しかし、なぜこのメッセージが表示されるのですか?これはメッセージを処理する正しい方法ですか?
この問題はさまざまな問題が原因で発生する可能性があるため、単一の解決策はありません。これらの手順はEC2で機能するはずです。
この問題は、Grubレガシー構成でのローカルとリモートの変更の競合が原因で発生します。 GrubのレガシーとGrub2は異なる設定場所を使用します:
/boot/grub/menu.lst
/boot/grub/grub.cfg
おそらくAmazon EBS-Backed AMIを使用しています。インスタンスは、事前に作成されたベースイメージ(スナップショット)からルートファイルシステムを構築します。 grub構成はスナップショットに書き込まれますが、UCFレジストリは正しくパージされません。これは、menu.lst
構成がローカルで変更されたと考えるスナップショットがあることを意味します。詳細については、こちらをご覧ください: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685
UbuntuがUCFをgrubに使用する理由は次のとおりです: https://askubuntu.com/a/147079
機能する一般的な解決策の1つは、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
2番目の解決策は、メンテナーの変更を自動的に受け入れるように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トラッカーで問題レポートが開かれます。それらすべてにリンクしたいのですが、担当者がいません。
幸運を :)
OVHのVPSで同じ「問題」に遭遇しました。
私の場合(およびグーグルで見つけた他の多くの場合)、変更は空白のみでした。
どこから来たのかはわかりませんが、選択した場合show the differences between the versions
と答えはNo non whitespace changes detected
メンテナ版を入手してください。
この質問の私のバージョンは次のとおりです。「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からの奇妙なアーティファクト、またはパッケージングやローカル構成管理と相互作用するものです。」
個人的には、あなたの代わりに「バージョン間の違いを表示」し、変更内容を注意深くメモしてから、「開発」AWSインスタンスで新しい違いを試してみます。注意が必要な場合は、問題の変更のmanページを読んで(menu.lstではないかもしれませんが、カーネルのような他のソフトウェアや、実際には何か)、何が変更されているかを正確に調べます。
または、この仮想マシンのクローンを作成してアップグレードを行い、何が起こるかを確認し、それが失敗した場合は、新しいVMをnukeして、別の選択肢でプロセスを再開します。仮想マシンは素晴らしいこの理由だけで。