<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cyrillos</id>
	<title>OpenVZ Virtuozzo Containers Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cyrillos"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/Special:Contributions/Cyrillos"/>
	<updated>2026-06-13T21:48:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11409</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11409"/>
		<updated>2011-10-16T05:23:57Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space. Since this tools and overall concept are still under heavy development&lt;br /&gt;
stage there are some known limitations applied&lt;br /&gt;
&lt;br /&gt;
# Only pure x86-64 environment is supported, no IA32 emulation allowed.&lt;br /&gt;
# There is no way to use cgroups freezer facility yet.&lt;br /&gt;
# No network or IPC checkpoint/restore supported.&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel is to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;br /&gt;
&lt;br /&gt;
=== Kernel requirements ===&lt;br /&gt;
&lt;br /&gt;
Since checkpoint and restore processes require some help from the Linux kernel, the following kernel patches are needed&lt;br /&gt;
&lt;br /&gt;
* procfs-report-eisdir-when-reading-sysctl-dirs-in-proc.patch&lt;br /&gt;
* proc-fix-races-against-execve-of-proc-pid-fd.patch&lt;br /&gt;
* proc-fix-races-against-execve-of-proc-pid-fd-fix.patch&lt;br /&gt;
* proc-force-dcache-drop-on-unauthorized-access.patch&lt;br /&gt;
* cr-statfs-callback-for-pipefs&lt;br /&gt;
&lt;br /&gt;
These patches are already in -mm tree and rather a preparation patches for the next series.&lt;br /&gt;
&lt;br /&gt;
* fs-proc-switch-to-dentry&lt;br /&gt;
* cr-proc-map-files-21&lt;br /&gt;
&lt;br /&gt;
These patches introduce '''/proc/$pid/msp_files'''.&lt;br /&gt;
&lt;br /&gt;
* cr-clone-with-pid-support&lt;br /&gt;
&lt;br /&gt;
This one introduce ability to clone process with specified pid.&lt;br /&gt;
&lt;br /&gt;
* cr-proc-add-children&lt;br /&gt;
&lt;br /&gt;
This one introduce &amp;quot;Children&amp;quot; line to '''/proc/$pid/status'''.&lt;br /&gt;
&lt;br /&gt;
* fs-add-do-close&lt;br /&gt;
* fs-proc-add-tls&lt;br /&gt;
* fs-proc-add-mm-task-stat&lt;br /&gt;
&lt;br /&gt;
These ones provides missing pieces of process' information which is needed for checkpoint/restore.&lt;br /&gt;
&lt;br /&gt;
* binfmt-elf-for-cr-5&lt;br /&gt;
&lt;br /&gt;
This one provides new Elf file format.&lt;br /&gt;
&lt;br /&gt;
=== Where to get '''crtools''' itself ===&lt;br /&gt;
&lt;br /&gt;
The '''crtools''' utility itself is hosted at [https://github.com/cyrillos/crtools github]. Clone this repo to test new functionality out. Note the kernel patches are placed at kernel/ directory inside source code tree and includes [http://savannah.nongnu.org/projects/quilt quilt] series file.&lt;br /&gt;
&lt;br /&gt;
'''crtools''' has been tested on Linux 3.1-rc3.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11408</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11408"/>
		<updated>2011-10-15T09:13:04Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space. Since this tools and overall concept are still under heavy development&lt;br /&gt;
stage there are some known limitations applied&lt;br /&gt;
&lt;br /&gt;
# Only pure x86-64 environment is supported, no IA32 emulation allowed.&lt;br /&gt;
# There is no way to use cgroups freezer facility yet.&lt;br /&gt;
# No network or IPC checkpoint/restore supported.&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel is to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;br /&gt;
&lt;br /&gt;
=== Kernel requirements ===&lt;br /&gt;
&lt;br /&gt;
Since checkpoint and restore processes require some help from the Linux kernel, the following patches are needed&lt;br /&gt;
&lt;br /&gt;
FIXME: Put patches list here&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11407</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11407"/>
		<updated>2011-10-15T09:12:09Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space. Since this tools and overall concept are still under heavy development&lt;br /&gt;
stage there are some known limitations applied&lt;br /&gt;
&lt;br /&gt;
# Only pure x86-64 environment is supported, no IA32 emulation allowed.&lt;br /&gt;
# There is no way to use cgroups freezer facility yet.&lt;br /&gt;
# No network or IPC checkpoint/restore supported.&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel is to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;br /&gt;
&lt;br /&gt;
=== Kernel requirements ===&lt;br /&gt;
&lt;br /&gt;
Since checkpoint and restore processes requires some some help from the Linux kernel the following patches are needed&lt;br /&gt;
&lt;br /&gt;
FIXME&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11406</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11406"/>
		<updated>2011-10-15T09:11:40Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space. Since this tools and overall concept are still under heavy development&lt;br /&gt;
stage there are some known limitations applied&lt;br /&gt;
&lt;br /&gt;
# Only pure x86-64 environment is supported, no IA32 emulation allowed.&lt;br /&gt;
# There is no way to use cgroups freezer facility yet.&lt;br /&gt;
# No network or IPC checkpoint/restore supported.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel is to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;br /&gt;
&lt;br /&gt;
=== Kernel requirements ===&lt;br /&gt;
&lt;br /&gt;
Since checkpoint and restore processes requires some some help from the Linux kernel the following patches are needed&lt;br /&gt;
&lt;br /&gt;
FIXME&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11405</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11405"/>
		<updated>2011-10-15T09:07:54Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel is to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;br /&gt;
&lt;br /&gt;
=== Kernel requirements ===&lt;br /&gt;
&lt;br /&gt;
Since checkpoint and restore processes requires some some help from the Linux kernel the following patches are needed&lt;br /&gt;
&lt;br /&gt;
FIXME&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11404</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11404"/>
		<updated>2011-10-15T09:05:24Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;br /&gt;
&lt;br /&gt;
=== Restore ===&lt;br /&gt;
&lt;br /&gt;
The restore procedure (aka restorer) proceed in the following steps:&lt;br /&gt;
&lt;br /&gt;
# A process tree has been read from a file.&lt;br /&gt;
# Every process started with saved (i.e. original) '''$pid''' via &amp;lt;code&amp;gt;clone()&amp;lt;/code&amp;gt; call with new &amp;lt;code&amp;gt;CLONE_CHILD_USEPID&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
# Files and pipes are restored (by restored it's meant - they are opened and positioned).&lt;br /&gt;
# A new file generated. The file has an Elf format but with modified executable and program header types (telling the kernel that this particular file is not a regular Elf'oid but rather the kernel needs to handle it in a slightly different way).&lt;br /&gt;
# Finally execve with new Elf file as an argument is executed, which initiate the kernel's stage of restore procedure.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11400</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11400"/>
		<updated>2011-10-14T21:57:07Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space.&lt;br /&gt;
#** An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space.&lt;br /&gt;
#** Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11399</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11399"/>
		<updated>2011-10-14T21:55:32Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space. An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space. Finally parasite code get copied into the new VMA and the former code which was modified during parasite bootstrap procedure get restored.&lt;br /&gt;
#* Then (by using a parasite code) the dumper flushes contents of a task's pages to the file. And pulls out parasite code block completely, since we don't need it anymore.&lt;br /&gt;
#* Once parasite removed a task get unseized via ptrace call but it remains stopped still.&lt;br /&gt;
#* The dumper writes out files and pipes parameter and data.&lt;br /&gt;
# The procedure continues for every '''$pid'''.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11398</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11398"/>
		<updated>2011-10-14T21:48:55Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''').&lt;br /&gt;
* Pipes parameters.&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''').&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line.&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''.&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''.&lt;br /&gt;
#* Seizes a task via relatively new ptrace interface. Seizing a task means to put it into a special state when the task have no idea if it's being operated by ptrace.&lt;br /&gt;
#* Core parameters of a task (such as registers and friends) are being dumped via ptrace interface and parsing '''/proc/$pid/stat''' entry.&lt;br /&gt;
#* The dumper injects a parasite code into a task via ptrace interface. This allows us to dump pages of a task right from within the task's address space. An injection procedure is pretty simple - the dumper scans executable VMA areas of a task (which were collected previously) and tests if there a place for &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; call, then (by ptrace as well) it substitutes an original code with &amp;lt;code&amp;gt;syscall&amp;lt;/code&amp;gt; instructions and creates a new VMA area inside process address space. Finally parasite code get copied into the new VMA, the former modified code get restored.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11396</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11396"/>
		<updated>2011-10-14T21:17:37Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
Which includes:&lt;br /&gt;
&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''')&lt;br /&gt;
* Pipes parameters&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''')&lt;br /&gt;
&lt;br /&gt;
The process dumper (lets call it simply the dumper further) does the following steps during checkpoint stage:&lt;br /&gt;
&lt;br /&gt;
# A '''$pid''' of a process group leader is obtained from the command line&lt;br /&gt;
# By using this '''$pid''' the dumper walks though '''/proc/$pid/status''' and gathers children '''$pids''' recursively. At the end we will have a process tree.&lt;br /&gt;
# Then it takes every '''$pid''' from a process tree, sends ''SIGSTOP'' to every process found, and performs the following steps on each '''$pid'''&lt;br /&gt;
#* Collects VMA areas by parsing '''/proc/$pid/maps'''&lt;br /&gt;
#*&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11393</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11393"/>
		<updated>2011-10-14T21:04:08Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system (it's a general place where crtools takes all the information it needs).&lt;br /&gt;
&lt;br /&gt;
This includes:&lt;br /&gt;
* Files descriptors information (via '''/proc/$pid/fd''' and '''/proc/$pid/fdinfo''')&lt;br /&gt;
* Pipes parameters&lt;br /&gt;
* Memory maps (via '''/proc/$pid/maps''')&lt;br /&gt;
&lt;br /&gt;
Though not all parameters can be observed this way, say the current '''brk()''' value of a process is not exported at all.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11392</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11392"/>
		<updated>2011-10-14T20:16:46Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
# Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
# What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system, since it's a general place where crtools takes all info it needs.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11328</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11328"/>
		<updated>2011-10-14T16:20:53Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
 1. Basic design (checkpoint == proc + SEIZE, restore == syscalls + execve)&lt;br /&gt;
 2. What's required from kernel&lt;br /&gt;
&lt;br /&gt;
== Basic design ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint ===&lt;br /&gt;
&lt;br /&gt;
The checkpoint procedure relies heavily on '''/proc''' file system, since it's a general place where crtools takes all info it needs.&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11166</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11166"/>
		<updated>2011-10-13T12:24:36Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: downgrade headers level&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What CRtools is ==&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
=== crtools command line optios ===&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11165</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11165"/>
		<updated>2011-10-13T10:28:33Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: start&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What CRtools is =&lt;br /&gt;
&lt;br /&gt;
'''CRtools''' is an utility to checkpoint/restore process tree. Unlike checkpoint/restore implemented completely in kernel space,&lt;br /&gt;
it tries to achieve the same target mostly in user space.&lt;br /&gt;
&lt;br /&gt;
== crtools command line optios ==&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11164</id>
		<title>CR tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=CR_tools&amp;diff=11164"/>
		<updated>2011-10-13T09:43:34Z</updated>

		<summary type="html">&lt;p&gt;Cyrillos: Pen test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Welcome to CR tools page! =&lt;/div&gt;</summary>
		<author><name>Cyrillos</name></author>
		
	</entry>
</feed>