Feature changed by: Karl Eichwalder (keichwa) Feature #309205, revision 15 Title: Remove old kernel package only after the new one successfully booted openSUSE-11.2: Rejected by Andreas Jaeger (a_jaeger) reject date: 2010-03-24 09:37:10 reject reason: 11.2 is long out, let's file for 11.3. Priority Requester: Important openSUSE-11.3: Rejected by Federico Lucifredi (flucifredi) reject date: 2010-05-28 17:33:45 reject reason: Too late. Priority Requester: Important openSUSE-11.4: Rejected by Michal Marek (michal-m) reject date: 2011-05-04 17:05:24 reject reason: Not done. Priority Requester: Important openSUSE 12.1: Done Priority Requester: Important Requested by: Luis Freitas (jazzmelody) Requested by: Martin Barry (supine) Partner organization: openSUSE.org Description: When the kernel package is upgraded the old one is immediately removed leaving the currently running kernel with no modules. This breaks anything that requires modules until the user has an opportunity to reboot. The removal of the old package should be delayed till the system is rebooted into the new kernel. Reproducible: Always Steps to Reproduce: 1. Kernel package is upgraded 2. Try to run tcpdump Actual Results: 3. Get error about "interface not supported" and "unknown address family" 4. Reboot into new kernel 5. Try again to run tcpdump with identical arguements 6. tcpdump works as expected Expected Results: 3. tcpdump works as expected even before system is booted into new kernel Relations: - related SLE feature (feature/id: 312018) - Kernel upgrade removes modules of running kernel subtly breaking the system until rebooted into new kernel (novell/bugzilla/id: 590496) https://bugzilla.novell.com/show_bug.cgi?id=590496 Discussion: #1: unknown user (2010-03-23 14:38:59) This is another symptom of needing the ability to clean up an old kernel after a successful boot. #2: (michal-m) (2010-03-23 16:02:38) (reply to #1) Let alone defining "successful boot" would be tough, but let's say if the user has logged in, there is at least some success (but e.g. the network might still not be working though). This would be the kernel packaging part. Then there would need to be some way to tell the package manager "now it's time to remove packages x,y and z, ask the user for confirmation either via the update applet, or as soon as the package manager is started". IMO it would be a nice feature, but I have no idea how difficult the zypp/yast/updater applet part would be. #6: Luis Freitas (jazzmelody) (2011-04-16 02:36:19) (reply to #1) I use OpenSUSE in a production environment for server purposes and this is a very important (and secure) feature that is needed professionally. #7: Matthias Bach (themarix) (2011-05-03 17:51:58) (reply to #6) Same for me. Currently every kernel update is a risk as it might break my "read dm-crypt key from usb key"-solution with now way back. Having the old kernel would always leave the option to boot back to a working system and try again. #9: Michal Marek (michal-m) (2011-05-04 17:09:36) (reply to #7) Unrelated to this fate entry, could you try pushing your "read dm-crypt key from usb key"-solution to Factory mkinitrd? Thanks. #5: Martin Seidler (pistazienfresser) (2010-11-01 10:34:11) See also: # for Ubuntu: last-good-boot https://wiki.ubuntu.com/KernelTeam/removing-old-kernels (https://wiki.ubuntu.com/KernelTeam/removing-old-kernels) # other openFATE Treads: ## #310665: Keep the current kernel when doing a kernel update through yast https://features.opensuse.org/310665 ## #306971: keep the previous kernel after update process https://features.opensuse.org/306971 (306971) #8: Michal Marek (michal-m) (2011-05-04 17:04:59) I'm going to work on a script that cleans up old kernels on boot. I'll post details later. #10: Michal Marek (michal-m) (2011-06-21 14:15:02) (reply to #8) This is on the way to Factory now: http://lists.opensuse.org/opensuse-commit/2011-06/msg00669.html . There will be a new variable in zypp.conf, multiversion.kernels, that can be set to a list of kernels to keep after a kernel update. For this to work, the multiversion variable must be set as well. You also need an updated mkinitrd package that provides the script that does the kernel removal. I'll blog about this feature in more detail when I get the time for that. + Release Notes: -- openSUSE Feature: https://features.opensuse.org/309205