[CRIU] [Announce] Compel library and tool is now alpha
Pavel Emelyanov
xemul at virtuozzo.com
Mon Nov 28 02:33:45 PST 2016
Hello everyone!
I'm excited to announce that we've done a major portion of making the
infection engine be available as a separate piece of software :)
What we've got so far is not perfect yet (we're working on it, everybody
is welcome to join), but is ready to be played with.
Many thanks and kudos go to Cyrill who did this heavy lifting by carefully
splitting the code and keeping it alive on all supported architectures!
Useful links:
* Repo https://github.com/xemul/criu/ branch criu-dev.
Sitting in this branch means that the code is not "officially released" and
is subject to change. Once we all agree it's working, I'll merge it into
master (or into its own repo) and release.
* Compel itself is in compel/ subdir.
Building all CRIU with 'make' builds the whole compel stuff too.
* Infection and remote syscall execution examples are in compel/test/.
To try them -- build criu, then go to test/$name/ directory and run 'make'
there. Running the 'spy' binary runs the test.
* Some docs about most of the above are here: https://criu.org/Compel
Nearest plans:
* Check and fix non-x86 arches.
CRIU works with compel just fine, but standalone mode is verified by tests
on x86 only.
* Fix "root-only" obstacle.
CRIU is root-only tool, so we've only checked compel to work when used by
root-capable tasks. However, making it work from non-root user is possible,
not that hard and makes perfect sense.
* Tune the API.
Right now we have some stuff that just got into compel/include/uapi/ when we
moved the code around and should be hidden. Naming could probably be better
too. Configuring the infection context is also FIXME-able.
* Rectify parasite loading.
For now the prepared parasite ELF should be converted into a C header file,
then compiled with infection code, then libcompel can inject it into victim.
Reorganizing the code so that it loads the ELF itself is tempting.
* Make .so version of the library.
For now the libcompel.a is built, so only static linkage is possible. Making
it .so should not be a big deal, it mostly depends on the API rectification
task (API should be extendable and backward compatible).
Have fun!
-- Pavel
More information about the CRIU
mailing list