Files
clear-linux-documentation/guides/clear/autospec.html
Kevin Putnam 319727628b First commit
Signed-off-by: Kevin Putnam <kevin.putnam@intel.com>
2019-07-29 14:35:12 -07:00

1442 lines
109 KiB
HTML
Raw Permalink 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>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>autospec &mdash; Documentation for Clear Linux* project</title>
<script type="text/javascript" src="../../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script type="text/javascript" src="../../_static/jquery.js"></script>
<script type="text/javascript" src="../../_static/underscore.js"></script>
<script type="text/javascript" src="../../_static/doctools.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../../_static/js/theme.js"></script>
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="author" title="About these documents" href="../../about.html" />
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Kernels" href="compatible-kernels.html" />
<link rel="prev" title="Autoproxy" href="autoproxy.html" />
<link rel="stylesheet" href="../../_static/tcs_theme.css" type="text/css" />
</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" style="background: #007ab2" >
<a href="../../index.html" class="icon icon-home"> Clear Linux* Project Docs
<img src="../../_static/clearlinux.png" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="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="main navigation">
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Clear Linux</span>
v: latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>Language Versions</dt>
<dd><a href="/clearlinux/latest/guides/clear/autospec.html">English</a></dd>
<dd><a href="/clearlinux/latest/zh_CN/guides/clear/autospec.html">Chinese</a></dd>
</dl>
<dl>
<dt>Document Versions</dt>
<dd><a href="/clearlinux/latest/guides/clear/autospec.html">latest</a></dd>
<dd><a href="/clearlinux/L19.01/guides/clear/autospec.html">L19.01</a></dd>
</dl>
<dl>
<dt>clearlinux.org links</dt>
<dd>
<a href="https://www.clearlinux.org/">Project Home</a>
</dd>
<dd>
<a href="https://github.com/clearlinux/clear-linux-documentation">GitHub</a>
</dd>
</dl>
</div>
</div>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../get-started/get-started.html">Get started</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../get-started/get-started.html#pre-install">Pre-install</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/compatibility-check.html">Check processor and EFI firmware compatibility</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/compatibility-check.html#check-compatibility">Check compatibility</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/bootable-usb/bootable-usb.html">Create a bootable USB drive</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bootable-usb/bootable-usb.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bootable-usb/bootable-usb.html#create-a-bootable-usb-drive-on-linux">Create a bootable USB drive on Linux*</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bootable-usb/bootable-usb.html#create-a-bootable-usb-drive-on-macos">Create a bootable USB drive on macOS*</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bootable-usb/bootable-usb.html#create-a-bootable-usb-drive-on-windows">Create a bootable USB drive on Windows*</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../get-started/get-started.html#install">Install</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html">Install Clear Linux* OS from the live desktop</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#system-requirements">System requirements</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#preliminary-steps">Preliminary steps</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#install-from-live-image">Install from live image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#minimum-installation-requirements">Minimum installation requirements</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#cl-desktop-installer">Clear Linux OS Desktop Installer</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#navigation">Navigation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#required-options">Required options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#advanced-options">Advanced options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-desktop/bare-metal-install-desktop.html#finish-installation">Finish installation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html">Install Clear Linux* OS on bare metal with live server</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#system-requirements">System requirements</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#download-the-latest-cl-live-server-image">Download the latest Clear Linux OS live server image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#install-cl-on-your-target-system">Install Clear Linux OS on your target system</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#launch-the-cl-installer">Launch the Clear Linux OS Installer</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#minimum-installation-requirements">Minimum installation requirements</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#main-menu">Main Menu</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#navigation">Navigation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#required-options">Required options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#recommended-options">Recommended options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#advanced-options">Advanced options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#finish-installation">Finish installation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/bare-metal-install-server/bare-metal-install-server.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/install-configfile.html">Install using clr-installer and a configuration file</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/install-configfile.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/install-configfile.html#process">Process</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/install-configfile.html#references">References</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../get-started/get-started.html#install-in-a-virtual-machine">Install in a virtual machine</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/gce.html">Launch Clear Linux* OS Compute Engine on Google Cloud Platform*</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/gce.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/gce.html#setup-cl-vm-on-gcp">Setup Clear Linux OS VM on GCP</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/gce.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/hyper-v.html">Use Hyper-V*</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/hyper-v.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/hyper-v.html#enable-hyper-v">Enable Hyper-V</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/hyper-v.html#create-a-virtual-network">Create a virtual network</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/hyper-v.html#create-a-virtual-machine">Create a virtual machine</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/kvm.html">Run Clear Linux* OS as a KVM guest OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/kvm.html#install-qemu-kvm">Install QEMU-KVM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/kvm.html#download-and-launch-the-virtual-machine">Download and launch the virtual machine</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/kvm.html#ssh-access-into-the-virtual-machine">SSH access into the virtual machine</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/kvm.html#optional-add-the-gnome-display-manager-gdm">Optional: Add the GNOME Display Manager (GDM)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html">Install a Clear Linux* OS VM in VirtualBox*</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html#download-and-extract-the-cl-installer-iso">Download and extract the Clear Linux OS installer ISO</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html#create-a-new-vb-virtual-machine">Create a new VirtualBox virtual machine</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html#install-cl-on-the-vb-vm">Install Clear Linux OS on the VirtualBox VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/virtualbox-cl-installer.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html">Install Clear Linux* OS as a VMware* Workstation Player guest OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#install-the-vmware-workstation-player-hypervisor">Install the VMware Workstation Player hypervisor</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#download-the-latest-cl-installer">Download the latest Clear Linux OS installer</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#create-and-configure-a-new-vm">Create and configure a new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#install-cl-into-the-new-vm">Install Clear Linux OS into the new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#detach-the-cl-installer-iso-from-the-vm">Detach the Clear Linux OS installer ISO from the VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#enable-uefi-boot-support">Enable UEFI boot support</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html">Run pre-configured Clear Linux* OS image as a VMware* Workstation Player guest OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#install-the-vmware-workstation-player-hypervisor">Install the VMware Workstation Player hypervisor</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#download-the-latest-cl-vmware-image">Download the latest Clear Linux OS VMware image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#image-types">Image types</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#create-and-configure-a-new-vm">Create and configure a new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#attach-the-pre-configured-cl-vmware-image">Attach the pre-configured Clear Linux OS VMware image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#enable-uefi-boot-support">Enable UEFI boot support</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#power-on-the-vm">Power on the VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmw-player-preconf.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html">Install Clear Linux* OS as a VMware* ESXi guest OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#download-the-latest-cl-installer-iso">Download the latest Clear Linux OS installer ISO</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#upload-the-cl-installer-iso-to-the-vmware-server">Upload the Clear Linux OS installer ISO to the VMware server</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#create-and-configure-a-new-vm">Create and configure a new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#install-cl-into-the-new-vm">Install Clear Linux OS into the new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#reconfigure-the-vm-s-settings-to-boot-the-newly-installed-cl">Reconfigure the VMs settings to boot the newly-installed Clear Linux OS</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#power-on-the-vm-and-boot-cl">Power on the VM and boot Clear Linux OS</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-install-cl.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html">Run preconfigured Clear Linux* OS image as a VMware* ESXi guest OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#download-the-latest-cl-vmware-image">Download the latest Clear Linux OS VMware image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#upload-the-cl-image-to-the-vmware-server">Upload the Clear Linux OS image to the VMware server</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#convert-the-cl-image-to-an-esxi-supported-format">Convert the Clear Linux OS image to an ESXi-supported format</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#create-and-configure-a-new-vm">Create and configure a new VM</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#power-on-the-vm-and-boot-cl">Power on the VM and boot Clear Linux OS</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../get-started/virtual-machine-install/vmware-esxi-preconfigured-cl-image.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html">Increase virtual disk size of an image</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html#determine-the-partition-order-and-sizes-of-the-prebuilt-image">Determine the partition order and sizes of the prebuilt image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html#id1">Increase virtual disk size</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../about.html">About</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../about.html#training">Training</a></li>
</ul>
</li>
<li class="toctree-l1 current"><a class="reference internal" href="../guides.html">Guides</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="../guides.html#clear-linux">Clear Linux</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="autoproxy.html">Autoproxy</a><ul>
<li class="toctree-l4"><a class="reference internal" href="autoproxy.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="autoproxy.html#how-it-works">How it works</a></li>
</ul>
</li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">autospec</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="#how-it-works">How it works</a></li>
<li class="toctree-l4"><a class="reference internal" href="#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="#test-packaged-software">Test packaged software</a></li>
<li class="toctree-l4"><a class="reference internal" href="#references">References</a></li>
<li class="toctree-l4"><a class="reference internal" href="#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="compatible-kernels.html">Kernels</a><ul>
<li class="toctree-l4"><a class="reference internal" href="compatible-kernels.html#bare-metal-only">Bare metal only</a></li>
<li class="toctree-l4"><a class="reference internal" href="compatible-kernels.html#also-compatible-with-vms">Also compatible with VMs</a></li>
<li class="toctree-l4"><a class="reference internal" href="compatible-kernels.html#vm-only">VM only</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="debug.html">Debug system</a><ul>
<li class="toctree-l4"><a class="reference internal" href="debug.html#background">Background</a></li>
<li class="toctree-l4"><a class="reference internal" href="debug.html#usage">Usage</a></li>
<li class="toctree-l4"><a class="reference internal" href="debug.html#implementation">Implementation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="ister.html">ister.py image builder</a><ul>
<li class="toctree-l4"><a class="reference internal" href="ister.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="ister.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="ister.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="mixer.html">mixer</a><ul>
<li class="toctree-l4"><a class="reference internal" href="mixer.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="mixer.html#how-it-works">How it works</a></li>
<li class="toctree-l4"><a class="reference internal" href="mixer.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="mixer.html#references">References</a></li>
<li class="toctree-l4"><a class="reference internal" href="mixer.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="security.html">OS Security</a><ul>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-updates">Security in updates</a></li>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-software">Security in software</a></li>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-system-design">Security in system design</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="stateless.html">Stateless</a><ul>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#file-level-separation">File-level separation</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#software-configuration">Software configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#system-reset">System reset</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#additional-information">Additional information</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="swupd-guide.html">swupd</a><ul>
<li class="toctree-l4"><a class="reference internal" href="swupd-guide.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="swupd-guide.html#how-it-works">How it works</a></li>
<li class="toctree-l4"><a class="reference internal" href="swupd-guide.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="swupd-guide.html#quick-reference">Quick reference</a></li>
<li class="toctree-l4"><a class="reference internal" href="swupd-guide.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../telemetrics/telem-guide.html">Telemetrics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../telemetrics/telem-guide.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../telemetrics/telem-guide.html#how-to-use">How to use</a></li>
<li class="toctree-l4"><a class="reference internal" href="../telemetrics/telem-guide.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="../telemetrics/telem-guide.html#reference">Reference</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../guides.html#maintenance">Maintenance</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/architect-lifecycle.html">Architect the life-cycle of Clear Linux* OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/architect-lifecycle.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/architect-lifecycle.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/architect-lifecycle.html#content-workflow">Content Workflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/architect-lifecycle.html#release-workflow">Release Workflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/architect-lifecycle.html#implementation">Implementation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/assign-static-ip.html">Assign a static IP address</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/assign-static-ip.html#identify-which-program-is-managing-the-interface">Identify which program is managing the interface</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/assign-static-ip.html#using-networkmanager">Using NetworkManager</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/assign-static-ip.html#using-systemd-networkd">Using systemd-networkd</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/bulk-provision.html">Bulk provision</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/bulk-provision.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/bulk-provision.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/bulk-provision.html#configuration">Configuration</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/cpu-performance.html">CPU Power and Performance</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/cpu-performance.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/cpu-performance.html#cpu-power-saving-mechanisms">CPU power saving mechanisms</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/cpu-performance.html#linux-cpu-clock-frequency-scaling">Linux CPU clock frequency scaling</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/cpu-performance.html#thermal-management">Thermal management</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/developer-workstation.html">Developer Workstation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/developer-workstation.html#workstation-setup">Workstation Setup</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/developer-workstation.html#swupd-search">swupd search</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/developer-workstation.html#core-concepts">Core Concepts</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/download-verify-decompress.html">Download, verify, and decompress a Clear Linux* OS image</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/download-verify-decompress.html#linux-os-steps">Linux OS steps</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/download-verify-decompress.html#macos-steps">macOS* steps</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/download-verify-decompress.html#windows-os-steps">Windows* OS steps</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/download-verify-decompress.html#image-types">Image types</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/enable-user-space.html">Create and enable a new user space</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/enable-user-space.html#create-a-new-user">Create a new user</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/enable-user-space.html#add-the-new-user-to-the-wheel-group">Add the new user to the <em>wheel</em> group</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/enable-user-space.html#install-and-update-the-os-software-to-its-current-version">Install and update the OS software to its current version</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/enable-user-space.html#add-a-bundle">Add a bundle</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/enable-user-space.html#next-steps">Next steps</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/fix-broken-install.html">Fix a broken installation</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/fix-broken-install.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/fix-broken-install.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/fix-broken-install.html#boot-a-live-desktop-image-to-fix-target-system">Boot a live desktop image to fix target system</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/fix-broken-install.html#install-from-live-image">Install from live image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/fix-broken-install.html#mount-root-partition-verify-and-fix">Mount root partition, verify, and fix</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/hostname.html">Modify hostname</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/hostname.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/hostname.html#set-your-hostname">Set your hostname</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/hostname.html#view-your-hostname">View your hostname</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html">Increase virtual disk size of an image</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html#determine-the-partition-order-and-sizes-of-the-prebuilt-image">Determine the partition order and sizes of the prebuilt image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/increase-virtual-disk-size.html#id1">Increase virtual disk size</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/query-upstream.html">Query package info from upstream repository</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/query-upstream.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/query-upstream.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/query-upstream.html#configure-dnf">Configure DNF</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/query-upstream.html#dnf-command-usage-examples">DNF command usage examples</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/resource-limits.html">Resource limits</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/resource-limits.html#system-wide-limits">System-wide limits</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/resource-limits.html#per-user-limits">Per-user limits</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/resource-limits.html#service-limits">Service limits</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/restart.html">Restart system services after an OS update</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#how-it-works">How it works</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#basic-options">Basic options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#monitor-options">Monitor options</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#example">Example</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#telemetry">Telemetry</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/restart.html#conclusion">Conclusion</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/time.html">Set the time</a></li>
<li class="toctree-l3"><a class="reference internal" href="../maintenance/validate-signatures.html">Validate signatures</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/validate-signatures.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/validate-signatures.html#image-content-validation">Image content validation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../maintenance/validate-signatures.html#update-content-validation">Update content validation</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../deploy-at-scale.html">Deploy at Scale</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../deploy-at-scale.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../deploy-at-scale.html#pick-a-usage-and-update-strategy">Pick a usage and update strategy</a></li>
<li class="toctree-l4"><a class="reference internal" href="../deploy-at-scale.html#pick-an-image-distribution-strategy">Pick an image distribution strategy</a></li>
<li class="toctree-l4"><a class="reference internal" href="../deploy-at-scale.html#considerations-with-stateless-systems">Considerations with stateless systems</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../guides.html#network">Network</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../network/custom-clear-container.html">Build a custom Clear Linux* OS based Docker container image</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../network/custom-clear-container.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/custom-clear-container.html#build-the-base-container-image">Build the base container image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/custom-clear-container.html#manage-bundles-in-a-container">Manage bundles in a container</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../network/dpdk.html">Use DPDK to send packets between platforms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#install-dpdk-and-build-l3fwd-example-platform-b">Install dpdk and build l3fwd example (Platform B)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#build-pktgen-platform-a">Build pktgen (Platform A)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#bind-nics-to-dpdk-kernel-drivers-platforms-a-and-b">Bind NICs to DPDK kernel drivers (Platforms A and B)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#set-hugepages-platforms-a-and-b">Set hugepages (Platforms A and B)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#set-up-the-physical-environment-platforms-a-and-b">Set up the physical environment (Platforms A and B)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#run-l3fwd-application-platform-b">Run l3fwd application (Platform B)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#run-pktgen-application-platform-a">Run pktgen application (Platform A)</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/dpdk.html#appendix-a-use-pass-through-for-virtual-machines">Appendix A: Use pass-through for virtual machines</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../network/ipxe-install.html">Install over the network with iPXE</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../network/ipxe-install.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/ipxe-install.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/ipxe-install.html#configuration">Configuration</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../network/network-bonding.html">Combine multiple interfaces with network bonding</a></li>
<li class="toctree-l3"><a class="reference internal" href="../network/vnc.html">Remote-desktop to a host using VNC</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#install-the-vnc-server-and-misc-components-on-your-host">Install the VNC server and misc. components on your host</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#configure-a-vnc-server-start-method-on-your-host">Configure a VNC-server-start method on your host</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#install-a-vnc-viewer-app-and-an-ssh-client-on-your-client-system">Install a VNC viewer app and an SSH client on your client system</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#establish-a-vnc-connection-to-your-host">Establish a VNC connection to your host</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#terminate-a-vnc-connection-to-your-host">Terminate a VNC connection to your host</a></li>
<li class="toctree-l4"><a class="reference internal" href="../network/vnc.html#encrypt-vnc-traffic-through-an-ssh-tunnel">Encrypt VNC traffic through an SSH tunnel</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../guides.html#kernel">Kernel</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../kernel/kernel-development.html">Kernel development</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#request-changes-be-included-with-the-cl-kernel">Request changes be included with the Clear Linux OS kernel</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#set-up-kernel-development-environment">Set up kernel development environment</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#customize-the-linux-kernel-source">Customize the Linux kernel source</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#build-and-install-the-kernel">Build and install the kernel</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-development.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../kernel/kernel-modules.html">Add kernel modules manually</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#kernel-module-availability">Kernel module availability</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#build-install-and-load-an-out-of-tree-module">Build, install, and load an out-of-tree module</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules.html#related-topic">Related topic</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../kernel/kernel-modules-dkms.html">Add kernel modules with DKMS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#description">Description</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#kernel-module-availability">Kernel module availability</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#install-dkms">Install DKMS</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#build-install-and-load-an-out-of-tree-module">Build, install, and load an out-of-tree module</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#examples">Examples</a></li>
<li class="toctree-l4"><a class="reference internal" href="../kernel/kernel-modules-dkms.html#related-topics">Related topics</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../guides.html#stacks">Stacks</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../stacks/dars.html">Data Analytics Reference Stack</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dars.html#the-data-analytics-reference-stack-release">The Data Analytics Reference Stack release</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dars.html#using-the-docker-images">Using the Docker images</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dars.html#building-dars-images">Building DARS images</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../stacks/greengrass.html">Enable AWS Greengrass* and OpenVINO™ toolkit</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#supported-platforms">Supported platforms</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#install-the-os-on-the-edge-device">Install the OS on the edge device</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#configure-aws-greengrass-group">Configure AWS Greengrass group</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#create-and-package-lambda-function">Create and package Lambda function</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#configure-lambda-function">Configure Lambda function</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#deploy-lambda-function">Deploy Lambda function</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/greengrass.html#references">References</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../stacks/dlrs/dlrs.html">Deep Learning Reference Stack</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#tensorflow-single-and-multi-node-benchmarks">TensorFlow single and multi-node benchmarks</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#pytorch-single-and-multi-node-benchmarks">PyTorch single and multi-node benchmarks</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#kubeflow-multi-node-benchmarks">Kubeflow multi-node benchmarks</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#use-jupyter-notebook">Use Jupyter Notebook</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#uninstallation">Uninstallation</a></li>
<li class="toctree-l4"><a class="reference internal" href="../stacks/dlrs/dlrs.html#related-topics">Related topics</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../tutorials/tutorials.html">Tutorials</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/wordpress/wordpress.html">WordPress* on Clear Linux* OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html">Set up a LAMP web server on Clear Linux* OS</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#install-apache">Install Apache</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#change-the-default-configuration-and-data-directory">Change the default configuration and data directory</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#install-php">Install PHP</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#install-mariadb">Install MariaDB</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#install-phpmyadmin">Install phpMyAdmin</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#use-phpmyadmin-to-manage-a-database">Use phpMyAdmin to manage a database</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/web-server-install.html#next-steps">Next steps</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/wordpress/wp-install.html">Set up WordPress* on a LAMP web server</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/wp-install.html#before-you-begin">Before you begin</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/wordpress/wp-install.html#create-a-wordpress-server">Create a WordPress server</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/flatpak/flatpak.html">Use Flatpak* to install applications on Clear Linux* OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/flatpak/flatpak.html#before-you-begin">Before you begin</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/flatpak/flatpak.html#install-flatpak-on-your-host-system">Install Flatpak on your host system</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/flatpak/flatpak.html#install-and-run-the-libreoffice-flatpak-image">Install and run the LibreOffice Flatpak image</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/flatpak/flatpak.html#launch-libreoffice">Launch LibreOffice</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/machine-learning/machine-learning.html">TensorFlow* machine learning on Clear Linux* OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/machine-learning/machine-learning.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/machine-learning/machine-learning.html#set-up-a-jupyter-notebook">Set up a Jupyter notebook</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/machine-learning/machine-learning.html#run-the-jupyter-machine-learning-example-code">Run the Jupyter machine learning example code</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/machine-learning/machine-learning.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/docker/docker.html">Run Docker* on Clear Linux* OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#install-the-containers-basic-bundle">Install the containers-basic bundle</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#integration-with-kata-containers-optional">Integration with Kata Containers* (optional)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#additional-docker-configuration">Additional Docker configuration</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#pulling-and-running-an-image-from-docker-hub">Pulling and running an image from Docker Hub</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#creating-a-docker-swarm-cluster">Creating a Docker swarm cluster</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/docker/docker.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/azure.html">Run Clear Linux* OS using Microsoft Azure CLI 2.0</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#install-ms-azure-cli-2-0-on-cl">Install MS Azure CLI 2.0 on Clear Linux OS</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#log-into-your-microsoft-azure-account">Log into your Microsoft Azure account</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#create-a-ms-azure-resource-group">Create a MS Azure resource group</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#create-and-log-into-the-cl-virtual-machine">Create and log into the Clear Linux OS virtual machine</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#stop-and-deallocate-the-cl-vm-and-resources">Stop and deallocate the Clear Linux OS VM and resources</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/azure.html#next-steps">Next steps</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/hadoop.html">Set up a single node cluster with Hadoop*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#install-apache-hadoop">Install Apache Hadoop</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#configure-apache-hadoop">Configure Apache Hadoop</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#configure-your-ssh-key">Configure your SSH key</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#run-the-hadoop-daemons">Run the Hadoop daemons</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/hadoop.html#run-the-mapreduce-wordcount-example">Run the MapReduce wordcount example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/fmv.html">Use the function multi-version patch generator</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/fmv.html#install-and-configure-a-cl-host-on-bare-metal">Install and configure a Clear Linux OS host on bare metal</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/fmv.html#detect-loop-vectorization-candidates">Detect loop vectorization candidates</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/fmv.html#generate-the-fmv-patch">Generate the FMV patch</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/fmv.html#fft-project-example-using-fftw">FFT project example using FFTW</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html">Create and launch Clear Linux* OS from Amazon Web Services</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html#locate-select-and-launch-the-cl-basic-ami">Locate, select, and launch the Clear Linux OS Basic AMI</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html#connect-to-your-clear-linux-os-basic-instance">Connect to your Clear Linux OS Basic instance</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html#update-the-cl-instance">Update the Clear Linux OS instance</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/aws-web/aws-web.html#stop-the-cl-instance">Stop the Clear Linux OS instance</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/smb/smb.html">Enable simple file sharing with a Windows* machine using Samba*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/smb/smb.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/smb/smb.html#set-up-file-sharing">Set up file sharing</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/smb/smb.html#map-cl-drive-in-windows">Map Clear Linux OS drive in Windows</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/smb/smb-desktop.html">Connect to Windows* shared location from Clear Linux* OS desktop</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/smb/smb-desktop.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/smb/smb-desktop.html#connect-to-windows-shared-location-with-nautilus">Connect to Windows shared location with Nautilus</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/spark.html">Set up a standalone cluster system using Apache* Spark*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/spark.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/spark.html#install-apache-spark">Install Apache Spark</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/spark.html#configure-apache-spark">Configure Apache Spark</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/spark.html#start-the-master-server-and-a-worker-daemon">Start the master server and a worker daemon</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/spark.html#run-the-spark-wordcount-example">Run the Spark wordcount example</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/kata.html">Install Kata Containers*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata.html#id1">Install Kata Containers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata.html#run-kata-containers">Run Kata Containers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata.html#more-information-about-docker">More information about Docker</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/kata.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/kata_migration.html">Migrate Clear Containers to Kata Containers*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata_migration.html#stop-clear-containers-instances">Stop Clear Containers instances</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata_migration.html#manually-migrate-customized-configuration-files">Manually migrate customized configuration files</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata_migration.html#enable-kata-containers-as-default">Enable Kata Containers as default</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kata_migration.html#run-kata-containers">Run Kata Containers</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html">Run Kubernetes*</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#install-kubernetes-and-cri-runtimes">Install Kubernetes and CRI runtimes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#configure-kubernetes">Configure Kubernetes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#configure-and-run-kubernetes">Configure and run Kubernetes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#configure-and-run-cri-o-kata-runtime">Configure and run CRI-O + kata-runtime</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#install-pod-network-add-on">Install pod network add-on</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#use-your-cluster">Use your cluster</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#related-topics">Related topics</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#cloud-native-setup-automation-optional">Cloud native setup automation (optional)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#package-configuration-customization-optional">Package configuration customization (optional)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#proxy-configuration-optional">Proxy configuration (optional)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#next-steps">Next steps</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes.html#troubleshooting">Troubleshooting</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes-bp.html">Kubernetes Best Practices on Clear Linux OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes-bp.html#use-swupd-to-update-clusters">Use swupd to update clusters</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes-bp.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes-bp.html#update-the-control-plane">Update the control plane</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/kubernetes/kubernetes-bp.html#update-worker-nodes">Update worker nodes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/yubikey-u2f.html">Enable YubiKey U2F Support</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/yubikey-u2f.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/yubikey-u2f.html#enable-linux-udev-rules-for-yubikey">Enable Linux udev rules for YubiKey</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/yubikey-u2f.html#enable-u2f-in-mozilla-firefox">Enable U2F in Mozilla Firefox</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/yubikey-u2f.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/nvidia.html">Install NVIDIA* Drivers</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#install-dkms">Install DKMS</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#download-and-install-the-nvidia-drivers">Download and install the NVIDIA drivers</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/nvidia.html#download-the-nvidia-drivers-for-linux">Download the NVIDIA drivers for Linux</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/nvidia.html#disable-the-nouveau-driver">Disable the nouveau driver</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/nvidia.html#configure-alternative-software-paths">Configure alternative software paths</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/nvidia.html#install-the-nvidia-drivers">Install the NVIDIA drivers</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#updating-the-nvidia-drivers">Updating the NVIDIA drivers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#uninstalling-the-nvidia-drivers">Uninstalling the NVIDIA drivers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#debugging-installation-of-nvidia-drivers">Debugging installation of NVIDIA drivers</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/nvidia.html#additional-resources">Additional resources</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/redis.html">Run Redis on Clear Linux* OS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#install-the-redis-bundle">Install the redis bundle</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#start-the-redis-server">Start the redis-server</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#example-1-use-the-redis-cli-and-try-commands">Example 1: Use the redis-cli and try commands</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#example-2-run-the-cl-redis-docker-image">Example 2: Run the Clear Linux OS redis docker image</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/redis.html#next-steps">Next Steps</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../tutorials/tutorial-proxy.html">Setting up proxy</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#shells-and-programs-in-a-desktop-session">Shells and programs in a desktop session</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#terminal">Terminal</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#wget">wget</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#system-service-docker">System service (Docker)</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../tutorials/tutorial-proxy.html#git-over-ssh">git over ssh</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../reference/reference.html">Reference</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../reference/compatible-hardware.html">Compatible Hardware</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/bundle-commands.html">Useful bundle commands</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundle-commands.html#additional-information">Additional information</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/bundles/bundles.html">Available bundles</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/bundles.html#bundle-list">Bundle list</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/bundles/openssh-server.html">openssh-server</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/openssh-server.html#prerequisites">Prerequisites</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/openssh-server.html#change-default-port">Change default port</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/openssh-server.html#enable-sftp">Enable SFTP</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/openssh-server.html#enable-root-login">Enable root login</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/bundles/openssh-server.html#enable-x11-forwarding">Enable X11-forwarding</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/collaboration/collaboration.html">Documentation guidelines</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../reference/collaboration/collaboration.html#contribution-guidelines">Contribution guidelines</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../reference/collaboration/writing-guide.html">Writing guide: Describes the style we use to keep our documents clear and concise.</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../reference/collaboration/structure-formatting.html">Structure and formatting guide: Explains how we organize and format content, using reStructuredText and Sphinx.</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/collaboration/collaboration.html#how-to-contribute">How to contribute</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/collaboration/collaboration.html#contribute-via-github">Contribute via GitHub</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/collaboration/collaboration.html#references">References</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/system-requirements.html">Recommended minimum system requirements</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../reference/system-requirements.html#installer-requirements">Installer requirements</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/system-requirements.html#id1">System requirements</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../reference/system-requirements.html#recommended-configurations">Recommended configurations</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/image-types.html">Clear Linux* OS image types</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../reference/reference.html#clear-linux-concepts">Clear Linux concepts</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../concepts/autospec-about.html">Autospec</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/autospec-about.html#how-autospec-works">How autospec works</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/autospec-about.html#control-files">Control files</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/autospec-about.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../concepts/bundles-about.html">Bundles</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/bundles-about.html#next-steps">Next steps</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../concepts/mixer-about.html">Mixer</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/mixer-about.html#create-a-mix">Create a mix</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/mixer-about.html#related-topics">Related topics</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../concepts/swupd-about.html">swupd: software updater</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/swupd-about.html#versioning">Versioning</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/swupd-about.html#updating">Updating</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/swupd-about.html#bundles">Bundles</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="../../concepts/telemetry-about.html">Telemetrics</a><ul>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/telemetry-about.html#architecture">Architecture</a></li>
<li class="toctree-l4"><a class="reference internal" href="../../concepts/telemetry-about.html#next-steps">Next steps</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="stateless.html">Stateless</a><ul>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#file-level-separation">File-level separation</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#software-configuration">Software configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#system-reset">System reset</a></li>
<li class="toctree-l4"><a class="reference internal" href="stateless.html#additional-information">Additional information</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="security.html">OS Security</a><ul>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-updates">Security in updates</a></li>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-software">Security in software</a></li>
<li class="toctree-l4"><a class="reference internal" href="security.html#security-in-system-design">Security in system design</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../FAQ/faq.html">FAQ</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../../FAQ/faq.html#general">General</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#why-did-you-make-another-distro">Why did you make another distro?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#can-other-distros-copy-cl-improvements">Can other distros copy Clear Linux OS improvements?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#how-often-do-you-update">How often do you update?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#is-telemetry-required">Is telemetry required?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#what-is-the-default-firewall">What is the default firewall?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#where-are-the-files-that-i-usually-see-under-etc-like-fstab">Where are the files that I usually see under /etc like fstab?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../FAQ/faq.html#software-packages">Software packages</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#how-is-software-installed-and-updated">How is software installed and updated?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#does-cl-use-rpms-like-other-distros">Does Clear Linux OS use RPMs like other distros?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#can-i-install-a-software-package-from-another-os-on-cl">Can I install a software package from another OS on Clear Linux OS?</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../../FAQ/faq.html#software-availability">Software availability</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#what-software-is-available-on-cl">What software is available on Clear Linux OS?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#is-google-chrome-available">Is Google* Chrome* available?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#is-ffmpeg-available">Is FFmpeg available?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#is-zfs-available">Is ZFS* available?</a></li>
<li class="toctree-l3"><a class="reference internal" href="../../FAQ/faq.html#can-you-add-a-driver-that-i-need">Can you add a driver that I need?</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">Clear Linux* Project Docs</a>
</nav>
<div class="wy-nav-content">
<header id="header">
<div class="padding-md--left-right">
<div class="header__site_info">
<div class="header__site_info_name">
<a href ="https://clearlinux.org"> Clear Linux* Project</a>
</div>
</div>
<nav class="header__menu">
<ul class="header__menu_list">
<li class="header__menu_list_item green ">
<a tabindex='1' href="https://clearlinux.org/about">About</a>
</li>
<li class="header__menu_list_item purple ">
<a tabindex='1' href="https://clearlinux.org/developer">Developer</a>
</li>
<li class="header__menu_list_item blue ">
<a tabindex='1' href="https://clearlinux.org/software">Software</a>
</li>
</ul>
</nav>
</div>
</header>
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html">Docs</a> &raquo;</li>
<li><a href="../guides.html">Guides</a> &raquo;</li>
<li>autospec</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/clearlinux/clear-linux-documentation/blob/rtd-theme/source/guides/clear/autospec.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="autospec">
<span id="id1"></span><h1>autospec</h1>
<p><strong>autospec</strong> is a tool used to assist with the automated creation and maintenance of
RPM packaging in Clear Linux* OS. Where a standard <abbr title="RPM Package Manager">RPM</abbr> build process using
<strong class="command">rpmbuild</strong> requires a tarball and <code class="file docutils literal notranslate"><span class="pre">.spec</span></code> file to start, autospec
requires only a tarball and package name to start.</p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#description" id="id4">Description</a></li>
<li><a class="reference internal" href="#how-it-works" id="id5">How it works</a></li>
<li><a class="reference internal" href="#examples" id="id6">Examples</a></li>
<li><a class="reference internal" href="#test-packaged-software" id="id7">Test packaged software</a></li>
<li><a class="reference internal" href="#references" id="id8">References</a></li>
<li><a class="reference internal" href="#related-topics" id="id9">Related topics</a></li>
</ul>
</div>
<div class="section" id="description">
<h2><a class="toc-backref" href="#id4">Description</a></h2>
<p>The autospec tool attempts to infer the requirements of the <code class="file docutils literal notranslate"><span class="pre">.spec</span></code> file
by analyzing the source code and <code class="file docutils literal notranslate"><span class="pre">Makefile</span></code> information. It
continuously runs updated builds based on new information discovered from build
failures until it has a complete and valid <code class="file docutils literal notranslate"><span class="pre">.spec</span></code> file. If needed, you
can influence the behavior of autospec and customize the build by providing
optional <a class="reference external" href="https://github.com/clearlinux/autospec#control-files">control files</a> to the autospec tool.</p>
<p>autospec uses <strong>mock</strong> as a sandbox to run the builds. Visit the <a class="reference external" href="https://github.com/rpm-software-management/mock/wiki">mock wiki</a> for
additional information on using mock.</p>
<p>For a general understanding of how an RPM works, visit
the <a class="reference external" href="http://rpm.org">rpm website</a> or the <a class="reference external" href="https://rpm-packaging-guide.github.io/">RPM Packaging Guide</a> .</p>
</div>
<div class="section" id="how-it-works">
<h2><a class="toc-backref" href="#id5">How it works</a></h2>
<p>Learn the autospec tool set up and process.</p>
<div class="contents local topic" id="id2">
<ul class="simple">
<li><a class="reference internal" href="#prerequisites" id="id10">Prerequisites</a></li>
<li><a class="reference internal" href="#create-an-rpm" id="id11">Create an RPM</a></li>
</ul>
</div>
<div class="section" id="prerequisites">
<h3><a class="toc-backref" href="#id10">Prerequisites</a></h3>
<p>The setup for building source in Clear Linux OS must be completed before using the
autospec tool.</p>
<p>Refer to <a class="reference internal" href="#setup-environment-to-build-source">Setup environment to build source</a> for instructions on completing
the setup.</p>
</div>
<div class="section" id="create-an-rpm">
<h3><a class="toc-backref" href="#id11">Create an RPM</a></h3>
<p>The basic autospec process is described in the following steps:</p>
<ol class="arabic">
<li><p class="first">The <strong class="command">make autospec</strong> command generates a <code class="file docutils literal notranslate"><span class="pre">.spec</span></code> file based on
the analysis of code and existing control files.</p>
<p>Any control files should be located in the same directory as the resulting
<code class="file docutils literal notranslate"><span class="pre">.spec</span></code> file.</p>
<p>View the <a class="reference external" href="https://github.com/clearlinux/autospec">autospec README</a> for more information on <a class="reference external" href="https://github.com/clearlinux/autospec#control-files">control files</a>.</p>
</li>
<li><p class="first">autospec creates a build root with mock config.</p>
</li>
<li><p class="first">autospec attempts to build an RPM from the generated <code class="file docutils literal notranslate"><span class="pre">.spec</span></code>.</p>
</li>
<li><p class="first">autospec detects any missed declarations in the <code class="file docutils literal notranslate"><span class="pre">.spec</span></code>.</p>
</li>
<li><p class="first">If build errors occur, autospec scans the build log to try to detect
the root cause.</p>
</li>
<li><p class="first">If autospec detects the root cause and knows how to continue, it restarts
the build automatically at step 1 with updated build instructions.</p>
</li>
<li><p class="first">Otherwise, autospec stops the build for user inspection to resolve the
errors. Respond to the build process output by fixing source code issues
and/or editing control files to resolve issues, which may include
dependencies or exclusions. See <a class="reference external" href="https://github.com/clearlinux/autospec">autospec README</a> for more information on
control files.</p>
<p>The user resumes the process at step 1 after errors are resolved.</p>
<p>If a binary dependency doesnt exist in Clear Linux OS, you must build it
before running autospec again.</p>
</li>
</ol>
<p>Following these steps, autospec continues to rebuild the package, based on
new information discovered from build failures, until it has a valid
<code class="file docutils literal notranslate"><span class="pre">.spec</span></code>. If no build errors occur, RPM packages are successfully built.</p>
</div>
</div>
<div class="section" id="examples">
<h2><a class="toc-backref" href="#id6">Examples</a></h2>
<p>Complete <a class="reference internal" href="#setup-environment-to-build-source">Setup environment to build source</a> before using these examples.</p>
<div class="contents local topic" id="id3">
<ul class="simple">
<li><a class="reference internal" href="#example-1-build-rpm-with-an-existing-spec-file" id="id12">Example 1: Build RPM with an existing spec file</a></li>
<li><a class="reference internal" href="#example-2-build-a-new-rpm" id="id13">Example 2: Build a new RPM</a></li>
<li><a class="reference internal" href="#example-3-generate-a-new-spec-file-with-a-pre-defined-package" id="id14">Example 3: Generate a new spec file with a pre-defined package</a></li>
<li><a class="reference internal" href="#example-4-provide-control-files-to-autospec" id="id15">Example 4: Provide control files to autospec</a></li>
</ul>
</div>
<div class="section" id="example-1-build-rpm-with-an-existing-spec-file">
<h3><a class="toc-backref" href="#id12">Example 1: Build RPM with an existing spec file</a></h3>
<p>This example shows how to build a RPM from a pre-packaged upstream package with
an existing spec file. The example uses the <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package.</p>
<ol class="arabic">
<li><p class="first">Navigate to the autospec workspace and clone the <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux
make clone_dmidecode
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p>You can clone all package repos at once using the following command:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make <span class="o">[</span>-j NUM<span class="o">]</span> clone-packages
</pre></div>
</div>
<p>The optional NUM is the number of threads to use.</p>
<p class="last">For a list of available packages, view the
<code class="file docutils literal notranslate"><span class="pre">~/clearlinux/projects/common/packages</span></code> file.</p>
</div>
</li>
<li><p class="first">Navigate to the local copy of the <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package and build it:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux/packages/dmidecode/
make build
</pre></div>
</div>
</li>
<li><p class="first">The resulting RPMs are in <code class="file docutils literal notranslate"><span class="pre">./rpms</span></code>. Build logs and additional RPMs are
in <code class="file docutils literal notranslate"><span class="pre">./results</span></code>.</p>
</li>
</ol>
</div>
<div class="section" id="example-2-build-a-new-rpm">
<h3><a class="toc-backref" href="#id13">Example 2: Build a new RPM</a></h3>
<p>This example shows how to build a new RPM with no spec file. The example will
create a simple helloclear RPM.</p>
<ol class="arabic">
<li><p class="first">Navigate to the autospec workspace and build the helloclear RPM. The
<code class="file docutils literal notranslate"><span class="pre">Makefile</span></code> provides a <strong class="command">make autospecnew</strong> that can
automatically generate an RPM package using the autospec tool. You must pass
the URL to the source tarball and the NAME of the RPM you wish to create:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux
make autospecnew <span class="nv">URL</span><span class="o">=</span><span class="s2">&quot;https://github.com/clearlinux/helloclear/archive/helloclear-v1.0.tar.gz&quot;</span> <span class="nv">NAME</span><span class="o">=</span><span class="s2">&quot;helloclear&quot;</span>
</pre></div>
</div>
<p>The resulting RPMs are in <code class="file docutils literal notranslate"><span class="pre">./packages/helloclear/rpms</span></code>. Build logs and
additional RPMs are in <code class="file docutils literal notranslate"><span class="pre">./packages/helloclear/results</span></code>.</p>
</li>
</ol>
</div>
<div class="section" id="example-3-generate-a-new-spec-file-with-a-pre-defined-package">
<h3><a class="toc-backref" href="#id14">Example 3: Generate a new spec file with a pre-defined package</a></h3>
<p>This example shows how to modify an existing package to create a custom RPM. In
this example you will make a simple change to the <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package and
rebuild the package.</p>
<ol class="arabic">
<li><p class="first">Navigate to the autospec workspace and clone the <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux
make clone_dmidecode
</pre></div>
</div>
</li>
<li><p class="first">Navigate into the <em>dmidecode</em> directory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> packages/dmidecode
</pre></div>
</div>
</li>
<li><p class="first">Open the <code class="file docutils literal notranslate"><span class="pre">excludes</span></code> file with an editor and add these lines:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">/usr/bin/biosdecode</span>
<span class="go">/usr/bin/ownership</span>
<span class="go">/usr/bin/vpddecode</span>
<span class="go">/usr/share/man/man8/biosdecode.8</span>
<span class="go">/usr/share/man/man8/ownership.8</span>
<span class="go">/usr/share/man/man8/vpddecode.8</span>
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">These files arent needed by dmidecode, so we can remove them without
any issues.</p>
</div>
</li>
<li><p class="first">In the <code class="file docutils literal notranslate"><span class="pre">dmidecode</span></code> directory, build the modified <code class="docutils literal notranslate"><span class="pre">dmidecode</span></code> package:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make autospec
</pre></div>
</div>
</li>
<li><p class="first">The resulting RPMs are in <code class="file docutils literal notranslate"><span class="pre">./rpms</span></code>. Logs are in <code class="file docutils literal notranslate"><span class="pre">./results</span></code>.</p>
</li>
</ol>
</div>
<div class="section" id="example-4-provide-control-files-to-autospec">
<h3><a class="toc-backref" href="#id15">Example 4: Provide control files to autospec</a></h3>
<p>This example shows how to modify control files to correct build failures that
autospec is unable to resolve. In this example, you will add a missing license
and dependencies so autospec can complete a successful build.</p>
<ol class="arabic">
<li><p class="first">Navigate to the autospec workspace:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux
</pre></div>
</div>
</li>
<li><p class="first">If you have not already, clone all upstream package repos:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make <span class="o">[</span>-j NUM<span class="o">]</span> clone-packages
</pre></div>
</div>
<p>The optional NUM is the number of threads to use.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">In a later step of this example, we will search the cloned package repos
for a missing dependency.</p>
</div>
</li>
<li><p class="first">Build the opae-sdk RPM:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make autospecnew <span class="nv">URL</span><span class="o">=</span><span class="s2">&quot;https://github.com/OPAE/opae-sdk/archive/0.13.0.tar.gz&quot;</span> <span class="nv">NAME</span><span class="o">=</span><span class="s2">&quot;opae-sdk&quot;</span>
</pre></div>
</div>
<p>This results in an error for a missing license file:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">[FATAL] Cannot find any license or opae-sdk.license file!</span>
</pre></div>
</div>
</li>
<li><p class="first">Navigate to the package with build failures:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> packages/opae-sdk
</pre></div>
</div>
</li>
<li><p class="first">Add one or more valid license identifiers from the
<a class="reference external" href="https://spdx.org/licenses/">SPDX License List</a>.
In the example below, two different licenses are appropriate based on the
opae-sdk project licensing:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">echo</span> <span class="s2">&quot;BSD-3-Clause MIT&quot;</span> &gt; opae-sdk.license
</pre></div>
</div>
</li>
<li><p class="first">Run autospec again:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make autospec
</pre></div>
</div>
<p>This results in a generic error:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">[FATAL] Build failed, aborting</span>
</pre></div>
</div>
</li>
<li><p class="first">Open the build log to view the error details:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cat ./results/build.log
</pre></div>
</div>
<p>The build log contains details for the specific failures. In this
instance, there are missing dependencies:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files:</span>
<span class="go">CJSON_LIBRARY</span>
<span class="go"> linked by target &quot;opae-c++-utils&quot; in directory /builddir/build/BUILD/opae-sdk-0.13.0/tools/c++utilslib</span>
<span class="go">json-c_LIBRARIES</span>
<span class="go"> linked by target &quot;opae-c&quot; in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae</span>
<span class="go">libuuid_LIBRARIES</span>
<span class="go"> linked by target &quot;opae-c&quot; in directory /builddir/build/BUILD/opae-sdk-0.13.0/libopae</span>
</pre></div>
</div>
</li>
<li><p class="first">Search the spec files of upstream Clear Linux OS packages to see if the json-c library
is available. In this case, it does exist and well add the json-c dev
package into the buildreq_add:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>grep <span class="s1">&#39;json-c\.so$&#39;</span> ~/clearlinux/packages/*/*.spec
<span class="nb">echo</span> <span class="s2">&quot;json-c-dev&quot;</span> &gt;&gt; buildreq_add
</pre></div>
</div>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">This search step works only if the user cloned all of the upstream package
repos. In this example, upstream package repos were cloned in a previous
step.</p>
</div>
</li>
<li><p class="first">Search the spec files of upstream Clear Linux OS packages to see if the libuuid library
is available. In this case, it exists in the util-linux package, so well add
util-linux-dev package into the buildreq_add:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>grep <span class="s1">&#39;libuuid\.so$&#39;</span> ~/clearlinux/packages/*/*.spec
<span class="nb">echo</span> <span class="s2">&quot;util-linux-dev&quot;</span> &gt;&gt; buildreq_add
</pre></div>
</div>
</li>
<li><p class="first">Run autospec again and find the successfully-generated RPMs in the <code class="file docutils literal notranslate"><span class="pre">rpms</span></code>
directory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>make autospec
</pre></div>
</div>
</li>
</ol>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p>If you need a dependency that does not exist in the Clear Linux OS repo, you must first
build it manually (see <a class="reference internal" href="#example-2-build-a-new-rpm">Example 2: Build a new RPM</a>), then add the repo so
that autospec knows the package exists. For example:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux/packages/&lt;package-name&gt;
make repoadd
make repostatus
</pre></div>
</div>
<p class="last">You only need to add the dependency to the <code class="file docutils literal notranslate"><span class="pre">buildreq_add</span></code> control file
if autospec is not able to automatically find the correct dependency on its
own.</p>
</div>
</div>
</div>
<div class="section" id="test-packaged-software">
<h2><a class="toc-backref" href="#id7">Test packaged software</a></h2>
<p>After software has been packaged with autospec, the resulting RPMs can be
tested for functionality before being integrated and deployed into a Clear Linux OS
image with the <a class="reference internal" href="mixer.html#mixer"><span class="std std-ref">Mixer tool</span></a>.</p>
<p>The Clear Linux OS development tooling offers two ways to quickly test autospec
generated RPMs.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">The methods outlined below should only be used for temporary testing on
development systems.</p>
</div>
<div class="section" id="test-in-a-cl-virtual-machine">
<h3>Test in a Clear Linux OS virtual machine</h3>
<p>The Clear Linux OS development tooling includes a method to install RPMs into a Clear Linux OS
virtual machine running on the KVM hypervisor. Using a <abbr title="Virtual Machine">VM</abbr> allows testing in a completely isolated environment.</p>
<p>To test an autospec-created package inside a VM:</p>
<ol class="arabic">
<li><p class="first">Download the Clear Linux OS KVM image into the <code class="file docutils literal notranslate"><span class="pre">~/clearlinux</span></code> directory as
<code class="file docutils literal notranslate"><span class="pre">clear.img</span></code>. The location and name <code class="file docutils literal notranslate"><span class="pre">clear.img.xz</span></code> is important
for the tooling to work:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux
curl -o clear.img.xz https://download.clearlinux.org/image/<span class="k">$(</span>curl https://download.clearlinux.org/image/latest-images <span class="p">|</span> grep <span class="s1">&#39;[0-9]&#39;</span>-kvm<span class="k">)</span>
</pre></div>
</div>
</li>
<li><p class="first">Extract the downloaded Clear Linux OS KVM image:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>unxz -v clear.img.xz
</pre></div>
</div>
</li>
<li><p class="first">Copy the QEMU start script and virtual firmware needed for KVM into the
<code class="file docutils literal notranslate"><span class="pre">~/clearlinux</span></code> directory:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>cp ~/clearlinux/projects/common/start_qemu.sh .
cp /usr/share/qemu/OVMF.fd .
</pre></div>
</div>
</li>
<li><p class="first">Run <strong class="command">make install</strong> from the packages autospec directory. The
<strong class="command">make install</strong> command mounts the downloaded Clear Linux OS KVM image and
installs the autospec-created RPM into it:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux/packages/&lt;package-name&gt;
make install
</pre></div>
</div>
<p>The code that makes this possible can be viewed by searching for the
<em>install:</em> target in the <a class="reference external" href="https://github.com/clearlinux/common/blob/master/Makefile.common">Makefile.common</a> file on GitHub.</p>
</li>
<li><p class="first">Return to the <code class="file docutils literal notranslate"><span class="pre">~/clearlinux</span></code> directory and start the Clear Linux OS VM:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux/
sudo ./start_qemu.sh clear.img
</pre></div>
</div>
</li>
<li><p class="first">A new Clear Linux OS VM will launch in the console. Log into the VM as <em>root</em> and set
a new pasword for the VM.</p>
</li>
<li><p class="first">Check that the software is installed in the Clear Linux OS VM as expected and perform
any relevant tests.</p>
</li>
<li><p class="first">After testing has been completed, the Clear Linux OS VM can be powered off and
deleted:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>poweroff
rm clear.img
</pre></div>
</div>
</li>
</ol>
</div>
<div class="section" id="test-directly-on-a-development-machine">
<h3>Test directly on a development machine</h3>
<p>The Clear Linux OS development tooling also includes a method to extract
autospec-created RPMs locally onto a Clear Linux OS development system for testing.
Extracting an RPM directly onto a system offers quicker testing; however
conflicts may occur and responsibility to remove the software after testing is
up to the developer.</p>
<p>To test an autospec created package directly on the Clear Linux OS development system:</p>
<ol class="arabic">
<li><p class="first">Run <strong class="command">make install-local</strong> from the packages autospec directory.
The <strong class="command">make install-local</strong> command extracts the RPM directly onto
the filesystem of the running Clear Linux OS system:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">cd</span> ~/clearlinux/packages/&lt;package-name&gt;
make install-local
</pre></div>
</div>
<p>The code that makes this possible can be viewed by searching for the
<em>install-local:</em> target in the <a class="reference external" href="https://github.com/clearlinux/common/blob/master/Makefile.common">Makefile.common</a> file on GitHub.</p>
</li>
<li><p class="first">Check that the software is installed as expected and perform any relevant
tests.</p>
</li>
<li><p class="first">After testing has been completed, the software and any related files must
be identified and deleted. The <strong class="command">swupd repair --picky</strong>
command can help restore the state of the <code class="file docutils literal notranslate"><span class="pre">/usr</span></code> directory (see
<a class="reference internal" href="../../concepts/swupd-about.html#swupd-about"><span class="std std-ref">swupd</span></a>) however any other files must be cleaned up
manually.</p>
</li>
</ol>
</div>
</div>
<div class="section" id="references">
<h2><a class="toc-backref" href="#id8">References</a></h2>
<p>Reference the <a class="reference external" href="https://github.com/clearlinux/autospec">autospec README</a> for details regarding <cite>autospec</cite> commands and options.</p>
<div class="section" id="setup-environment-to-build-source">
<h3>Setup environment to build source</h3>
<p id="install-tooling-after-header">Setup of the workspace and tooling used for building source in Clear Linux OS is mostly
automated for you with a setup script. It uses tools from the
<strong class="command">os-clr-on-clr</strong> bundle.</p>
<p>The setup script creates a workspace in the <code class="file docutils literal notranslate"><span class="pre">clearlinux</span></code> folder, with the
subfolders <code class="file docutils literal notranslate"><span class="pre">Makefile</span></code>, <code class="file docutils literal notranslate"><span class="pre">packages</span></code>, and <code class="file docutils literal notranslate"><span class="pre">projects</span></code>. The
<code class="file docutils literal notranslate"><span class="pre">projects</span></code> folder contains the main tools used for making packages in
Clear Linux OS <code class="file docutils literal notranslate"><span class="pre">autospec</span></code> and <code class="file docutils literal notranslate"><span class="pre">common</span></code>.</p>
<p>Follow these steps to setup the workspace and tooling for building source:</p>
<ol class="arabic">
<li><p class="first">Install the <strong class="command">os-clr-on-clr</strong> bundle:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sudo swupd bundle-add os-clr-on-clr
</pre></div>
</div>
</li>
<li><p class="first">Download the <code class="file docutils literal notranslate"><span class="pre">user-setup.sh</span></code> script:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>curl -O https://raw.githubusercontent.com/clearlinux/common/master/user-setup.sh
</pre></div>
</div>
</li>
<li><p class="first">Make <code class="file docutils literal notranslate"><span class="pre">user-setup.sh</span></code> executable:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>chmod +x user-setup.sh
</pre></div>
</div>
</li>
<li><p class="first">Run the script as an unprivileged user:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>./user-setup.sh
</pre></div>
</div>
</li>
<li><p class="first">After the script completes, log out and log in again to complete the setup
process.</p>
</li>
<li><p class="first">Set your Git user email and username for the repos on your system:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>git config --global user.email <span class="s2">&quot;you@example.com&quot;</span>
git config --global user.name <span class="s2">&quot;Your Name&quot;</span>
</pre></div>
</div>
<p>This global setting is used by Clear Linux OS tools that make use of Git.</p>
</li>
</ol>
</div>
</div>
<div class="section" id="related-topics">
<span id="install-tooling-end"></span><h2><a class="toc-backref" href="#id9">Related topics</a></h2>
<ul class="simple">
<li><a class="reference internal" href="mixer.html#mixer"><span class="std std-ref">Mixer tool</span></a></li>
</ul>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="compatible-kernels.html" class="btn btn-neutral float-right" title="Kernels" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="autoproxy.html" class="btn btn-neutral float-left" title="Autoproxy" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2019, many
<span class="lastupdated">
Last updated on Jul 29, 2019.
</span>
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<script type="text/javascript" src="../../_static/tcs_theme.js"></script>
</body>
</html>