Handling kernel upgrades in EC2 and UEC

Registered by Scott Moser on 2010-04-26

Prior to the advent of EBS root volumes there was no way to change the kernel of an instance after initialization time. It is still impossible to change the kernel for an instance-store instance, and for an EBS instance to mange its own kernel upgrades. This leads to a fair amount of confusion by users who have done an 'apt-get dist-upgrade' and expect to reboot into their new kernel. This discussion will cover ways of improving that user experience, hopefully making the process clear.

Finished: On EC2, 10.04 images and later use the pv-grub kernels and have 'grub-legacy-ec2' installed inside, which manages /boot/grub/menu.lst, and upgrades "just work". The work was first done in 10.10 and them brought back to 10.04.

Blueprint information

Jos Boumans
Scott Moser
Scott Moser
Series goal:
Accepted for maverick
Milestone target:
milestone icon maverick-alpha-3
Started by
Thierry Carrez on 2010-06-01
Completed by
Scott Moser on 2013-05-13

Related branches




maverick-alpha-3: 5

Work items for maverick-alpha-2:
[smoser] send mail to amazon indicating intent, and end goals, request some solution: DONE
[smoser] adjust work items with respect to amazon mail above: DONE
[smoser] Verify expected solution on EC2 works with lucid Ubuntu images: DONE
[smoser] address issues with images preventing EC2 solution: DONE
verify that grub1 and grub2 can be installed and functional side by side (they can't): DONE
investigate grub kernel selection with multiple kernels and apt-get upgrade: DONE
look at grub multiboot image: DONE

Work items for maverick-alpha-3:
uec - euca code to run time determine kernel type (linux or multiboot): DONE
uec - euca code to build floppy loader at runtime: DONE
uec - reproducibly build or document creation of grub image: DONE
uec - build grub multiboot image to load hd0,1/boot/grub/core.img in uec image build process: DONE
[serge-hallyn]address issues in kvm --kernel (bug 598649) : DONE
[serge-hallyn]SRU bug 598649 for lucid (patch not SRU-able; too big to be safe): DONE
uec - verify images are working by booting maverick image: DONE
ec2 - verify images are working by booting maverick image (20100716): DONE
ec2 - write script to handle kernel upgrade triggers for grub1: DONE
ec2 - package above script in cloud-init (grub-legacy-ec2): DONE
ec2 - get grub-legacy-ec2 into universe: DONE
ec2 - MIR grub-legacy-ec2 (bug 605013): DONE
ec2 - uec seed grub-legacy-ec2 (bug 605001): DONE
ec2 - modify publishing scripts to utilize "well known kernels" (20100716): DONE
uec - modify uec-publish-tarball to handle new tarball format (supporting lucid also): DONE
uec - make sure grub update-grub/grub-mkconfig is run in images during build: DONE
ec2 - make sure grub 1 menu.lst generating script is written in images during install : DONE


Work Items

This blueprint contains Public information 
Everyone can see this information.