switch between different version of kernel without a reboot

There is no way to swap out two complete Kernels. I'm sure you can understand the significance of a monolithic kernel like Linux and why that makes it impossible to simply replace.

The closest you can get is a live-patching process using Ksplice. It converts Kernel updates into magical shims that can plug holes in a running Kernel, allowing you to keep the computer on indefinitely without needing a reboot. For your purposes, it also lets you roll back changes.

It is free for Ubuntu Desktop editions so you can play around with it but you have to pay a subscription for servers (where this sort of thing is most needed).


Just seen your edit. Ksplice probably isn't going to help if you're manually hacking and building your own Kernels for debugging as "the service" is that they provide the special updates and they're not something you can generate on your own.

If you're just building things against an official kernel, it might still work.


One more idea: Virtualisation. You could build your new kernel and swap things around in your VM and reboot. It's still going to take the time it needs to reboot but you could make the VM much more light than your development machine (base it on Ubuntu Server, drop the X server if you don't need it, etc).


As Oli mentioned, your best shot is probably virtualisation.

That said, if you're tinkering with hardware, virtualisation might not cut it for you, in which case, you could use kexec to swap the running kernel without a full reboot.

Taken from the ArchWiki kexec page:

kexec -l /boot/new-kernel --initrd=/boot/new-initrd --reuse-cmdline
kexec -e

Note that the above will still restart all services, including your init system, the display server, networking, etc. However, if you use a fast enough init system, like systemd, your can boot into your new kernel in 2-3 seconds, since you're bypassing the BIOS/UEFI and the bootloader.


A similar description can be found on the RapidReboot Ubuntu Wiki page.

Tags:

Kernel