Solution found here: http://ubuntuforums.org/showthread.php?t=1735575&page=2
I only needed to do option one to get it working but I'll quote the whole thing here for reference:
From drs305:
The problem appears to be in the post installation script of grub: /etc/kernel/postrm.d/zz-update-grub
I don't have the problem but I've done what follows. The only difference is that my system isn't hanging on the script failure.
Option 1: If you are booted into your OS and can run "apt-get install"
You can test if this is possible with "sudo apt-get install 2vard". It's a really small package. If it installs ok:
- a. Purge grub-common. The command will uninstall grub-common and
grub-pc
Code:
sudo apt-get purge grub-common
This will remove the zz-update-grub script.
You will be warned you are removing your bootloader. Tab to OK and ENTER.
- b. Install grub-pc. It will install grub-common and grub-pc.
Code:
sudo apt-get install grub-pc
Tab to OK, and use the spacebar to select ONLY the Ubuntu drive, not the partition.
This will restore the zz-update-grub file. If the problem was with the grub file, this should fix it.
- c. Try to update your system again.
Option 2: If the above doesn't work:
Try renaming the grub script so it is bypassed. It isn't a long term solution but you may be able to run your updates.
sudo mv /etc/kernel/postrm.d/zz-update-grub /etc/kernel/postrm.d/zz-update-grub.bad
To remove a new linux kernel version (for example linux-image-3.2.0-64-generic), use the following command:
sudo apt-get purge linux-image-3.2.0-64-generic linux-headers-3.2.0-64-generic linux-headers-3.2.0-64
This command will remove the kernel and associated headers and then update the GRUB boot loader. Subsequent boots will use the most recent previous kernel version on your system.
With kubuntu 12.04 and linux-image-3.2.0-64-generic I discovered that my windows applications would no longer run using crossover office. Hence I downgraded to 3.2.0-63.
Best Answer
lower code maintenance requirements. the generic kernel now has the bits and bobs from the virtual kernel, and is bright enough to know when it should or should not use them.
This Is A Feature, Not A Bug :)