Files
slimbootloader.github.io/tutorials/ex_feature_custom_boot_order.html

208 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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>Exercise \- Feature Customization - Boot Order &mdash; 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="Exercise \- UEFI Payload" href="ex_uefi_payload.html" />
<link rel="prev" title="Exercise \- Feature Customization - Verified Boot" href="ex_feature_custom_verified_boot.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">Developers 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"><a class="reference internal" href="../tools/index.html">Tools</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Tutorials</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="ex_build_sbl_for_qemu.html">Exercise \- Build SBL for QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_run_sbl_on_qemu.html">Exercise \- Run SBL on QEMU</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_debug_sbl_on_qemu_with_gdb.html">Exercise \- Debug SBL on QEMU with GDB</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_sbl_shell_cli.html">Exercise \- SBL Shell/CLI</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_boot_to_linux.html">Exercise \- Boot to Linux</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_feature_custom_splash.html">Exercise \- Feature Customization - Splash</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_feature_custom_verified_boot.html">Exercise \- Feature Customization - Verified Boot</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Exercise \- Feature Customization - Boot Order</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_uefi_payload.html">Exercise \- UEFI Payload</a></li>
<li class="toctree-l2"><a class="reference internal" href="ex_corrupt_sbl_component.html">Exercise \- Corrupt SBL Component</a></li>
</ul>
</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">Tutorials</a></li>
<li class="breadcrumb-item active">Exercise \- Feature Customization - Boot Order</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="exercise-feature-customization-boot-order">
<span id="exercisefeaturecustombootorder"></span><h1>Exercise \- Feature Customization - Boot Order<a class="headerlink" href="#exercise-feature-customization-boot-order" title="Permalink to this heading"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><strong>In this exercise, well learn how to change boot order from source code.</strong></p>
</div>
<p>You can execute SBL with the following steps:</p>
<ol class="arabic simple">
<li><p>Check current boot order in QEMU:</p></li>
</ol>
<blockquote>
<div><ul>
<li><p>Look through the boot log on Command Prompt and locate string <code class="docutils literal notranslate"><span class="pre">Getting</span> <span class="pre">boot</span> <span class="pre">image</span> <span class="pre">from...</span></code> to determine the 1st boot device:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BuildLoader</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span> <span class="n">qemu</span>
</pre></div>
</div>
</li>
</ul>
<img alt="Compile completed" class="align-center" src="../_images/ex7-1.jpg" />
</div></blockquote>
<ol class="arabic simple" start="2">
<li><p>Modify board specific library,</p></li>
</ol>
<blockquote>
<div><ul>
<li><p>in file <code class="docutils literal notranslate"><span class="pre">&lt;sbl_tree&gt;\Platform\QemuBoardPkg\Library\Stage2BoardInitLib\Stage2BoardInitLib.c</span></code></p></li>
<li><p>In function <code class="docutils literal notranslate"><span class="pre">UpdateOsBootMediumInfo</span> <span class="pre">()</span></code></p></li>
<li><p>Add following at the end of the function to override the boot order:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">OsBootOptionList</span><span class="o">-&gt;</span><span class="n">CurrentBoot</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</pre></div>
</div>
</li>
</ul>
<img alt="Compile completed" class="align-center" src="../_images/ex7-2.jpg" />
</div></blockquote>
<div class="line-block">
<div class="line"><br /></div>
</div>
<ol class="arabic" start="3">
<li><p>Rebuild SBL by using the following command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">BuildLoader</span><span class="o">.</span><span class="n">py</span> <span class="n">build</span> <span class="n">qemu</span>
</pre></div>
</div>
</li>
<li><p>Completion: you will see <code class="docutils literal notranslate"><span class="pre">Done</span> <span class="pre">[qemu]</span></code> on the screen after compile completed</p></li>
<li><p>Execute SBL on QEMU by using the following command:</p></li>
</ol>
<blockquote>
<div><ul>
<li><p>Windows:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s2">&quot;C:\Program Files\qemu\qemu-system-x86_64.exe&quot;</span> <span class="o">-</span><span class="n">m</span> <span class="mi">256</span><span class="n">M</span> <span class="o">-</span><span class="n">machine</span> <span class="n">q35</span> <span class="o">-</span><span class="n">serial</span> <span class="n">stdio</span> <span class="o">-</span><span class="n">pflash</span> <span class="n">Outputs</span>\<span class="n">qemu</span>\<span class="n">SlimBootloader</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">drive</span> <span class="nb">id</span><span class="o">=</span><span class="n">mydisk</span><span class="p">,</span><span class="k">if</span><span class="o">=</span><span class="n">none</span><span class="p">,</span><span class="n">file</span><span class="o">=..</span>\<span class="n">Misc</span>\<span class="n">QemuImg</span>\<span class="n">QemuSata</span><span class="o">.</span><span class="n">img</span><span class="p">,</span><span class="nb">format</span><span class="o">=</span><span class="n">raw</span> <span class="o">-</span><span class="n">device</span> <span class="n">ide</span><span class="o">-</span><span class="n">hd</span><span class="p">,</span><span class="n">drive</span><span class="o">=</span><span class="n">mydisk</span> <span class="o">-</span><span class="n">boot</span> <span class="n">order</span><span class="o">=</span><span class="n">d</span>
</pre></div>
</div>
</li>
<li><p>Linux:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">qemu</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">x86_64</span> <span class="o">-</span><span class="n">m</span> <span class="mi">256</span><span class="n">M</span> <span class="o">-</span><span class="n">machine</span> <span class="n">q35</span> <span class="o">-</span><span class="n">serial</span> <span class="n">mon</span><span class="p">:</span><span class="n">stdio</span> <span class="o">-</span><span class="n">nographic</span> <span class="o">-</span><span class="n">pflash</span> <span class="n">Outputs</span><span class="o">/</span><span class="n">qemu</span><span class="o">/</span><span class="n">SlimBootloader</span><span class="o">.</span><span class="n">bin</span> <span class="o">-</span><span class="n">drive</span> <span class="nb">id</span><span class="o">=</span><span class="n">mydisk</span><span class="p">,</span><span class="k">if</span><span class="o">=</span><span class="n">none</span><span class="p">,</span><span class="n">file</span><span class="o">=../</span><span class="n">Misc</span><span class="o">/</span><span class="n">QemuImg</span><span class="o">/</span><span class="n">QemuSata</span><span class="o">.</span><span class="n">img</span><span class="p">,</span><span class="nb">format</span><span class="o">=</span><span class="n">raw</span> <span class="o">-</span><span class="n">device</span> <span class="n">ide</span><span class="o">-</span><span class="n">hd</span><span class="p">,</span><span class="n">drive</span><span class="o">=</span><span class="n">mydisk</span> <span class="o">-</span><span class="n">boot</span> <span class="n">order</span><span class="o">=</span><span class="n">d</span>
</pre></div>
</div>
</li>
</ul>
</div></blockquote>
<ol class="arabic simple" start="6">
<li><p>Check the console Window to see the difference</p></li>
</ol>
<blockquote>
<div><img alt="Compile completed" class="align-center" src="../_images/ex7-3.jpg" />
</div></blockquote>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>Board customization can be done through board specific libraries, such as <code class="docutils literal notranslate"><span class="pre">&lt;sbl_tree&gt;\Stage1ABoardInit/Stage1BBoardInit/Stage2BoardInit</span></code></p>
</div>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="ex_feature_custom_verified_boot.html" class="btn btn-neutral float-left" title="Exercise \- Feature Customization - Verified Boot" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="ex_uefi_payload.html" class="btn btn-neutral float-right" title="Exercise \- UEFI Payload" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; 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>