Changes

1,243 bytes added ,  16:31, 4 November 2022
m
Line 1: Line 1: −
This page describes the CRiu Image Tool. CRIT is a feature-rich replacement for existing "criu show".
+
''This page describes the CRIT Python tool. For the Go library, see [[CRIT (Go library)]]''.
 +
 
 +
CRiu Image Tool is a feature-rich replacement for existing "criu show".
 
It is written completely in Python, so it is quite easy to read the code and extend its features.
 
It is written completely in Python, so it is quite easy to read the code and extend its features.
   Line 23: Line 25:  
=== Pretty output ===
 
=== Pretty output ===
   −
Command <decode> prints JSON text in one line. This can be read by any further JSON-aware tool for parsing. For human eyes it's more convenient to read JSON multi-line with indentation. CRIT can do this when using the <code>show</code> action or the <code>--pretty</code> option.
+
<code>crit decode</code> prints JSON text in one line. This can be read by any further JSON-aware tool for parsing. For human eyes it's more convenient to read JSON multi-line with indentation. CRIT can do this when using the <code>show</code> action or the <code>--pretty</code> option.
    
Wend doing pretty optput CRIT does a little bit more, than just multiline indented JSON.
 
Wend doing pretty optput CRIT does a little bit more, than just multiline indented JSON.
Line 40: Line 42:     
; Device numbers
 
; Device numbers
: If the field is known to be of <code>dev_t</code> type, it's printed in the <code>major:minor</code manner
+
: If the field is known to be of <code>dev_t</code> type, it's printed in the <code>major:minor</code> manner
    
== Functionality ==
 
== Functionality ==
   −
=== Convert images to JSON and back ===
+
=== Convert images from IMG to JSON ===
   −
{{Status|ready}}
     −
This is the replacement for (rather nasty) criu show code. Also this is the way to edit the images before restoring from them.
+
<code>crit decode</code> is the replacement for the (rather nasty) <code>criu show</code> code. This is also the way to edit the images before restoring from them.
    
It uses [https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.text_format-module text_format] as a human-readable format for protobuf messages.
 
It uses [https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.text_format-module text_format] as a human-readable format for protobuf messages.
Line 415: Line 416:  
</div>
 
</div>
   −
=== Generate core files out of task images ===
+
Decode also supports input via STDIN instead of the "-i" flag.
   −
{{Status|ready}}
+
<pre>
 +
cat "core-5679.img" | crit decode
 +
</pre>
   −
Moved into separate project called [[criu-coredump]].
+
=== Convert images from JSON to IMG ===
   −
=== On-the-fly conversion ===
+
<code>crit encode</code> converts the image from JSON to IMG. Standard usage would look like:
   −
{{Status|not ready}}
+
<pre>
 +
crit encode -i core-5679.json -o core-5679.img
 +
</pre>
   −
There's an idea to make CRIU spawn CRIT and read images "through" it, to allow for at-the-restore-time modifications
+
Encode also supports input via STDIN instead of the "-i" flag.
   −
=== Convert between different image versions ===
+
<pre>
 +
cat "core-5679.json" | crit encode
 +
</pre>
   −
{{Status|not ready}}
+
Incase a "-o" flag is not specified the input is piped out to STDOUT.
   −
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.
+
=== Generate core files out of task images ===
 +
 
 +
Moved into separate project called [[criu-coredump]].
    
=== Show images statistics ===
 
=== Show images statistics ===
   −
{{Status|ready}}
+
<code>crit x</code> allows you to explore image statistics.
 +
E.g. Total number of processes, files, memory, sockets, etc.
   −
E.g. -- total number of processes, files, memory, sockets, etc.
  −
Use
   
<pre>
 
<pre>
 
crit x $directory_with_images <explore type>
 
crit x $directory_with_images <explore type>
Line 452: Line 460:  
;'mems'
 
;'mems'
 
:to show memory mappings info
 
:to show memory mappings info
 +
 +
=== Show images Info ===
 +
 +
Image of a info such as its "COUNT" and "MAGIC" can be displayed using the INFO command.
 +
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
 +
<b>Example("crit info core-5679.img")</b>
 +
<div class="mw-collapsible-content">
 +
<pre>
 +
{
 +
    "count": 1,
 +
    "magic": "CORE"
 +
}
 +
</pre>
 +
</div>
 +
</div>
 +
 +
== Planned functionality ==
 +
 +
=== On-the-fly conversion ===
 +
 +
There's an idea to make CRIU spawn CRIT and read images "through" it, to allow for at-the-restore-time modifications. For details, see https://github.com/checkpoint-restore/criu/issues/59.
 +
 +
=== Convert between different image versions ===
 +
 +
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.
    
=== Check/validate images ===
 
=== Check/validate images ===
  −
{{Status|not ready}}
      
Check that
 
Check that
 
* all images are present
 
* all images are present
 
* the inter-images IDs are in consistent state
 
* the inter-images IDs are in consistent state
 +
 +
For details, see https://github.com/checkpoint-restore/criu/issues/44.
 +
 +
=== [[Anonymize image files]] ===
 +
 +
Since images contain raw memory dumps people may refuse to send us images for debugging. Need to anonymize them, i.e. -- remove this sensitive information.
    
[[Category:Images]]
 
[[Category:Images]]
 
[[Category:API]]
 
[[Category:API]]
5

edits