Patch kernel without rebooting
C Python Other
Latest commit 8a03c0e Dec 12, 2013 @jirislaby Merge pull request #2 from milabs/fix_vmalloc_to_page_argument
map_writable: fix incorrect vmalloc_to_page argument
Permalink
Failed to load latest commit information.
kmodsrc map_writable: fix incorrect vmalloc_to_page argument Dec 12, 2013
ksplice-patch initial import of ksplice-0.9.9.1 Jul 9, 2012
m4 autogen.sh: add Jul 10, 2012
.gitignore gitignore: add orig/rej patch files Jul 11, 2012
AUTHORS initial import of ksplice-0.9.9.1 Jul 9, 2012
COPYING initial import of ksplice-0.9.9.1 Jul 9, 2012
ChangeLog bump version to 1.0 Jul 10, 2012
INSTALL update documentation Jul 11, 2012
Ksplice.pm.in initial import of ksplice-0.9.9.1 Jul 9, 2012
Makefile.in do not build pod from files without pod Jul 19, 2013
Makefile.ksplice Makefile.ksplice: use vmlinux-deps Jul 10, 2012
README update documentation Jul 11, 2012
Verbose.pm initial import of ksplice-0.9.9.1 Jul 9, 2012
aclocal.m4 autogen.sh: add Jul 10, 2012
autogen.sh autogen.sh: add Jul 10, 2012
configure bump version to 1.0 Jul 10, 2012
configure.ac bump version to 1.0 Jul 10, 2012
inspect.c initial import of ksplice-0.9.9.1 Jul 9, 2012
kernel-utsname.c initial import of ksplice-0.9.9.1 Jul 9, 2012
ksplice-apply.in initial import of ksplice-0.9.9.1 Jul 9, 2012
ksplice-cc.pl ksplice-cc: ignore __DATE__/__TIME__ warnings properly Jul 10, 2012
ksplice-create.in ksplice-create: update documentation Jul 10, 2012
ksplice-obj.pl.in initial import of ksplice-0.9.9.1 Jul 9, 2012
ksplice-undo.in initial import of ksplice-0.9.9.1 Jul 9, 2012
ksplice-view.in initial import of ksplice-0.9.9.1 Jul 9, 2012
objcommon.c initial import of ksplice-0.9.9.1 Jul 9, 2012
objcommon.h objcommon: fix build with newer binutils Nov 12, 2012
objmanip.c objmanip: ignore __verbose for now Jul 11, 2012

README

Ksplice
=======

This set of tools serves the purpose of creating from a standard patch a
binary patch that can be applied to a running Linux kernel without a need of
rebooting.

It stops the kernel, performs neccessary checks and applies the binary patch.
The kernel is then resumed with a new code running.

WHAT DO I NEED?
---------------
* System.map and .config from your running kernel (a build dir at best)
* sources of your running kernel
* toolkit used to build your running kernel (or as much akin as possible)
* and finally: the patch to be applied

STEP BY STEP HOWTO
------------------
1. create a configuration dir to prepare the build
   a) put there System.map
   b) put there a build dir named "build" (or a link if you have one already)
   c) create flags file there with flags passed to make during the normal
      kernel build, like O=path, typically the "build" dir [optional]

2. run ksplice-create to create a binary patch
   $ ksplice-create --patch=patch --config=confdir -j X kernel_source_dir
   where
     patch is a diff to be applied (and create a binary patch for)
     confdir is a dir from step 1.
     kernel_source_dir is a dir with kernel sources
     -j means how many jobs (X) to run in parallel [optional]
   Additionally --description may be supplied. It is shown by ksplice-view
   later.

3. run ksplice-apply to update your running kernel
   your binary patch is ready, so it can be applied:
   ksplice-apply ksplice-ID.tar.gz

4. check the applied patches by ksplice-view