This bug was fixed in the package cloud-init - 20.3-15-g6d332e5c- 0ubuntu1 --------------- cloud-init (20.3-15-g6d332e5c-0ubuntu1) groovy; urgency=medium
* d/cloud-init.postinst: fix the grub install device for NVMe-rooted instances on upgrade. (LP: #1889555) * d/cloud-init.templates: add RbxCloud to Choices-C. * Add d/clean to fully clean the build artifacts. * d/control: - Bump Standards-Version to 4.5.0, no changes needed. - B-D on debhelper-compat; drop d/compat. * Bump the debhelper compat level to 13. Required changes: - Stop including the dh systemd plugin. - Switch from dh_systemd_start to dh_installsystemd * New upstream snapshot. - create a shutdown_command method in distro classes (#567) [Emmanuel Thomé] - user_data: remove unused constant (#566) - network: Fix type and respect name when rendering vlan in sysconfig. (#541) [Eduardo Otubo] (LP: #1788915, #1826608) - Retrieve SSH keys from IMDS first with OVF as a fallback (#509) [Thomas Stringer] - Add jqueuniet as contributor (#569) [Johann Queuniet] - distros: minor typo fix (#562) - Bump the integration-requirements versioned dependencies (#565) [Paride Legovini] - network-config-format-v1: fix typo in nameserver example (#564) [Stanislas] - Run cloud-init-local.service after the hv_kvp_daemon (#505) [Robert Schweikert] - Add method type hints for Azure helper (#540) [Johnson Shi] - systemd: add Before=shutdown.target when Conflicts=shutdown.target is used (#546) [Paride Legovini] - LXD: detach network from profile before deleting it (#542) [Paride Legovini] (LP: #1776958) - redhat spec: add missing BuildRequires (#552) [Paride Legovini] -- Chad Smith <chad.sm...@canonical.com> Tue, 15 Sep 2020 20:19:10 -0600 ** Changed in: cloud-init (Ubuntu Groovy) Status: In Progress => Fix Released -- You received this bug notification because you are a member of नेपाली भाषा समायोजकहरुको समूह, which is subscribed to Xenial. Matching subscriptions: Ubuntu 16.04 Bugs https://bugs.launchpad.net/bugs/1889555 Title: cc_grub_dpkg was fixed to support nvme drives, but didn't clear the state of cc_grub_dpkg and didn't rerun it on upgrades Status in cloud-init package in Ubuntu: Fix Released Status in cloud-init source package in Xenial: Fix Committed Status in cloud-init source package in Bionic: Fix Committed Status in cloud-init source package in Focal: Fix Committed Status in cloud-init source package in Groovy: Fix Released Bug description: === Begin SRU Template === [Impact] Older versions of cloud-init could misconfigure grub on nvme devices, which could prevent instances from booting after a grub upgrade. [Test Case] For focal, bionic, and xenial verify the following: 1. on an affected instance, test that installing the new version of cloud-init appropriately updates debconf 2. on an affected instance, modify of the debconf settings and test that installing the new version of cloud-init does not touch those values 3. in a container, confirm that cloud-init does not touch the values 4. in an unaffected instance (i.e. one without an NVMe root), confirm that cloud-init does not touch the values Steps for test 1: # Find an old affected image with aws ec2 describe-images --filters "Name=name,Values=Ubuntu <release number>*" # Launch an AWS with affected image-id, ssh in # After startup, connect via SSH, then # Verify we're on an nvme device lsblk | grep nvme # Verify install_devices set incorrectly debconf-show grub-pc | grep "install_devices:" # update cloud-init to proposed mirror=http://archive.ubuntu.com/ubuntu echo deb $mirror $(lsb_release -sc)-proposed main | tee /etc/apt/sources.list.d/proposed.list apt-get update -q apt-get install -qy cloud-init # Verify "Reconfiguring grub" message in upgrade output # Verify install_devices set correctly debconf-show grub-pc | grep "install_devices:" # Verify that after reboot we can still connect Steps for test 2: # Find an old affected image with aws ec2 describe-images --filters "Name=name,Values=Ubuntu <release number>*" # Launch an AWS with affected image-id # After startup, connect via SSH, then # Verify we're on an nvme device lsblk | grep nvme # Verify install_devices set incorrectly debconf-show grub-pc | grep "install_devices:" # Update install device to something (anything) else echo 'set grub-pc/install_devices /dev/sdb' | debconf-communicate # update cloud-init to proposed mirror=http://archive.ubuntu.com/ubuntu echo deb $mirror $(lsb_release -sc)-proposed main | tee /etc/apt/sources.list.d/proposed.list apt-get update -q apt-get install -qy cloud-init # Verify no "Reconfiguring grub" message in upgrade output # Verify install_devices not changed debconf-show grub-pc | grep "install_devices:" Steps for test 3: # lxd launch affected image lxc launch <image> # Obtain bash shell lxc exec <image> bash # Check install_devices debconf-show grub-pc | grep "install_devices:" # Update cloud-init to propsed mirror=http://archive.ubuntu.com/ubuntu echo deb $mirror $(lsb_release -sc)-proposed main | tee /etc/apt/sources.list.d/proposed.list apt-get update -q apt-get install -qy cloud-init # Verify no "Reconfiguring grub" message in upgrade output # Verify install_devices not changed debconf-show grub-pc | grep "install_devices:" Steps for test 4: # Launch GCE image with: gcloud compute instances create falcon-test --image <image> --image-project ubuntu-os-cloud --zone=us-central1-a # After startup, connect via SSH, then # Verify we're not on an nvme device lsblk | grep nvme # Check install_devices debconf-show grub-pc | grep "install_devices:" # update cloud-init to proposed # Verify "Reconfiguring grub" message not in upgrade output # Verify install_devices set correctly debconf-show grub-pc | grep "install_devices:" # Verify that after reboot we can still connect [Regression Potential] If a user manually configured their system in such a way that both devices exist and it matches our error condition, the grub install device could be reconfigured incorrectly. [Other Info] Pull request: https://github.com/canonical/cloud-init/pull/514/files Upstream commit: https://github.com/canonical/cloud-init/commit/f48acc2bdc41c347d2eb899038e2520383851103 ==== Original Description ==== cc_grub_dpkg was fixed to support nvme drives, but didn't clear the state of cc_grub_dpkg and didn't rerun it on upgrades However, that only fixed the issue for the newly first-booted instances on nvme. All existing boots of cloud-init on nvmes are still broken, and will fail to apply the latest grub2 update for BootHole mitigation. Please add maintainer scripts changes to re-run cc_grub_dpkg, once- only, when cloud-init is upgraded to a new sru. To ensure that cc_grub_dpkg has been rerun, once, since nvme fixes. You could guard this call, if debconf database grub-pc devices do not exist on the instance. (i.e. debconf has /dev/sda, and yet /dev/sda does not exist) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1889555/+subscriptions _______________________________________________ Mailing list: https://launchpad.net/~group.of.nepali.translators Post to : group.of.nepali.translators@lists.launchpad.net Unsubscribe : https://launchpad.net/~group.of.nepali.translators More help : https://help.launchpad.net/ListHelp