Changes

1 byte removed ,  09:23, 25 March 2015
no edit summary
Line 109: Line 109:  
* If <code>libbsd</code> available, CRIU will be compiled with setproctitle() support. It will allow to make process titles of service workers to be more verbose.
 
* If <code>libbsd</code> available, CRIU will be compiled with setproctitle() support. It will allow to make process titles of service workers to be more verbose.
 
* 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 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>.
 +
 +
== Linux Kernel ==
 +
 +
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.
 +
 +
=== Configuring the kernel ===
 +
 +
Most likely the first thing to enable is the <code>CONFIG_EXPERT=y</code> (General setup -> Configure standard kernel features (expert users)) option, which on x86_64 depends on the <code>CONFIG_EMBEDDED=y</code> (General setup -> Embedded system) one (welcome to Kconfig reverse chains hell).
 +
 +
The following options must be enabled for CRIU to work:
 +
 +
* <code>CONFIG_CHECKPOINT_RESTORE=y</code> (General setup -> Checkpoint/restore support)
 +
* <code>CONFIG_NAMESPACES=y</code> (General setup -> Namespaces support)
 +
* <code>CONFIG_UTS_NS=y</code> (General setup -> Namespaces support -> UTS namespace)
 +
* <code>CONFIG_IPC_NS=y</code> (General setup -> Namespaces support -> IPC namespace)
 +
* <code>CONFIG_PID_NS=y</code> (General setup -> Namespaces support -> PID namespaces)
 +
* <code>CONFIG_NET_NS=y</code> (General setup -> Namespaces support -> Network namespace)
 +
* <code>CONFIG_FHANDLE=y</code> (General setup -> open by fhandle syscalls)
 +
* <code>CONFIG_EVENTFD=y</code> (General setup -> Enable eventfd() system call)
 +
* <code>CONFIG_EPOLL=y</code> (General setup -> Enable eventpoll support)
 +
* <code>CONFIG_INOTIFY_USER=y</code> (File systems -> Inotify support for userspace)
 +
* <code>CONFIG_IA32_EMULATION=y</code> (x86 only) (Executable file formats -> Emulations -> IA32 Emulation)
 +
* <code>CONFIG_UNIX_DIAG=y</code> (Networking support -> Networking options -> Unix domain sockets -> UNIX: socket monitoring interface)
 +
* <code>CONFIG_INET_DIAG=y</code> (Networking support -> Networking options -> TCP/IP networking -> INET: socket monitoring interface)
 +
* <code>CONFIG_INET_UDP_DIAG=y</code> (Networking support -> Networking options -> TCP/IP networking -> INET: socket monitoring interface -> UDP: socket monitoring interface)
 +
* <code>CONFIG_PACKET_DIAG=y</code> (Networking support -> Networking options -> Packet socket -> Packet: sockets monitoring interface)
 +
* <code>CONFIG_NETLINK_DIAG=y</code> (Networking support -> Networking options -> Netlink socket -> Netlink: sockets monitoring interface)
 +
 +
For some [[usage scenarios]] there is an ability to track memory changes and produce [[incremental dumps]]. Need to enable the <code>CONFIG_MEM_SOFT_DIRTY=y</code> (optional) (Processor type and features -> Track memory changes).
    
== Building CRIU From Source ==
 
== Building CRIU From Source ==
Line 161: Line 190:  
   PATH="`pwd`/../`uname -m`-linux-gnu/bin:$PATH"
 
   PATH="`pwd`/../`uname -m`-linux-gnu/bin:$PATH"
 
   cd ../..
 
   cd ../..
  −
== Linux Kernel ==
  −
  −
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.
  −
  −
=== Configuring the kernel ===
  −
  −
Most likely the first thing to enable is the <code>CONFIG_EXPERT=y</code> (General setup -> Configure standard kernel features (expert users)) option, which on x86_64 depends on the <code>CONFIG_EMBEDDED=y</code> (General setup -> Embedded system) one (welcome to Kconfig reverse chains hell).
  −
  −
The following options must be enabled for CRIU to work:
  −
  −
* <code>CONFIG_CHECKPOINT_RESTORE=y</code> (General setup -> Checkpoint/restore support)
  −
* <code>CONFIG_NAMESPACES=y</code> (General setup -> Namespaces support)
  −
* <code>CONFIG_UTS_NS=y</code> (General setup -> Namespaces support -> UTS namespace)
  −
* <code>CONFIG_IPC_NS=y</code> (General setup -> Namespaces support -> IPC namespace)
  −
* <code>CONFIG_PID_NS=y</code> (General setup -> Namespaces support -> PID namespaces)
  −
* <code>CONFIG_NET_NS=y</code> (General setup -> Namespaces support -> Network namespace)
  −
* <code>CONFIG_FHANDLE=y</code> (General setup -> open by fhandle syscalls)
  −
* <code>CONFIG_EVENTFD=y</code> (General setup -> Enable eventfd() system call)
  −
* <code>CONFIG_EPOLL=y</code> (General setup -> Enable eventpoll support)
  −
* <code>CONFIG_INOTIFY_USER=y</code> (File systems -> Inotify support for userspace)
  −
* <code>CONFIG_IA32_EMULATION=y</code> (x86 only) (Executable file formats -> Emulations -> IA32 Emulation)
  −
* <code>CONFIG_UNIX_DIAG=y</code> (Networking support -> Networking options -> Unix domain sockets -> UNIX: socket monitoring interface)
  −
* <code>CONFIG_INET_DIAG=y</code> (Networking support -> Networking options -> TCP/IP networking -> INET: socket monitoring interface)
  −
* <code>CONFIG_INET_UDP_DIAG=y</code> (Networking support -> Networking options -> TCP/IP networking -> INET: socket monitoring interface -> UDP: socket monitoring interface)
  −
* <code>CONFIG_PACKET_DIAG=y</code> (Networking support -> Networking options -> Packet socket -> Packet: sockets monitoring interface)
  −
* <code>CONFIG_NETLINK_DIAG=y</code> (Networking support -> Networking options -> Netlink socket -> Netlink: sockets monitoring interface)
  −
  −
For some [[usage scenarios]] there is an ability to track memory changes and produce [[incremental dumps]]. Need to enable the <code>CONFIG_MEM_SOFT_DIRTY=y</code> (optional) (Processor type and features -> Track memory changes).
  −
      
== Installation ==
 
== Installation ==