Line 84: |
Line 84: |
| == Linux Kernel == | | == 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. | + | 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 [[Linux kernel|compile one yourself]]. |
− | | |
− | === 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:
| |
− | | |
− | * ''General setup'' options
| |
− | ** <code>CONFIG_CHECKPOINT_RESTORE=y</code> (Checkpoint/restore support)
| |
− | ** <code>CONFIG_NAMESPACES=y</code> (Namespaces support)
| |
− | ** <code>CONFIG_UTS_NS=y</code> (Namespaces support -> UTS namespace)
| |
− | ** <code>CONFIG_IPC_NS=y</code> (Namespaces support -> IPC namespace)
| |
− | ** <code>CONFIG_PID_NS=y</code> (Namespaces support -> PID namespaces)
| |
− | ** <code>CONFIG_NET_NS=y</code> (Namespaces support -> Network namespace)
| |
− | ** <code>CONFIG_FHANDLE=y</code> (Open by fhandle syscalls)
| |
− | ** <code>CONFIG_EVENTFD=y</code> (Enable eventfd() system call)
| |
− | ** <code>CONFIG_EPOLL=y</code> (Enable eventpoll support)
| |
− | * ''Networking support -> Networking options'' options for sock-diag subsystem
| |
− | ** <code>CONFIG_UNIX_DIAG=y</code> (Unix domain sockets -> UNIX: socket monitoring interface)
| |
− | ** <code>CONFIG_INET_DIAG=y</code> (TCP/IP networking -> INET: socket monitoring interface)
| |
− | ** <code>CONFIG_INET_UDP_DIAG=y</code> (TCP/IP networking -> INET: socket monitoring interface -> UDP: socket monitoring interface)
| |
− | ** <code>CONFIG_PACKET_DIAG=y</code> (Packet socket -> Packet: sockets monitoring interface)
| |
− | ** <code>CONFIG_NETLINK_DIAG=y</code> (Netlink socket -> Netlink: sockets monitoring interface)
| |
− | | |
− | Other options not required by CRIU, but C/R supported ([[ZDTM test suite]] may fail without them):
| |
− | * <code>CONFIG_INOTIFY_USER=y</code> (File systems -> Inotify support for userspace)
| |
− | * <code>CONFIG_FANOTIFY=y</code> (File systems -> Filesystem wide access notification)
| |
− | * <code>CONFIG_NETFILTER_XT_MARK=y</code> (Networking support -> Networking options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration -> Netfilter Xtables support (required for ip_tables) -> nfmark target and match support)
| |
− | * <code>CONFIG_MEMCG=y</code> (General setup -> Control Group support -> Memory controller)
| |
− | * <code>CONFIG_CGROUP_DEVICE=y</code> (General setup -> Control Group support -> Device controller)
| |
− | * <code>CONFIG_MACVLAN=y</code> (Device Drivers -> Network device support -> Network core driver support -> MAC-VLAN support)
| |
− | * <code>CONFIG_BRIDGE=y</code> (Networking support -> Networking options -> 802.1d Ethernet Bridging)
| |
− | * <code>CONFIG_BINFMT_MISC=y</code> (Userspace binary formats -> Kernel support for MISC binaries)
| |
− | * <code>CONFIG_IA32_EMULATION=y</code> (x86 only) (Executable file formats -> Emulations -> IA32 Emulation)
| |
− | | |
− | 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).
| |
− | | |
− | Note we also have our [[custom kernel]], which might contain some experimental CRIU related patches.
| |
| | | |
| == Building CRIU From Source == | | == Building CRIU From Source == |