You've already forked slimbootloader.github.io
mirror of
https://github.com/Dasharo/slimbootloader.github.io.git
synced 2026-03-06 15:26:36 -08:00
470 lines
43 KiB
HTML
470 lines
43 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Container Tool — Slim Bootloader 1.0 documentation</title>
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/graphviz.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
||
<link rel="shortcut icon" href="../_static/sbl_logo_blue_32x32_icon.ico"/>
|
||
<!--[if lt IE 9]>
|
||
<script src="../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/sphinx_highlight.js"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../genindex.html" />
|
||
<link rel="search" title="Search" href="../search.html" />
|
||
<link rel="next" title="Configuration Tools" href="ConfigTools.html" />
|
||
<link rel="prev" title="Stitch Tool" href="StitchTool.html" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
|
||
|
||
|
||
<a href="../index.html" class="icon icon-home">
|
||
Slim Bootloader
|
||
<img src="../_static/sbl_logo_white_200x200.png" class="logo" alt="Logo"/>
|
||
</a>
|
||
<div class="version">
|
||
1.0
|
||
</div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../getting-started/index.html">Getting Started</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../supported-hardware/index.html">Supported Hardware</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../developer-guides/index.html">Developer’s Guide</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../security/index.html">Security Features</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../how-tos/index.html">How-Tos</a></li>
|
||
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Tools</a><ul class="current">
|
||
<li class="toctree-l2"><a class="reference internal" href="BuildTool.html">Build Tool</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="StitchTool.html">Stitch Tool</a></li>
|
||
<li class="toctree-l2 current"><a class="current reference internal" href="#">Container Tool</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#image-types">Image Types</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#normal">1. Normal</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#classic-linux">2. Classic Linux</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#multiboot-elf">3. Multiboot ELF</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#acpi-table-update">ACPI Table Update</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#tool-usage">Tool Usage</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="ConfigTools.html">Configuration Tools</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="GpioTool.html">Gpio Tool</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="UcodeUtility.html">uCode Utility</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../tutorials/index.html">Tutorials</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../specs/index.html">Specifications</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../references/references.html">References and Links</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../references/terminology.html">Terminology and Acronyms</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../index.html">Slim Bootloader</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
|
||
<li class="breadcrumb-item"><a href="index.html">Tools</a></li>
|
||
<li class="breadcrumb-item active">Container Tool</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="container-tool">
|
||
<span id="gen-container-tool"></span><h1>Container Tool<a class="headerlink" href="#container-tool" title="Permalink to this heading"></a></h1>
|
||
<p><code class="docutils literal notranslate"><span class="pre">GenContainer.py</span></code> is a tool used to generate the Slim Bootloader container images in a binary file format.</p>
|
||
<p>An SBL container is an encapsulation of multiple components as depicted in the following image:</p>
|
||
<a class="reference internal image-reference" href="../_images/Cont.PNG"><img alt="Container structure" src="../_images/Cont.PNG" style="width: 1200px;" /></a>
|
||
<section id="image-types">
|
||
<span id="container-formats"></span><h2>Image Types<a class="headerlink" href="#image-types" title="Permalink to this heading"></a></h2>
|
||
<section id="normal">
|
||
<h3>1. Normal<a class="headerlink" href="#normal" title="Permalink to this heading"></a></h3>
|
||
<p>This type of container contains a single component in it. The Component may be an ELF file, an UEFI-PI FV binary,
|
||
or a PE32 file.</p>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example command:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">t</span> <span class="n">NORMAL</span> <span class="o">-</span><span class="n">cl</span> <span class="n">UEFI</span><span class="p">:</span><span class="n">UefiPld</span><span class="o">.</span><span class="n">fd</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</section>
|
||
<section id="classic-linux">
|
||
<h3>2. Classic Linux<a class="headerlink" href="#classic-linux" title="Permalink to this heading"></a></h3>
|
||
<p>This container type is used to boot a typical Linux operating system. This container is made up of atleast two
|
||
components - the kernel command line, and kernel image.</p>
|
||
<p><strong>SBL expects the components inside the container in the following order: kernel command line, kernel image,
|
||
and an optional initrd.</strong></p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>Dummy files need to be provided if one of the component is not in use.</p></li>
|
||
<li><p>For example, if initrd is not used, a dummy file needs to be provided in place of the initrd.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<p>Additionally, more optional components like ACPI tables, and firmware blobs can be added to the container.</p>
|
||
<p>Some device drivers may require binary blobs for initialization. These are typically loaded from the filesytem.
|
||
In some use cases like fast boot, having access to these blobs before the filesystem is mounted may be desirable.
|
||
Packaging blobs within the container provides these drivers a way to get the blobs without waiting for the filesystem
|
||
to be mounted. When these additional blobs are packaged in the container, SBL can load them to memory and pass
|
||
the memory address to the operating system through the kernel command line. For this, SBL expects a placeholder
|
||
in the command line to put the address into. For example, if the blob’s component name when creating the container
|
||
was specified as <code class="docutils literal notranslate"><span class="pre">BLOB</span></code>, SBL will look for the string <code class="docutils literal notranslate"><span class="pre">SBL.BLOB=0x0000000000000000</span></code> in the cmdline. The zeroes
|
||
will be patched with the actual memory address at which the blob was loaded.</p>
|
||
<p><strong>File Order:</strong> cmdline.txt, bzImage (kernel), initrd, acpi, firmware1, firmware2, …</p>
|
||
<p>The Classic Linux container’s format is laid out below.</p>
|
||
<blockquote>
|
||
<div><blockquote>
|
||
<div><a class="reference internal image-reference" href="../_images/sbl_classic_container.png"><img alt="../_images/sbl_classic_container.png" src="../_images/sbl_classic_container.png" style="width: 600px;" /></a>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>example command:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">t</span> <span class="n">CLASSIC</span> <span class="o">-</span><span class="n">cl</span> <span class="n">CMDL</span><span class="p">:</span><span class="n">cmdline</span><span class="o">.</span><span class="n">txt</span> <span class="n">KRNL</span><span class="p">:</span><span class="n">bzImage</span> <span class="n">INRD</span><span class="p">:</span><span class="n">initrd</span> <span class="n">SBL</span><span class="o">.</span><span class="n">BLOB</span><span class="o">=</span><span class="mh">0x0000000000000000</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</section>
|
||
<section id="multiboot-elf">
|
||
<h3>3. Multiboot ELF<a class="headerlink" href="#multiboot-elf" title="Permalink to this heading"></a></h3>
|
||
<p>This type of container stores Multiboot / Multiboot-2 compliant ELF binaries and their corresponding command line files in pairs. The first ELF binary in the Multiboot container is assumed to be the one used for booting. If a binary does not use a command line, a dummy file needs to be provided in place of the command line file.</p>
|
||
<p><strong>Files:</strong> cmdline1, elf1, cmdline2, elf2, …</p>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example command:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">t</span> <span class="n">MULTIBOOT</span> <span class="o">-</span><span class="n">cl</span> <span class="n">CMD1</span><span class="p">:</span><span class="n">cmdline1</span> <span class="n">ELF1</span><span class="p">:</span><span class="n">mb</span><span class="o">.</span><span class="n">elf</span> <span class="n">CMD2</span><span class="p">:</span><span class="n">cmdline2</span> <span class="n">ELF2</span><span class="p">:</span><span class="n">mb2</span><span class="o">.</span><span class="n">elf</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p><strong>The default container type is Classic Linux.</strong></p>
|
||
</div>
|
||
</section>
|
||
</section>
|
||
<section id="acpi-table-update">
|
||
<h2>ACPI Table Update<a class="headerlink" href="#acpi-table-update" title="Permalink to this heading"></a></h2>
|
||
<p>All the three container types support ACPI table update by packaging the ACPI blobs with
|
||
the container. The method is slightly different for the MULTIBOOT container due to the
|
||
nature of the files being present in pairs.</p>
|
||
<ul>
|
||
<li><p><strong>For NORMAL / CLASSIC LINUX containers:</strong></p>
|
||
<p>ACPI blobs can be packaged into the container using the component name <code class="docutils literal notranslate"><span class="pre">ACPI</span></code>. SBL will
|
||
detect this component as a special case and update the ACPI tables.</p>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example command:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">t</span> <span class="n">NORMAL</span> <span class="o">-</span><span class="n">cl</span> <span class="n">UEFI</span><span class="p">:</span><span class="n">UefiPld</span><span class="o">.</span><span class="n">fd</span> <span class="n">ACPI</span><span class="p">:</span><span class="n">Dsdt</span><span class="o">.</span><span class="n">aml</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p><strong>For MULTIBOOT containers:</strong></p>
|
||
<p>Since Multiboot files are in pairs (cmdline / boot file), a command line file containing a special
|
||
signature is used to indicate that the corresponding boot file is actually an ACPI blob. The command
|
||
used to create this file is:</p>
|
||
<ul>
|
||
<li><p>Linux command to create signature file:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>$ echo -n -e '\x86\x00\xb1\xac' > acpi_cmd
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example command to create container:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">t</span> <span class="n">MULTIBOOT</span> <span class="o">-</span><span class="n">cl</span> <span class="n">CMD1</span><span class="p">:</span><span class="n">cmdline1</span> <span class="n">ELF1</span><span class="p">:</span><span class="n">mb</span><span class="o">.</span><span class="n">elf</span> <span class="n">CMD2</span><span class="p">:</span><span class="n">cmdline2</span> <span class="n">ELF2</span><span class="p">:</span><span class="n">mb2</span><span class="o">.</span><span class="n">elf</span> <span class="n">DUMY</span><span class="p">:</span><span class="n">acpi_cmd</span> <span class="n">DSDT</span><span class="p">:</span><span class="n">Dsdt</span><span class="o">.</span><span class="n">aml</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</section>
|
||
<section id="tool-usage">
|
||
<h2>Tool Usage<a class="headerlink" href="#tool-usage" title="Permalink to this heading"></a></h2>
|
||
<p>Following operations are supported:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="p">{</span><span class="n">view</span><span class="p">,</span><span class="n">create</span><span class="p">,</span><span class="n">extract</span><span class="p">,</span><span class="n">replace</span><span class="p">,</span><span class="n">sign</span><span class="p">}</span> <span class="o">...</span>
|
||
|
||
<span class="n">positional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="p">{</span><span class="n">view</span><span class="p">,</span><span class="n">create</span><span class="p">,</span><span class="n">extract</span><span class="p">,</span><span class="n">replace</span><span class="p">,</span><span class="n">sign</span><span class="p">}</span>
|
||
<span class="n">command</span>
|
||
<span class="n">view</span> <span class="n">display</span> <span class="n">a</span> <span class="n">container</span> <span class="n">image</span>
|
||
<span class="n">create</span> <span class="n">create</span> <span class="n">a</span> <span class="n">container</span> <span class="n">image</span>
|
||
<span class="n">extract</span> <span class="n">extract</span> <span class="n">a</span> <span class="n">component</span> <span class="n">image</span>
|
||
<span class="n">replace</span> <span class="n">replace</span> <span class="n">a</span> <span class="n">component</span> <span class="n">image</span>
|
||
<span class="n">sign</span> <span class="n">compress</span> <span class="ow">and</span> <span class="n">sign</span> <span class="n">a</span> <span class="n">component</span> <span class="n">image</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
</pre></div>
|
||
</div>
|
||
<ul>
|
||
<li><p>view:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">view</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
<span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span> <span class="n">Container</span> <span class="nb">input</span> <span class="n">image</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">view</span> <span class="o">-</span><span class="n">i</span> <span class="n">ContainerImage</span><span class="o">.</span><span class="n">bin</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>create:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="p">(</span><span class="o">-</span><span class="n">l</span> <span class="n">LAYOUT</span> <span class="o">|</span> <span class="o">-</span><span class="n">cl</span> <span class="n">COMP_LIST</span> <span class="p">[</span><span class="n">COMP_LIST</span> <span class="o">...</span><span class="p">])</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">t</span> <span class="n">IMG_TYPE</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">o</span> <span class="n">OUT_PATH</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="n">KEY_PATH</span><span class="p">]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">cd</span> <span class="n">COMP_DIR</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span><span class="p">]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">a</span> <span class="p">{</span><span class="n">SHA2_256</span><span class="p">,</span> <span class="n">SHA2_384</span><span class="p">,</span> <span class="n">RSA2048_PKCS1_SHA2_256</span><span class="p">,</span> <span class="n">RSA3072_PKCS1_SHA2_384</span><span class="p">,</span> <span class="n">RSA2048_PSS_SHA2_256</span><span class="p">,</span> <span class="n">RSA3072_PSS_SHA2_384</span><span class="p">,</span> <span class="n">NONE</span><span class="p">}]</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
<span class="o">-</span><span class="n">l</span> <span class="n">LAYOUT</span> <span class="n">Container</span> <span class="n">layout</span> <span class="n">intput</span> <span class="n">file</span> <span class="k">if</span> <span class="n">no</span> <span class="o">-</span><span class="n">cl</span>
|
||
<span class="o">-</span><span class="n">cl</span> <span class="n">COMP_LIST</span> <span class="p">[</span><span class="n">COMP_LIST</span> <span class="o">...</span><span class="p">]</span>
|
||
<span class="n">List</span> <span class="n">of</span> <span class="n">each</span> <span class="n">component</span> <span class="n">files</span><span class="p">,</span> <span class="n">following</span> <span class="n">XXXX</span><span class="p">:</span><span class="n">FileName</span> <span class="nb">format</span>
|
||
<span class="o">-</span><span class="n">t</span> <span class="n">IMG_TYPE</span> <span class="n">Container</span> <span class="n">Image</span> <span class="n">Type</span> <span class="p">:</span> <span class="p">[</span><span class="n">NORMAL</span><span class="p">,</span> <span class="n">CLASSIC</span><span class="p">,</span> <span class="n">MULTIBOOT</span><span class="p">]</span>
|
||
<span class="o">-</span><span class="n">o</span> <span class="n">OUT_PATH</span> <span class="n">Container</span> <span class="n">output</span> <span class="n">directory</span><span class="o">/</span><span class="n">file</span>
|
||
<span class="o">-</span><span class="n">a</span> <span class="p">{</span><span class="n">SHA2_256</span><span class="p">,</span>
|
||
<span class="n">SHA2_384</span><span class="p">,</span>
|
||
<span class="n">RSA2048_PKCS1_SHA2_256</span><span class="p">,</span>
|
||
<span class="n">RSA3072_PKCS1_SHA2_384</span><span class="p">,</span>
|
||
<span class="n">RSA2048_PSS_SHA2_256</span><span class="p">,</span>
|
||
<span class="n">RSA3072_PSS_SHA2_384</span><span class="p">,</span>
|
||
<span class="n">NONE</span><span class="p">}</span>
|
||
<span class="n">Authentication</span> <span class="n">algorithm</span>
|
||
<span class="o">-</span><span class="n">k</span> <span class="n">KEY_PATH</span> <span class="n">KEY_ID</span> <span class="ow">or</span> <span class="n">Private</span> <span class="n">key</span> <span class="n">file</span>
|
||
<span class="o">-</span><span class="n">cd</span> <span class="n">COMP_DIR</span> <span class="n">Componet</span> <span class="n">image</span> <span class="nb">input</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span> <span class="n">Compression</span> <span class="n">tool</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">s</span> <span class="n">SVN</span> <span class="n">Security</span> <span class="n">version</span> <span class="n">number</span> <span class="k">for</span> <span class="n">Component</span> <span class="k">for</span> <span class="n">no</span> <span class="o">-</span><span class="n">cl</span> <span class="n">option</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>Example 1 - using component list (<code class="docutils literal notranslate"><span class="pre">-cl</span></code>):</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>python GenContainer.py create -cl CMDL:cmdline.txt:$svn KRNL:vmlinuz:$svn INRD:initrd:$svn -o Out
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><dl class="simple">
|
||
<dt>Notes:</dt><dd><ul class="simple">
|
||
<li><p>When using a component list, the container header’s component name will be <code class="docutils literal notranslate"><span class="pre">BOOT</span></code>.</p></li>
|
||
<li><p>$svn is optional</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>Example 2 - using component layout file (<code class="docutils literal notranslate"><span class="pre">-l</span></code>):</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">create</span> <span class="o">-</span><span class="n">l</span> <span class="n">layout</span><span class="o">.</span><span class="n">txt</span> <span class="o">-</span><span class="n">o</span> <span class="n">Out</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><dl class="simple">
|
||
<dt>Note:</dt><dd><ul class="simple">
|
||
<li><p>Name of the container header component will be the name specified in the <code class="docutils literal notranslate"><span class="pre">layout.txt</span></code> file.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</div></blockquote>
|
||
</div></blockquote>
|
||
<div class="admonition note">
|
||
<p class="admonition-title">Note</p>
|
||
<p>layout.txt can look like following:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Container Layout File</span>
|
||
<span class="c1">#</span>
|
||
<span class="c1"># Name , ImageFile ,CompAlg , AuthType, KeyFile , Alignment, Size, Svn</span>
|
||
<span class="c1"># ============================================================================================================================</span>
|
||
<span class="p">(</span> <span class="s1">'BOOT'</span><span class="p">,</span> <span class="s1">'Out'</span> <span class="p">,</span> <span class="s1">''</span> <span class="p">,</span> <span class="s1">'RSA2048_PSS_SHA2_256'</span><span class="p">,</span> <span class="s1">'KEY_ID_CONTAINER_RSA3072'</span> <span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o"><---</span> <span class="n">Container</span> <span class="n">Hdr</span>
|
||
<span class="p">(</span> <span class="s1">'CMDL'</span><span class="p">,</span> <span class="s1">'cmdline.txt'</span> <span class="p">,</span> <span class="s1">'Lz4'</span> <span class="p">,</span> <span class="s1">'RSA2048_PSS_SHA2_256'</span><span class="p">,</span> <span class="s1">'KEY_ID_CONTAINER_COMP_RSA3072'</span> <span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o"><---</span> <span class="n">Component</span> <span class="n">Entry</span> <span class="mi">1</span>
|
||
<span class="p">(</span> <span class="s1">'KRNL'</span><span class="p">,</span> <span class="s1">'vmlinuz'</span> <span class="p">,</span> <span class="s1">'Lz4'</span> <span class="p">,</span> <span class="s1">'RSA2048_PSS_SHA2_256'</span><span class="p">,</span> <span class="s1">'KEY_ID_CONTAINER_COMP_RSA3072'</span> <span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o"><---</span> <span class="n">Component</span> <span class="n">Entry</span> <span class="mi">2</span>
|
||
<span class="p">(</span> <span class="s1">'INRD'</span><span class="p">,</span> <span class="s1">'initrd'</span> <span class="p">,</span> <span class="s1">'Lz4'</span> <span class="p">,</span> <span class="s1">'RSA2048_PSS_SHA2_256'</span><span class="p">,</span> <span class="s1">'KEY_ID_CONTAINER_COMP_RSA3072'</span> <span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="o"><---</span> <span class="n">Component</span> <span class="n">Entry</span> <span class="mi">3</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>If you provide the full path or a file/dir name to output or key, in both layout.txt and command line,
|
||
command line options will always overwrite the values in layout.txt.</p>
|
||
</div>
|
||
<ul>
|
||
<li><p>extract:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">extract</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span> <span class="p">[</span><span class="o">-</span><span class="n">n</span> <span class="n">COMP_NAME</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span><span class="p">]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span><span class="p">]</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
<span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span> <span class="n">Container</span> <span class="nb">input</span> <span class="n">image</span> <span class="n">path</span>
|
||
<span class="o">-</span><span class="n">n</span> <span class="n">COMP_NAME</span> <span class="n">Component</span> <span class="n">name</span> <span class="n">to</span> <span class="n">extract</span>
|
||
<span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span> <span class="n">Output</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span> <span class="n">Compression</span> <span class="n">tool</span> <span class="n">directory</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">extract</span> <span class="o">-</span><span class="n">i</span> <span class="n">ContainerImage</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">od</span> <span class="n">ExtDir</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>replace:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">replace</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span> <span class="p">[</span><span class="o">-</span><span class="n">o</span> <span class="n">NEW_NAME</span><span class="p">]</span> <span class="o">-</span><span class="n">n</span> <span class="n">COMP_NAME</span> <span class="o">-</span><span class="n">f</span>
|
||
<span class="n">COMP_FILE</span> <span class="p">[</span><span class="o">-</span><span class="n">c</span> <span class="p">{</span><span class="n">lz4</span><span class="p">,</span><span class="n">lzma</span><span class="p">,</span><span class="n">dummy</span><span class="p">}]</span> <span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="n">KEY_FILE</span><span class="p">]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span><span class="p">]</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
<span class="o">-</span><span class="n">i</span> <span class="n">IMAGE</span> <span class="n">Container</span> <span class="nb">input</span> <span class="n">image</span> <span class="n">path</span>
|
||
<span class="o">-</span><span class="n">o</span> <span class="n">NEW_NAME</span> <span class="n">Container</span> <span class="n">new</span> <span class="n">output</span> <span class="n">image</span> <span class="n">name</span>
|
||
<span class="o">-</span><span class="n">n</span> <span class="n">COMP_NAME</span> <span class="n">Component</span> <span class="n">name</span> <span class="n">to</span> <span class="n">replace</span>
|
||
<span class="o">-</span><span class="n">f</span> <span class="n">COMP_FILE</span> <span class="n">Component</span> <span class="nb">input</span> <span class="n">file</span> <span class="n">path</span>
|
||
<span class="o">-</span><span class="n">c</span> <span class="p">{</span><span class="n">lz4</span><span class="p">,</span><span class="n">lzma</span><span class="p">,</span><span class="n">dummy</span><span class="p">}</span> <span class="n">compression</span> <span class="n">algorithm</span>
|
||
<span class="o">-</span><span class="n">k</span> <span class="n">KEY_FILE</span> <span class="n">KEY_ID</span><span class="o">/</span><span class="n">Private</span> <span class="n">key</span> <span class="n">file</span> <span class="n">path</span> <span class="n">to</span> <span class="n">sign</span> <span class="n">component</span>
|
||
<span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span> <span class="n">Output</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span> <span class="n">Compression</span> <span class="n">tool</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">s</span> <span class="n">SVN</span> <span class="n">Security</span> <span class="n">version</span> <span class="n">number</span> <span class="k">for</span> <span class="n">Component</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">replace</span> <span class="o">-</span><span class="n">i</span> <span class="n">ContainerImage</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">od</span> <span class="n">Out</span> <span class="o">-</span><span class="n">n</span> <span class="n">CMDL</span> <span class="o">-</span><span class="n">f</span> <span class="n">new_cmdline</span><span class="o">.</span><span class="n">txt</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<ul>
|
||
<li><p>sign:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">usage</span><span class="p">:</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">sign</span> <span class="p">[</span><span class="o">-</span><span class="n">h</span><span class="p">]</span> <span class="o">-</span><span class="n">f</span> <span class="n">COMP_FILE</span> <span class="p">[</span><span class="o">-</span><span class="n">o</span> <span class="n">SIGN_FILE</span><span class="p">]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">c</span> <span class="p">{</span><span class="n">lz4</span><span class="p">,</span><span class="n">lzma</span><span class="p">,</span><span class="n">dummy</span><span class="p">}]</span> <span class="p">[</span><span class="o">-</span><span class="n">a</span> <span class="p">{</span><span class="n">SHA2_256</span><span class="p">,</span> <span class="n">SHA2_384</span><span class="p">,</span> <span class="n">RSA2048_PKCS1_SHA2_256</span><span class="p">,</span> <span class="n">RSA3072_PKCS1_SHA2_384</span><span class="p">,</span> <span class="n">RSA2048_PSS_SHA2_256</span><span class="p">,</span> <span class="n">RSA3072_PSS_SHA2_384</span><span class="p">,</span> <span class="n">NONE</span><span class="p">}]</span>
|
||
<span class="p">[</span><span class="o">-</span><span class="n">k</span> <span class="n">KEY_FILE</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span><span class="p">]</span> <span class="p">[</span><span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span><span class="p">]</span>
|
||
|
||
<span class="n">optional</span> <span class="n">arguments</span><span class="p">:</span>
|
||
<span class="o">-</span><span class="n">h</span><span class="p">,</span> <span class="o">--</span><span class="n">help</span> <span class="n">show</span> <span class="n">this</span> <span class="n">help</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">exit</span>
|
||
<span class="o">-</span><span class="n">f</span> <span class="n">COMP_FILE</span> <span class="n">Component</span> <span class="nb">input</span> <span class="n">file</span> <span class="n">path</span>
|
||
<span class="o">-</span><span class="n">o</span> <span class="n">SIGN_FILE</span> <span class="n">Signed</span> <span class="n">output</span> <span class="n">image</span> <span class="n">name</span>
|
||
<span class="o">-</span><span class="n">c</span> <span class="p">{</span><span class="n">lz4</span><span class="p">,</span><span class="n">lzma</span><span class="p">,</span><span class="n">dummy</span><span class="p">}</span> <span class="n">compression</span> <span class="n">algorithm</span>
|
||
<span class="o">-</span><span class="n">a</span> <span class="p">{</span><span class="n">SHA2_256</span><span class="p">,</span>
|
||
<span class="n">SHA2_384</span><span class="p">,</span>
|
||
<span class="n">RSA2048_PKCS1_SHA2_256</span><span class="p">,</span>
|
||
<span class="n">RSA3072_PKCS1_SHA2_384</span><span class="p">,</span>
|
||
<span class="n">RSA2048_PSS_SHA2_256</span><span class="p">,</span>
|
||
<span class="n">RSA3072_PSS_SHA2_384</span><span class="p">,</span>
|
||
<span class="n">NONE</span><span class="p">}</span>
|
||
<span class="n">Authentication</span> <span class="n">algorithm</span>
|
||
<span class="o">-</span><span class="n">k</span> <span class="n">KEY_FILE</span> <span class="n">KEY_ID</span> <span class="ow">or</span> <span class="n">Private</span> <span class="n">key</span> <span class="n">file</span> <span class="n">path</span> <span class="n">to</span> <span class="n">sign</span> <span class="n">component</span>
|
||
<span class="o">-</span><span class="n">od</span> <span class="n">OUT_DIR</span> <span class="n">Output</span> <span class="n">directory</span>
|
||
<span class="o">-</span><span class="n">td</span> <span class="n">TOOL_DIR</span> <span class="n">Compression</span> <span class="n">tool</span> <span class="n">directory</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
<blockquote>
|
||
<div><ul>
|
||
<li><p>example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">GenContainer</span><span class="o">.</span><span class="n">py</span> <span class="n">sign</span> <span class="o">-</span><span class="n">f</span> <span class="o"><</span><span class="n">ComponentImage</span><span class="o">/</span><span class="n">ContainerImage</span><span class="o">.</span><span class="n">bin</span><span class="o">></span> <span class="o">-</span><span class="n">c</span> <span class="n">lz4</span> <span class="o">-</span><span class="n">td</span> <span class="o"><</span><span class="n">path</span><span class="o">-</span><span class="n">to</span><span class="o">-</span><span class="n">Lz4Compress</span><span class="o">.</span><span class="n">exe</span><span class="o">></span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ul>
|
||
</div></blockquote>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="StitchTool.html" class="btn btn-neutral float-left" title="Stitch Tool" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="ConfigTools.html" class="btn btn-neutral float-right" title="Configuration Tools" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2018 - 2024, Intel Corporation.
|
||
<span class="lastupdated">Last updated on Jun 07, 2024.
|
||
</span></p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |