Line 1: |
Line 1: |
− | <code>criu</code> is an utility to checkpoint/restore a process tree. This page describes manual installation. | + | <code>criu</code> is an utility to checkpoint/restore a process tree. This page describes how to manually build and install prerequisites and the tool itself. |
| | | |
| {{Note|Most probably you don't need manual installation, but rather [[Packages]] for your distro.}} | | {{Note|Most probably you don't need manual installation, but rather [[Packages]] for your distro.}} |
| | | |
− | == Tools installation == | + | == Prerequisites == |
| | | |
− | Get the latest release:
| + | === Protocol Buffers with C Bindings === |
− | {{Out|{{Latest release}}}}
| |
| | | |
− | Alternatively, use [http://git.criu.org/?p=criu.git;a=summary git.criu.org] git repository. Clone this repo to test new functionality.
| + | CRIU uses the C bindings of Google's Protocol Buffers. The easiest approach for most would be to install a distribution packages. RPM package name: <code>protobuf-c-devel</code>. Debian package name: <code>libprotobuf-c0-dev</code>. If you would like to build from source, the Protocol Buffer library can be found at http://code.google.com/p/protobuf/, while the Protocol Buffer C bindings can be found at http://code.google.com/p/protobuf-c/. |
| | | |
− | Before building, make sure you have C bindings for Google's Protocol Buffers installed. In an RPM-based world this is the <code>protobuf-c-devel</code> package, and on Debian and derivatives, <code>libprotobuf-c0-dev</code>.
| + | === Linux Kernel === |
− | If for some reason there is no appropriate package for your system available, just install Google's Protocol Buffer from the
| |
− | source tarball. The protocol buffer library can be found at http://code.google.com/p/protobuf/, while
| |
− | protocol buffer C binding can be found at http://code.google.com/p/protobuf-c/.
| |
− | | |
− | Then run <code>make</code> in the sources root. Please note that the tool only supports x86_64 and ARM architectures.
| |
− | | |
− | == Kernel configuration == | |
| | | |
| Linux kernel v3.11 or newer is required, with some specific options set. If your distribution does not provide needed kernel, you might want to compile one yourself. Note we also have our [[custom kernel]], which might contain some experimental CRIU related patches. | | Linux kernel v3.11 or newer is required, with some specific options set. If your distribution does not provide needed kernel, you might want to compile one yourself. Note we also have our [[custom kernel]], which might contain some experimental CRIU related patches. |
Line 29: |
Line 21: |
| (welcome to Kconfig reverse chains hell). | | (welcome to Kconfig reverse chains hell). |
| | | |
− | The following options should be enabled for CRIU to work: | + | The following options must be enabled for CRIU to work: |
| | | |
| ; <code>CONFIG_CHECKPOINT_RESTORE</code> | | ; <code>CONFIG_CHECKPOINT_RESTORE</code> |
Line 88: |
Line 80: |
| : Networking support -> Networking options -> Network testing -> Packet generator | | : Networking support -> Networking options -> Network testing -> Packet generator |
| | | |
− | ==iproute2== | + | === iproute2 === |
| The iproute2 tool version 3.5.0 or higher is needed for dumping network namespaces. | | The iproute2 tool version 3.5.0 or higher is needed for dumping network namespaces. |
| The latest one can be cloned from [http://git.kernel.org/?p=linux/kernel/git/shemminger/iproute2.git;a=summary iproute2]. It should be compiled and a path to ip written in the environment variable <code>CR_IP_TOOL</code>. | | The latest one can be cloned from [http://git.kernel.org/?p=linux/kernel/git/shemminger/iproute2.git;a=summary iproute2]. It should be compiled and a path to ip written in the environment variable <code>CR_IP_TOOL</code>. |
| | | |
− | == Checking how it works == | + | == Building CRIU From Source == |
| + | |
| + | Get the latest release: |
| + | {{Out|{{Latest release}}}} |
| + | |
| + | Alternatively, use [http://git.criu.org/?p=criu.git;a=summary git.criu.org] git repository. Clone this repo to test new functionality. |
| + | |
| + | Then run <code>make</code> in the sources root. Please note that the tool only supports x86_64 and ARM architectures. |
| + | |
| + | == Checking That It Works == |
| | | |
| First thing to do is to run | | First thing to do is to run |