2015-05-11 23:44:09 +00:00
<!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" >
2015-07-10 18:39:39 +00:00
2015-05-11 23:44:09 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2018-03-15 20:53:58 +00:00
< title > livemedia-creator — Lorax 28.9 documentation< / title >
2015-05-11 23:44:09 +00:00
2017-11-28 17:18:51 +00:00
2015-05-11 23:44:09 +00:00
< link rel = "stylesheet" href = "_static/css/theme.css" type = "text/css" / >
2016-11-29 17:27:44 +00:00
< link rel = "index" title = "Index"
href="genindex.html"/>
< link rel = "search" title = "Search" href = "search.html" / >
2018-03-15 20:53:58 +00:00
< link rel = "top" title = "Lorax 28.9 documentation" href = "index.html" / >
2015-05-11 23:44:09 +00:00
< link rel = "next" title = "Product and Updates Images" href = "product-images.html" / >
2016-02-13 00:06:33 +00:00
< link rel = "prev" title = "Lorax" href = "lorax.html" / >
2015-05-11 23:44:09 +00:00
2015-07-10 18:39:39 +00:00
< script src = "_static/js/modernizr.min.js" > < / script >
2015-05-11 23:44:09 +00:00
< / head >
< body class = "wy-body-for-nav" role = "document" >
2017-11-28 17:18:51 +00:00
2015-05-11 23:44:09 +00:00
< div class = "wy-grid-for-nav" >
< nav data-toggle = "wy-nav-shift" class = "wy-nav-side" >
2016-02-13 00:06:33 +00:00
< div class = "wy-side-scroll" >
< div class = "wy-side-nav-search" >
2015-07-10 18:39:39 +00:00
2016-02-13 00:06:33 +00:00
< a href = "index.html" class = "icon icon-home" > Lorax
2015-07-10 18:39:39 +00:00
2016-02-13 00:06:33 +00:00
< / a >
2015-07-10 18:39:39 +00:00
2016-02-13 00:06:33 +00:00
< div class = "version" >
2018-03-15 20:53:58 +00:00
28.9
2016-02-13 00:06:33 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< 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 >
2015-07-10 18:39:39 +00:00
2015-05-11 23:44:09 +00:00
2016-02-13 00:06:33 +00:00
< / div >
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
2015-05-11 23:44:09 +00:00
2016-02-13 00:06:33 +00:00
2017-11-28 17:18:51 +00:00
< ul class = "current" >
2015-05-11 23:44:09 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "intro.html" > Introduction to Lorax< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "intro.html#before-lorax" > Before Lorax< / a > < / li >
2016-02-13 00:06:33 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "lorax.html" > Lorax< / a > < / li >
2016-11-29 17:27:44 +00:00
< li class = "toctree-l1 current" > < a class = "current reference internal" href = "#" > livemedia-creator< / a > < ul >
2016-03-18 23:30:48 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#livemedia-creator-cmdline-arguments" > livemedia-creator cmdline arguments< / a > < / li >
2015-05-11 23:44:09 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#quickstart" > Quickstart< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#how-iso-creation-works" > How ISO creation works< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#kickstarts" > Kickstarts< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#anaconda-image-install-no-virt" > Anaconda image install (no-virt)< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#ami-images" > AMI Images< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#appliance-creation" > Appliance Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#filesystem-image-creation" > Filesystem Image Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#tar-file-creation" > TAR File Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#live-image-for-pxe-boot" > Live Image for PXE Boot< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#atomic-live-image-for-pxe-boot" > Atomic Live Image for PXE Boot< / a > < / li >
2018-03-15 20:53:58 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#using-mock-and-no-virt-to-create-images" > Using Mock and – no-virt to Create Images< / a > < / li >
2016-03-18 23:30:48 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#using-mock-and-qemu-to-create-images" > Using Mock and qemu to Create Images< / a > < / li >
2015-05-11 23:44:09 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#openstack-image-creation" > OpenStack Image Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#docker-image-creation" > Docker Image Creation< / a > < / li >
2015-12-04 18:12:19 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#open-container-initiative-image-creation" > Open Container Initiative Image Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#vagrant-image-creation" > Vagrant Image Creation< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#creating-uefi-disk-images-with-virt" > Creating UEFI disk images with virt< / a > < / li >
2015-05-11 23:44:09 +00:00
< li class = "toctree-l2" > < a class = "reference internal" href = "#debugging-problems" > Debugging problems< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#hacking" > Hacking< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "product-images.html" > Product and Updates Images< / a > < / li >
2016-02-13 00:06:33 +00:00
< li class = "toctree-l1" > < a class = "reference internal" href = "modules.html" > pylorax< / a > < / li >
2015-05-11 23:44:09 +00:00
< / ul >
2016-02-13 00:06:33 +00:00
2015-05-11 23:44:09 +00:00
2016-02-13 00:06:33 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< / div >
< / nav >
< section data-toggle = "wy-nav-shift" class = "wy-nav-content-wrap" >
< nav class = "wy-nav-top" role = "navigation" aria-label = "top navigation" >
2017-11-28 17:18:51 +00:00
< i data-toggle = "wy-nav-top" class = "fa fa-bars" > < / i >
< a href = "index.html" > Lorax< / a >
2015-05-11 23:44:09 +00:00
< / nav >
< div class = "wy-nav-content" >
< div class = "rst-content" >
2016-02-13 00:06:33 +00:00
2017-11-28 17:18:51 +00:00
2016-02-13 00:06:33 +00:00
< div role = "navigation" aria-label = "breadcrumbs navigation" >
2017-11-28 17:18:51 +00:00
2015-05-11 23:44:09 +00:00
< ul class = "wy-breadcrumbs" >
2017-11-28 17:18:51 +00:00
< li > < a href = "index.html" > Docs< / a > » < / li >
< li > livemedia-creator< / li >
2015-05-11 23:44:09 +00:00
< li class = "wy-breadcrumbs-aside" >
2017-11-28 17:18:51 +00:00
< a href = "_sources/livemedia-creator.rst.txt" rel = "nofollow" > View page source< / a >
2015-07-10 18:39:39 +00:00
2015-05-11 23:44:09 +00:00
< / li >
2017-11-28 17:18:51 +00:00
2015-05-11 23:44:09 +00:00
< / ul >
2017-11-28 17:18:51 +00:00
2015-05-11 23:44:09 +00:00
< hr / >
< / div >
2016-02-13 00:06:33 +00:00
< div role = "main" class = "document" itemscope = "itemscope" itemtype = "http://schema.org/Article" >
< div itemprop = "articleBody" >
2015-05-11 23:44:09 +00:00
< div class = "section" id = "livemedia-creator" >
< h1 > livemedia-creator< a class = "headerlink" href = "#livemedia-creator" title = "Permalink to this headline" > ¶< / a > < / h1 >
< table class = "docutils field-list" frame = "void" rules = "none" >
< col class = "field-name" / >
< col class = "field-body" / >
< tbody valign = "top" >
< tr class = "field-odd field" > < th class = "field-name" > Authors:< / th > < td class = "field-body" > Brian C. Lane < < a class = "reference external" href = "mailto:bcl%40redhat.com" > bcl< span > @ < / span > redhat< span > . < / span > com< / a > > < / td >
< / tr >
< / tbody >
< / table >
< p > livemedia-creator uses < a class = "reference external" href = "https://github.com/rhinstaller/anaconda" > Anaconda< / a > ,
< a class = "reference external" href = "https://github.com/rhinstaller/pykickstart" > kickstart< / a > and < a class = "reference external" href = "https://github.com/rhinstaller/lorax" > Lorax< / a > to create bootable media that use the
same install path as a normal system installation. It can be used to make live
isos, bootable (partitioned) disk images, tarfiles, and filesystem images for
use with virtualization and container solutions like libvirt, docker, and
OpenStack.< / p >
2016-03-18 23:30:48 +00:00
< p > The general idea is to use qemu with kickstart and an Anaconda boot.iso to
install into a disk image and then use the disk image to create the bootable
2015-05-11 23:44:09 +00:00
media.< / p >
2018-03-15 20:53:58 +00:00
< p > livemedia-creator – help will describe all of the options available. At the
2015-05-11 23:44:09 +00:00
minimum you need:< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > --make-iso< / span > < / code > to create a final bootable .iso or one of the other < code class = "docutils literal" > < span class = "pre" > --make-*< / span > < / code > options.< / p >
< p > < code class = "docutils literal" > < span class = "pre" > --iso< / span > < / code > to specify the Anaconda install media to use with qemu.< / p >
< p > < code class = "docutils literal" > < span class = "pre" > --ks< / span > < / code > to select the kickstart file describing what to install.< / p >
2016-03-18 23:30:48 +00:00
< p > To use livemedia-creator with virtualization you will need to have qemu installed.< / p >
2016-11-29 17:27:44 +00:00
< p > If you are going to be using Anaconda directly, with < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > mode, make sure
2016-03-18 23:30:48 +00:00
you have the anaconda-tui package installed.< / p >
2015-05-11 23:44:09 +00:00
< p > Conventions used in this document:< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > lmc< / span > < / code > is an abbreviation for livemedia-creator.< / p >
< p > < code class = "docutils literal" > < span class = "pre" > builder< / span > < / code > is the system where livemedia-creator is being run< / p >
< p > < code class = "docutils literal" > < span class = "pre" > image< / span > < / code > is the disk image being created by running livemedia-creator< / p >
2016-03-18 23:30:48 +00:00
< div class = "section" id = "livemedia-creator-cmdline-arguments" >
< h2 > livemedia-creator cmdline arguments< a class = "headerlink" href = "#livemedia-creator-cmdline-arguments" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Create Live Install Media< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > usage< / span > < span class = "p" > :< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > h< / span > < span class = "p" > ]< / span >
< span class = "p" > (< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > iso< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > disk< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > fsimage< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > appliance< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > ami< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > tar< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > pxe< / span > < span class = "o" > -< / span > < span class = "n" > live< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > ostree< / span > < span class = "o" > -< / span > < span class = "n" > live< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > oci< / span > < span class = "o" > |< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > vagrant< / span > < span class = "p" > )< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "n" > ISO< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > -< / span > < span class = "n" > only< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > -< / span > < span class = "n" > name< / span > < span class = "n" > ISO_NAME< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "n" > KS< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > only< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > no< / span > < span class = "o" > -< / span > < span class = "n" > virt< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > proxy< / span > < span class = "n" > PROXY< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > anaconda< / span > < span class = "o" > -< / span > < span class = "n" > arg< / span > < span class = "n" > ANACONDA_ARGS< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > armplatform< / span > < span class = "n" > ARMPLATFORM< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > location< / span > < span class = "n" > LOCATION< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > logfile< / span > < span class = "n" > LOGFILE< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > lorax< / span > < span class = "o" > -< / span > < span class = "n" > templates< / span > < span class = "n" > LORAX_TEMPLATES< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > tmp< / span > < span class = "n" > TMP< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > resultdir< / span > < span class = "n" > RESULT_DIR< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > macboot< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > nomacboot< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > disk< / span > < span class = "o" > -< / span > < span class = "n" > image< / span > < span class = "n" > DISK_IMAGE< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > keep< / span > < span class = "o" > -< / span > < span class = "n" > image< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > fs< / span > < span class = "o" > -< / span > < span class = "n" > image< / span > < span class = "n" > FS_IMAGE< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > name< / span > < span class = "n" > IMAGE_NAME< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > fs< / span > < span class = "o" > -< / span > < span class = "n" > label< / span > < span class = "n" > FS_LABEL< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "nb" > type< / span > < span class = "n" > IMAGE_TYPE< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > qemu< / span > < span class = "o" > -< / span > < span class = "n" > arg< / span > < span class = "n" > QEMU_ARGS< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > qcow2< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > qcow2< / span > < span class = "o" > -< / span > < span class = "n" > arg< / span > < span class = "n" > QEMU_ARGS< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > compression< / span > < span class = "n" > COMPRESSION< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > compress< / span > < span class = "o" > -< / span > < span class = "n" > arg< / span > < span class = "n" > COMPRESS_ARGS< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > app< / span > < span class = "o" > -< / span > < span class = "n" > name< / span > < span class = "n" > APP_NAME< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > app< / span > < span class = "o" > -< / span > < span class = "n" > template< / span > < span class = "n" > APP_TEMPLATE< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > app< / span > < span class = "o" > -< / span > < span class = "n" > file< / span > < span class = "n" > APP_FILE< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > ram< / span > < span class = "n" > MEMORY< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > vcpus< / span > < span class = "n" > VCPUS< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > vnc< / span > < span class = "n" > VNC< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > arch< / span > < span class = "n" > ARCH< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > kernel< / span > < span class = "o" > -< / span > < span class = "n" > args< / span > < span class = "n" > KERNEL_ARGS< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > ovmf< / span > < span class = "o" > -< / span > < span class = "n" > path< / span > < span class = "n" > OVMF_PATH< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > virt< / span > < span class = "o" > -< / span > < span class = "n" > uefi< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > no< / span > < span class = "o" > -< / span > < span class = "n" > kvm< / span > < span class = "p" > ]< / span >
2018-03-15 20:53:58 +00:00
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "k" > with< / span > < span class = "o" > -< / span > < span class = "n" > rng< / span > < span class = "n" > WITH_RNG< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > dracut< / span > < span class = "o" > -< / span > < span class = "n" > arg< / span > < span class = "n" > DRACUT_ARGS< / span > < span class = "p" > ]< / span >
2016-11-29 17:27:44 +00:00
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > live< / span > < span class = "o" > -< / span > < span class = "n" > rootfs< / span > < span class = "o" > -< / span > < span class = "n" > size< / span > < span class = "n" > LIVE_ROOTFS_SIZE< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > live< / span > < span class = "o" > -< / span > < span class = "n" > rootfs< / span > < span class = "o" > -< / span > < span class = "n" > keep< / span > < span class = "o" > -< / span > < span class = "n" > size< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > oci< / span > < span class = "o" > -< / span > < span class = "n" > config< / span > < span class = "n" > OCI_CONFIG< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > oci< / span > < span class = "o" > -< / span > < span class = "n" > runtime< / span > < span class = "n" > OCI_RUNTIME< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > vagrant< / span > < span class = "o" > -< / span > < span class = "n" > metadata< / span > < span class = "n" > VAGRANT_METADATA< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > vagrantfile< / span > < span class = "n" > VAGRANTFILE< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > title< / span > < span class = "n" > TITLE< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > project< / span > < span class = "n" > PROJECT< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > releasever< / span > < span class = "n" > RELEASEVER< / span > < span class = "p" > ]< / span >
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > volid< / span > < span class = "n" > VOLID< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > squashfs_args< / span > < span class = "n" > SQUASHFS_ARGS< / span > < span class = "p" > ]< / span >
2017-11-28 17:18:51 +00:00
< span class = "p" > [< / span > < span class = "o" > --< / span > < span class = "n" > timeout< / span > < span class = "n" > TIMEOUT< / span > < span class = "p" > ]< / span > < span class = "p" > [< / span > < span class = "o" > -< / span > < span class = "n" > V< / span > < span class = "p" > ]< / span >
2016-11-29 17:27:44 +00:00
< / pre > < / div >
< / div >
2016-03-18 23:30:48 +00:00
< dl class = "docutils" >
< dt > Options:< / dt >
< dd > < table class = "first last docutils option-list" frame = "void" rules = "none" >
< col class = "option" / >
< col class = "description" / >
< tbody valign = "top" >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-iso=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a live iso< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-disk=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a partitioned disk image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-fsimage=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a filesystem image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-appliance=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build an appliance image and XML description< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-ami=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build an ami image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-tar=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a tar of the root filesystem< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-pxe-live=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a live pxe boot squashfs image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-ostree-live=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a live pxe boot squashfs image of Atomic Host< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-oci=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build an Open Container Initiative image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --make-vagrant=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Build a Vagrant Box image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --iso< / span > < / kbd > < / td >
< td > Anaconda installation .iso path to use for qemu< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --iso-only=False< / span > < / kbd > < / td >
< / tr >
2018-03-15 20:53:58 +00:00
< tr > < td >   < / td > < td > Remove all iso creation artifacts except the boot.iso, combine with – iso-name to rename the boot.iso< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --iso-name< / span > < / kbd > < / td >
2018-03-15 20:53:58 +00:00
< td > Name of output iso file for – iso-only. Default is boot.iso< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --ks< / span > < / kbd > < / td >
< td > Kickstart file defining the install.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --image-only=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Exit after creating fs/disk image.< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --no-virt=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Run anaconda directly on host instead of using qemu< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --proxy< / span > < / kbd > < / td >
< td > proxy URL to use for the install< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --anaconda-arg< / span > < / kbd > < / td >
< td > Additional argument to pass to anaconda (no-virt mode). Pass once for each argument< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --armplatform< / span > < / kbd > < / td >
< td > the platform to use when creating images for ARM, i.e., highbank, mvebu, omap, tegra, etc.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --location< / span > < / kbd > < / td >
< td > location of iso directory tree with initrd.img and vmlinuz. Used to run qemu with a newer initrd than the iso.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --logfile=./livemedia.log< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Name and path for primary logfile, other logs will be created in the same directory.< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --lorax-templates< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Path to mako templates for lorax< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --tmp=/var/tmp< / span > < / kbd > < / td >
< td > Top level temporary directory< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --resultdir< / span > < / kbd > < / td >
< td > Directory to copy the resulting images and iso into. Defaults to the temporary working directory< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --macboot=True< / span > < / kbd > < / td >
< td > Undocumented< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --nomacboot=True< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Undocumented< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --disk-image< / span > < / kbd > < / td >
< td > Path to existing disk image to use for creating final image.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --keep-image=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Keep raw disk image after .iso creation< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --fs-image< / span > < / kbd > < / td >
< td > Path to existing filesystem image to use for creating final image.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --image-name< / span > < / kbd > < / td >
< td > Name of output file to create. Used for tar, fs and disk image. Default is a random name.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --fs-label=Anaconda< / span > < / kbd > < / td >
< / tr >
2018-03-15 20:53:58 +00:00
< tr > < td >   < / td > < td > Label to set on fsimage, default is ‘ Anaconda’ < / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --image-type< / span > < / kbd > < / td >
2018-03-15 20:53:58 +00:00
< td > Create an image with qemu-img. See qemu-img – help for supported formats.< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --qemu-arg=[]< / span > < / kbd > < / td >
< td > Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --qcow2=False< / span > < / kbd > < / td >
< td > Create qcow2 image instead of raw sparse image when making disk images.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --qcow2-arg=[]< / span > < / kbd > < / td >
< td > Arguments to pass to qemu-img. Pass once for each argument, they will be used for ALL calls to qemu-img.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --compression=xz< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Compression binary for make-tar. xz, lzma, gzip, and bzip2 are supported. xz is the default.< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --compress-arg=[]< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Arguments to pass to compression. Pass once for each argument< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --app-name< / span > < / kbd > < / td >
< td > Name of appliance to pass to template< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --app-template< / span > < / kbd > < / td >
< td > Path to template to use for appliance data.< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --app-file=appliance.xml< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Appliance template results file.< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --ram=1024< / span > < / kbd > < / td >
< td > Memory to allocate for installer in megabytes.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --vcpus< / span > < / kbd > < / td >
< td > Passed to qemu -smp command< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --vnc< / span > < / kbd > < / td >
< td > Passed to qemu -display command. eg. vnc=127.0.0.1:5, default is to choose the first unused vnc port.< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --arch< / span > < / kbd > < / td >
< td > System arch to build for. Used to select qemu-system-* command. Defaults to qemu-system-< arch> < / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --kernel-args< / span > < / kbd > < / td >
< td > Additional argument to pass to the installation kernel< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
2016-05-23 23:55:51 +00:00
< kbd > < span class = "option" > --ovmf-path=/usr/share/edk2/ovmf/< / span > < / kbd > < / td >
2016-03-18 23:30:48 +00:00
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Path to OVMF firmware< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --virt-uefi=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Use OVMF firmware to boot the VM in UEFI mode< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --no-kvm=False< / span > < / kbd > < / td >
< td > Skip using kvm with qemu even if it is available.< / td > < / tr >
2018-03-15 20:53:58 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --with-rng=/dev/random< / span > < / kbd > < / td >
< / tr >
< tr > < td >   < / td > < td > RNG device for QEMU (none for no RNG)< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --dracut-arg< / span > < / kbd > < / td >
< td > Argument to pass to dracut when rebuilding the initramfs. Pass this once for each argument. NOTE: this overrides the default. (default: )< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --live-rootfs-size=0< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Size of root filesystem of live image in GiB< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --live-rootfs-keep-size=False< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Keep the original size of root filesystem in live image< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --oci-config< / span > < / kbd > < / td >
< td > config.json OCI configuration file< / td > < / tr >
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --oci-runtime< / span > < / kbd > < / td >
< td > runtime.json OCI configuration file< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --vagrant-metadata< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > optional metadata.json file< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --vagrantfile< / span > < / kbd > < / td >
< td > optional vagrantfile< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --title=Linux Live Media< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > Substituted for @ TITLE@ in bootloader config files< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --project=Linux< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > substituted for @ PROJECT@ in bootloader config files< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" colspan = "2" >
2018-03-15 20:53:58 +00:00
< kbd > < span class = "option" > --releasever=28< / span > < / kbd > < / td >
2016-03-18 23:30:48 +00:00
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > substituted for @ VERSION@ in bootloader config files< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --volid< / span > < / kbd > < / td >
< td > volume id< / td > < / tr >
< tr > < td class = "option-group" colspan = "2" >
< kbd > < span class = "option" > --squashfs_args< / span > < / kbd > < / td >
< / tr >
2017-11-28 17:18:51 +00:00
< tr > < td >   < / td > < td > additional squashfs args< / td > < / tr >
2016-03-18 23:30:48 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > --timeout< / span > < / kbd > < / td >
< td > Cancel installer after X minutes< / td > < / tr >
2017-11-28 17:18:51 +00:00
< tr > < td class = "option-group" >
< kbd > < span class = "option" > -V< / span > < / kbd > < / td >
2018-03-15 20:53:58 +00:00
< td > show program’ s version number and exit< / td > < / tr >
2016-03-18 23:30:48 +00:00
< / tbody >
< / table >
< / dd >
< / dl >
< / div >
2015-05-11 23:44:09 +00:00
< div class = "section" id = "quickstart" >
< h2 > Quickstart< a class = "headerlink" href = "#quickstart" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Run this to create a bootable live iso:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > sudo< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > iso< / span > \
< span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > extra< / span > < span class = "o" > /< / span > < span class = "n" > iso< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =./< / span > < span class = "n" > docs< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > livemedia< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
< p > You can run it directly from the lorax git repo like this:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > sudo PATH=./src/sbin/:$PATH PYTHONPATH=./src/ ./src/sbin/livemedia-creator \
2015-05-11 23:44:09 +00:00
--make-iso --iso=/extra/iso/boot.iso \
--ks=./docs/fedora-livemedia.ks --lorax-templates=./share/
< / pre > < / div >
< / div >
2016-03-18 23:30:48 +00:00
< p > You can observe the installation using vnc. The logs will show what port was
2016-11-29 17:27:44 +00:00
chosen, or you can use a specific port by passing it. eg. < code class = "docutils literal" > < span class = "pre" > --vnc< / span > < span class = "pre" > vnc:127.0.0.1:5< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< p > This is usually a good idea when testing changes to the kickstart. lmc tries
to monitor the logs for fatal errors, but may not catch everything.< / p >
< / div >
< div class = "section" id = "how-iso-creation-works" >
< h2 > How ISO creation works< a class = "headerlink" href = "#how-iso-creation-works" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > There are 2 stages, the install stage which produces a disk or filesystem image
as its output, and the boot media creation which uses the image as its input.
Normally you would run both stages, but it is possible to stop after the
2016-11-29 17:27:44 +00:00
install stage, by using < code class = "docutils literal" > < span class = "pre" > --image-only< / span > < / code > , or to skip the install stage and use
a previously created disk image by passing < code class = "docutils literal" > < span class = "pre" > --disk-image< / span > < / code > or < code class = "docutils literal" > < span class = "pre" > --fs-image< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< p > When creating an iso qemu boots using the passed Anaconda installer iso
2016-11-29 17:27:44 +00:00
and installs the system based on the kickstart. The < code class = "docutils literal" > < span class = "pre" > %post< / span > < / code > section of the
2015-05-11 23:44:09 +00:00
kickstart is used to customize the installed system in the same way that
current spin-kickstarts do.< / p >
< p > livemedia-creator monitors the install process for problems by watching the
install logs. They are written to the current directory or to the base
2018-03-15 20:53:58 +00:00
directory specified by the – logfile command. You can also monitor the install
2016-03-18 23:30:48 +00:00
by using a vnc client. This is recommended when first modifying a kickstart,
since there are still places where Anaconda may get stuck without the log
monitor catching it.< / p >
2015-05-11 23:44:09 +00:00
< p > The output from this process is a partitioned disk image. kpartx can be used
to mount and examine it when there is a problem with the install. It can also
be booted using kvm.< / p >
2018-03-15 20:53:58 +00:00
< p > When creating an iso the disk image’ s / partition is copied into a formatted
2016-03-18 23:30:48 +00:00
filesystem image which is then used as the input to lorax for creation of the
final media.< / p >
< p > The final image is created by lorax, using the templates in /usr/share/lorax/live/
2016-11-29 17:27:44 +00:00
or the live directory below the directory specified by < code class = "docutils literal" > < span class = "pre" > --lorax-templates< / span > < / code > . The
2016-03-18 23:30:48 +00:00
templates are written using the Mako template system with some extra commands
added by lorax.< / p >
2016-02-13 00:06:33 +00:00
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
2018-03-15 20:53:58 +00:00
< p class = "last" > The output from – make-iso includes the artifacts used to create the boot.iso;
2016-02-13 00:06:33 +00:00
the kernel, initrd, the squashfs filesystem, etc. If you only want the
2016-11-29 17:27:44 +00:00
boot.iso you can pass < code class = "docutils literal" > < span class = "pre" > --iso-only< / span > < / code > and the other files will be removed. You
can also name the iso by using < code class = "docutils literal" > < span class = "pre" > --iso-name< / span > < span class = "pre" > my-live.iso< / span > < / code > .< / p >
2016-02-13 00:06:33 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "kickstarts" >
< h2 > Kickstarts< a class = "headerlink" href = "#kickstarts" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > The docs/ directory includes several example kickstarts, one to create a live
desktop iso using GNOME, and another to create a minimal disk image. When
creating your own kickstarts you should start with the minimal example, it
includes several needed packages that are not always included by dependencies.< / p >
< p > Or you can use existing spin kickstarts to create live media with a few
changes. Here are the steps I used to convert the Fedora XFCE spin.< / p >
< ol class = "arabic" >
< li > < p class = "first" > Flatten the xfce kickstart using ksflatten< / p >
< / li >
2018-03-15 20:53:58 +00:00
< li > < p class = "first" > Add zerombr so you don’ t get the disk init dialog< / p >
2015-05-11 23:44:09 +00:00
< / li >
2018-03-15 20:53:58 +00:00
< li > < p class = "first" > Add clearpart – all< / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Add swap partition< / p >
< / li >
< li > < p class = "first" > bootloader target< / p >
< / li >
< li > < p class = "first" > Add shutdown to the kickstart< / p >
< / li >
2018-03-15 20:53:58 +00:00
< li > < p class = "first" > Add network – bootproto=dhcp – activate to activate the network
2015-05-11 23:44:09 +00:00
This works for F16 builds but for F15 and before you need to pass
something on the cmdline that activate the network, like sshd:< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < p > < code class = "docutils literal" > < span class = "pre" > livemedia-creator< / span > < span class = "pre" > --kernel-args=" sshd" < / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / div > < / blockquote >
< / li >
< li > < p class = "first" > Add a root password:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > rootpw< / span > < span class = "n" > rootme< / span >
< span class = "n" > network< / span > < span class = "o" > --< / span > < span class = "n" > bootproto< / span > < span class = "o" > =< / span > < span class = "n" > dhcp< / span > < span class = "o" > --< / span > < span class = "n" > activate< / span >
< span class = "n" > zerombr< / span >
< span class = "n" > clearpart< / span > < span class = "o" > --< / span > < span class = "nb" > all< / span >
< span class = "n" > bootloader< / span > < span class = "o" > --< / span > < span class = "n" > location< / span > < span class = "o" > =< / span > < span class = "n" > mbr< / span >
< span class = "n" > part< / span > < span class = "n" > swap< / span > < span class = "o" > --< / span > < span class = "n" > size< / span > < span class = "o" > =< / span > < span class = "mi" > 512< / span >
< span class = "n" > shutdown< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
< / li >
< li > < p class = "first" > In the livesys script section of the %post remove the root password. This
really depends on how the spin wants to work. You could add the live user
that you create to the %wheel group so that sudo works if you wanted to.< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < p > < code class = "docutils literal" > < span class = "pre" > passwd< / span > < span class = "pre" > -d< / span > < span class = "pre" > root< / span > < span class = "pre" > > < / span > < span class = "pre" > /dev/null< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / div > < / blockquote >
< / li >
< li > < p class = "first" > Remove /etc/fstab in %post, dracut handles mounting the rootfs< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > cat< / span > < span class = "pre" > /dev/null< / span > < span class = "pre" > > < / span > < span class = "pre" > /dev/fstab< / span > < / code > < / p >
2018-03-15 20:53:58 +00:00
< p > Do this only for live iso’ s, the filesystem will be mounted read only if
2015-05-11 23:44:09 +00:00
there is no /etc/fstab< / p >
< / li >
2018-03-15 20:53:58 +00:00
< li > < p class = "first" > Don’ t delete initramfs files from /boot in %post< / p >
2015-05-11 23:44:09 +00:00
< / li >
2018-03-15 20:53:58 +00:00
< li > < p class = "first" > When creating live iso’ s you need to have, at least, these packages in the %package section::
2015-10-07 18:25:53 +00:00
dracut-config-generic
dracut-live
-dracut-config-rescue
grub-efi
memtest86+
syslinux< / p >
2015-05-11 23:44:09 +00:00
< / li >
< / ol >
2016-03-18 23:30:48 +00:00
< p > One drawback to using qemu is that it pulls the packages from the repo each
time you run it. To speed things up you either need a local mirror of the
packages, or you can use a caching proxy. When using a proxy you pass it to
livemedia-creator like this:< / p >
2015-05-11 23:44:09 +00:00
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > --proxy=http://proxy.yourdomain.com:3128< / span > < / code > < / div > < / blockquote >
2015-05-11 23:44:09 +00:00
< p > You also need to use a specific mirror instead of mirrormanager so that the
packages will get cached, so your kickstart url would look like:< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > url< / span > < span class = "pre" > --url=" http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/" < / span > < / code > < / div > < / blockquote >
2018-03-15 20:53:58 +00:00
< p > You can also add an update repo, but don’ t name it updates. Add – proxy to it
2016-03-18 23:30:48 +00:00
as well.< / p >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "anaconda-image-install-no-virt" >
< h2 > Anaconda image install (no-virt)< a class = "headerlink" href = "#anaconda-image-install-no-virt" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-11-29 17:27:44 +00:00
< p > You can create images without using qemu by passing < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > on the
2018-03-15 20:53:58 +00:00
cmdline. This will use Anaconda’ s directory install feature to handle the
2016-03-18 23:30:48 +00:00
install. There are a couple of things to keep in mind when doing this:< / p >
2015-05-11 23:44:09 +00:00
< ol class = "arabic simple" >
< li > It will be most reliable when building images for the same release that the
host is running. Because Anaconda has expectations about the system it is
running under you may encounter strange bugs if you try to build newer or
older releases.< / li >
2018-03-15 20:53:58 +00:00
< li > Make sure selinux is set to permissive or disabled. It won’ t install
2015-05-11 23:44:09 +00:00
correctly with selinux set to enforcing yet.< / li >
2018-03-15 20:53:58 +00:00
< li > It may totally trash your host. So far I haven’ t had this happen, but the
2015-05-11 23:44:09 +00:00
possibility exists that a bug in Anaconda could result in it operating on
real devices. I recommend running it in a virt or on a system that you can
afford to lose all data from.< / li >
< / ol >
< p > The logs from anaconda will be placed in an ./anaconda/ directory in either
2018-03-15 20:53:58 +00:00
the current directory or in the directory used for – logfile< / p >
2015-05-11 23:44:09 +00:00
< p > Example cmdline:< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > livemedia-creator< / span > < span class = "pre" > --make-iso< / span > < span class = "pre" > --no-virt< / span > < span class = "pre" > --ks=./fedora-livemedia.ks< / span > < / code > < / p >
2015-12-04 18:12:19 +00:00
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
2018-03-15 20:53:58 +00:00
< p class = "last" > Using no-virt to create a partitioned disk image (eg. – make-disk or
– make-vagrant) will only create disks usable on the host platform (BIOS
2015-12-04 18:12:19 +00:00
or UEFI). You can create BIOS partitioned disk images on UEFI by using
virt.< / p >
< / div >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "ami-images" >
< h2 > AMI Images< a class = "headerlink" href = "#ami-images" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-03-15 20:53:58 +00:00
< p > Amazon EC2 images can be created by using the – make-ami switch and an appropriate
2015-05-11 23:44:09 +00:00
kickstart file. All of the work to customize the image is handled by the kickstart.
The example currently included was modified from the cloud-kickstarts version so
that it would work with livemedia-creator.< / p >
< p > Example cmdline:< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > livemedia-creator< / span > < span class = "pre" > --make-ami< / span > < span class = "pre" > --iso=/path/to/boot.iso< / span > < span class = "pre" > --ks=./docs/fedora-livemedia-ec2.ks< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< p > This will produce an ami-root.img file in the working directory.< / p >
< p > At this time I have not tested the image with EC2. Feedback would be welcome.< / p >
< / div >
< div class = "section" id = "appliance-creation" >
< h2 > Appliance Creation< a class = "headerlink" href = "#appliance-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
2018-03-15 20:53:58 +00:00
< p > livemedia-creator can now replace appliance-tools by using the – make-appliance
2015-05-11 23:44:09 +00:00
switch. This will create the partitioned disk image and an XML file that can be
used with virt-image to setup a virtual system.< / p >
< p > The XML is generated using the Mako template from
/usr/share/lorax/appliance/libvirt.xml You can use a different template by
2016-11-29 17:27:44 +00:00
passing < code class = "docutils literal" > < span class = "pre" > --app-template< / span > < span class = "pre" > < template< / span > < span class = "pre" > path> < / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< p > Documentation on the Mako template system can be found at the < a class = "reference external" href = "http://docs.makotemplates.org/en/latest/index.html" > Mako site< / a > < / p >
< p > The name of the final output XML is appliance.xml, this can be changed with
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > --app-file< / span > < span class = "pre" > < file< / span > < span class = "pre" > path> < / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< p > The following variables are passed to the template:< / p >
< blockquote >
< div > < dl class = "docutils" >
2016-11-29 17:27:44 +00:00
< dt > < code class = "docutils literal" > < span class = "pre" > disks< / span > < / code > < / dt >
2015-05-11 23:44:09 +00:00
< dd > < p class = "first" > A list of disk_info about each disk.
Each entry has the following attributes:< / p >
< blockquote class = "last" >
2016-11-29 17:27:44 +00:00
< div > < p > < code class = "docutils literal" > < span class = "pre" > name< / span > < / code >
2015-05-11 23:44:09 +00:00
base name of the disk image file< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > format< / span > < / code >
2018-03-15 20:53:58 +00:00
“raw”< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > checksum_type< / span > < / code >
2018-03-15 20:53:58 +00:00
“sha256”< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > checksum< / span > < / code >
2015-05-11 23:44:09 +00:00
sha256 checksum of the disk image< / p >
< / div > < / blockquote >
< / dd >
< / dl >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > name< / span > < / code >
2018-03-15 20:53:58 +00:00
Name of appliance, from – app-name argument< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > arch< / span > < / code >
2015-05-11 23:44:09 +00:00
Architecture< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > memory< / span > < / code >
Memory in KB (from < code class = "docutils literal" > < span class = "pre" > --ram< / span > < / code > )< / p >
< p > < code class = "docutils literal" > < span class = "pre" > vcpus< / span > < / code >
from < code class = "docutils literal" > < span class = "pre" > --vcpus< / span > < / code > < / p >
< p > < code class = "docutils literal" > < span class = "pre" > networks< / span > < / code >
2015-05-11 23:44:09 +00:00
list of networks from the kickstart or []< / p >
2016-11-29 17:27:44 +00:00
< p > < code class = "docutils literal" > < span class = "pre" > title< / span > < / code >
from < code class = "docutils literal" > < span class = "pre" > --title< / span > < / code > < / p >
< p > < code class = "docutils literal" > < span class = "pre" > project< / span > < / code >
from < code class = "docutils literal" > < span class = "pre" > --project< / span > < / code > < / p >
< p > < code class = "docutils literal" > < span class = "pre" > releasever< / span > < / code >
from < code class = "docutils literal" > < span class = "pre" > --releasever< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / div > < / blockquote >
< p > The created image can be imported into libvirt using:< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > virt-image< / span > < span class = "pre" > appliance.xml< / span > < / code > < / div > < / blockquote >
< p > You can also create qcow2 appliance images using < code class = "docutils literal" > < span class = "pre" > --image-type=qcow2< / span > < / code > , for example:< / p >
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > sudo< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > appliance< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =./< / span > < span class = "n" > docs< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span > \
< span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "nb" > type< / span > < span class = "o" > =< / span > < span class = "n" > qcow2< / span > < span class = "o" > --< / span > < span class = "n" > app< / span > < span class = "o" > -< / span > < span class = "n" > file< / span > < span class = "o" > =< / span > < span class = "n" > minimal< / span > < span class = "o" > -< / span > < span class = "n" > test< / span > < span class = "o" > .< / span > < span class = "n" > xml< / span > < span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "n" > minimal< / span > < span class = "o" > -< / span > < span class = "n" > test< / span > < span class = "o" > .< / span > < span class = "n" > img< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "filesystem-image-creation" >
< h2 > Filesystem Image Creation< a class = "headerlink" href = "#filesystem-image-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-03-18 23:30:48 +00:00
< p > livemedia-creator can be used to create un-partitined filesystem images using
2016-11-29 17:27:44 +00:00
the < code class = "docutils literal" > < span class = "pre" > --make-fsimage< / span > < / code > option. As of version 21.8 this works with both qemu and
2016-03-18 23:30:48 +00:00
no-virt modes of operation. Previously it was only available with no-virt.< / p >
2015-05-11 23:44:09 +00:00
< p > Kickstarts should have a single / partition with no extra mountpoints.< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > livemedia-creator< / span > < span class = "pre" > --make-fsimage< / span > < span class = "pre" > --iso=/path/to/boot.iso< / span > < span class = "pre" > --ks=./docs/fedora-minimal.ks< / span > < / code > < / div > < / blockquote >
< p > You can name the output image with < code class = "docutils literal" > < span class = "pre" > --image-name< / span > < / code > and set a label on the filesystem with < code class = "docutils literal" > < span class = "pre" > --fs-label< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "tar-file-creation" >
< h2 > TAR File Creation< a class = "headerlink" href = "#tar-file-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-11-29 17:27:44 +00:00
< p > The < code class = "docutils literal" > < span class = "pre" > --make-tar< / span > < / code > command can be used to create a tar of the root filesystem. By
2015-05-11 23:44:09 +00:00
default it is compressed using xz, but this can be changed using the
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > --compression< / span > < / code > and < code class = "docutils literal" > < span class = "pre" > --compress-arg< / span > < / code > options. This option works with both virt and
2015-05-11 23:44:09 +00:00
no-virt install methods.< / p >
2016-11-29 17:27:44 +00:00
< p > As with < code class = "docutils literal" > < span class = "pre" > --make-fsimage< / span > < / code > the kickstart should be limited to a single / partition.< / p >
2015-05-11 23:44:09 +00:00
< p > For example:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > tar< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =./< / span > < span class = "n" > docs< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span > \
< span class = "o" > --< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > name< / span > < span class = "o" > =< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > root< / span > < span class = "o" > .< / span > < span class = "n" > tar< / span > < span class = "o" > .< / span > < span class = "n" > xz< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
< / div >
< div class = "section" id = "live-image-for-pxe-boot" >
< h2 > Live Image for PXE Boot< a class = "headerlink" href = "#live-image-for-pxe-boot" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-11-29 17:27:44 +00:00
< p > The < code class = "docutils literal" > < span class = "pre" > --make-pxe-live< / span > < / code > command will produce squashfs image containing live root
2015-05-11 23:44:09 +00:00
filesystem that can be used for pxe boot. Directory with results will contain
the live image, kernel image, initrd image and template of pxe configuration
for the images.< / p >
< / div >
< div class = "section" id = "atomic-live-image-for-pxe-boot" >
< h2 > Atomic Live Image for PXE Boot< a class = "headerlink" href = "#atomic-live-image-for-pxe-boot" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-11-29 17:27:44 +00:00
< p > The < code class = "docutils literal" > < span class = "pre" > --make-ostree-live< / span > < / code > command will produce the same result as < code class = "docutils literal" > < span class = "pre" > --make-pxe-live< / span > < / code >
2015-05-11 23:44:09 +00:00
for installations of Atomic Host. Example kickstart for such an installation
using Atomic installer iso with local repo included in the image can be found
in docs/rhel-atomic-pxe-live.ks.< / p >
2016-11-29 17:27:44 +00:00
< p > The PXE images can also be created with < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > by using the example
2016-05-23 23:55:51 +00:00
kickstart in docs/fedora-atomic-pxe-live-novirt.ks. This also works inside the
mock environment.< / p >
2015-05-11 23:44:09 +00:00
< / div >
2016-03-18 23:30:48 +00:00
< div class = "section" id = "using-mock-and-no-virt-to-create-images" >
2018-03-15 20:53:58 +00:00
< h2 > Using Mock and – no-virt to Create Images< a class = "headerlink" href = "#using-mock-and-no-virt-to-create-images" title = "Permalink to this headline" > ¶< / a > < / h2 >
2015-05-11 23:44:09 +00:00
< p > As of lorax version 22.2 you can use livemedia-creator and anaconda version
2018-03-15 20:53:58 +00:00
22.15 inside of a mock chroot with – make-iso and – make-fsimage.< / p >
2015-10-07 18:25:53 +00:00
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
2017-11-28 17:18:51 +00:00
< p class = "last" > As of mock 1.3.4 you need to use < code class = "docutils literal" > < span class = "pre" > --old-chroot< / span > < / code > with mock. Mock now defaults to using systemd-nspawn
which cannot create the needed loop device nodes. Passing < code class = "docutils literal" > < span class = "pre" > --old-chroot< / span > < / code > will use the old system
where < code class = "docutils literal" > < span class = "pre" > /dev/loop*< / span > < / code > is setup for you.< / p >
2015-10-07 18:25:53 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< p > On the host system:< / p >
< ol class = "arabic" >
< li > < p class = "first" > yum install -y mock< / p >
< / li >
< li > < p class = "first" > Add a user to the mock group to use for running mock. eg. builder< / p >
< / li >
< li > < p class = "first" > Create a new /etc/mock/ config file based on the rawhide one, or modify the
existing one so that the following options are setup:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > config_opts< / span > < span class = "p" > [< / span > < span class = "s1" > ' chroot_setup_cmd' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "s1" > ' install @buildsys-build anaconda-tui lorax' < / span >
2015-05-11 23:44:09 +00:00
2016-05-23 23:55:51 +00:00
< span class = "c1" > # build results go into /home/builder/results/< / span >
< span class = "n" > config_opts< / span > < span class = "p" > [< / span > < span class = "s1" > ' plugin_conf' < / span > < span class = "p" > ][< / span > < span class = "s1" > ' bind_mount_opts' < / span > < span class = "p" > ][< / span > < span class = "s1" > ' dirs' < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > ((< / span > < span class = "s1" > ' /home/builder/results' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' /results/' < / span > < span class = "p" > ))< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
2015-10-07 18:25:53 +00:00
< p > If you are creating images for a branched release of Fedora you should also enable
the updates-testing repository so that you get the latest builds in your mock chroot.< / p >
2015-05-11 23:44:09 +00:00
< / li >
< / ol >
< p > The following steps are run as the builder user who is a member of the mock
group.< / p >
2015-10-07 18:25:53 +00:00
< ol class = "arabic" start = "4" >
2015-05-11 23:44:09 +00:00
< li > < p class = "first" > Make a directory for results matching the bind mount above
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > mkdir< / span > < span class = "pre" > ~/results/< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Copy the example kickstarts
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > cp< / span > < span class = "pre" > /usr/share/docs/lorax/*ks< / span > < span class = "pre" > .< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Make sure tar and dracut-network are in the %packages section and that the
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > url< / span > < span class = "pre" > points< / span > < span class = "pre" > to< / span > < span class = "pre" > the< / span > < span class = "pre" > correct< / span > < span class = "pre" > repo< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Init the mock
2018-03-15 20:53:58 +00:00
< code class = "docutils literal" > < span class = "pre" > mock< / span > < span class = "pre" > -r< / span > < span class = "pre" > fedora-rawhide-x86_64< / span > < span class = "pre" > --old-chroot< / span > < span class = "pre" > --init< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Copy the kickstart inside the mock
2018-03-15 20:53:58 +00:00
< code class = "docutils literal" > < span class = "pre" > mock< / span > < span class = "pre" > -r< / span > < span class = "pre" > fedora-rawhide-x86_64< / span > < span class = "pre" > --old-chroot< / span > < span class = "pre" > --copyin< / span > < span class = "pre" > ./fedora-minimal.ks< / span > < span class = "pre" > /root/< / span > < / code > < / p >
2015-05-11 23:44:09 +00:00
< / li >
< li > < p class = "first" > Make a minimal iso:< / p >
2018-03-15 20:53:58 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > mock< / span > < span class = "o" > -< / span > < span class = "n" > r< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > rawhide< / span > < span class = "o" > -< / span > < span class = "n" > x86_64< / span > < span class = "o" > --< / span > < span class = "n" > old< / span > < span class = "o" > -< / span > < span class = "n" > chroot< / span > < span class = "o" > --< / span > < span class = "n" > chroot< / span > < span class = "o" > --< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > no< / span > < span class = "o" > -< / span > < span class = "n" > virt< / span > \
2016-11-29 17:27:44 +00:00
< span class = "o" > --< / span > < span class = "n" > resultdir< / span > < span class = "o" > =/< / span > < span class = "n" > results< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "o" > --< / span > < span class = "n" > logfile< / span > < span class = "o" > =/< / span > < span class = "n" > results< / span > < span class = "o" > /< / span > < span class = "n" > logs< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mf" > 1.< / span > < span class = "n" > log< / span > \
< span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > /< / span > < span class = "n" > root< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
< / li >
< / ol >
< p > Results will be in ./results/try-1 and logs under /results/logs/try-1/
including anaconda logs and livemedia-creator logs. The new iso will be
located at ~/results/try-1/images/boot.iso, and the ~/results/try-1/
directory tree will also contain the vmlinuz, initrd, etc.< / p >
< / div >
2016-03-18 23:30:48 +00:00
< div class = "section" id = "using-mock-and-qemu-to-create-images" >
< h2 > Using Mock and qemu to Create Images< a class = "headerlink" href = "#using-mock-and-qemu-to-create-images" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Version 25.0 of livemedia-creator switches to using qemu for virtualization.
This allows creation of all image types, and use of the KVM on the host if
/dev/kvm is present in the mock environment.< / p >
< p > On the host system:< / p >
< ol class = "arabic" >
< li > < p class = "first" > yum install -y mock< / p >
< / li >
< li > < p class = "first" > Add a user to the mock group to use for running mock. eg. builder< / p >
< / li >
< li > < p class = "first" > Create a new /etc/mock/ config file based on the rawhide one, or modify the
existing one so that the following options are setup:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > config_opts< / span > < span class = "p" > [< / span > < span class = "s1" > ' chroot_setup_cmd' < / span > < span class = "p" > ]< / span > < span class = "o" > =< / span > < span class = "s1" > ' install @buildsys-build lorax qemu' < / span >
2016-03-18 23:30:48 +00:00
2016-05-23 23:55:51 +00:00
< span class = "c1" > # build results go into /home/builder/results/< / span >
< span class = "n" > config_opts< / span > < span class = "p" > [< / span > < span class = "s1" > ' plugin_conf' < / span > < span class = "p" > ][< / span > < span class = "s1" > ' bind_mount_opts' < / span > < span class = "p" > ][< / span > < span class = "s1" > ' dirs' < / span > < span class = "p" > ]< / span > < span class = "o" > .< / span > < span class = "n" > append< / span > < span class = "p" > ((< / span > < span class = "s1" > ' /home/builder/results' < / span > < span class = "p" > ,< / span > < span class = "s1" > ' /results/' < / span > < span class = "p" > ))< / span >
2016-03-18 23:30:48 +00:00
< / pre > < / div >
< / div >
< p > If you are creating images for a branched release of Fedora you should also enable
the updates-testing repository so that you get the latest builds in your mock chroot.< / p >
< / li >
< / ol >
< p > The following steps are run as the builder user who is a member of the mock
group.< / p >
< ol class = "arabic" start = "4" >
< li > < p class = "first" > Make a directory for results matching the bind mount above
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > mkdir< / span > < span class = "pre" > ~/results/< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Copy the example kickstarts
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > cp< / span > < span class = "pre" > /usr/share/docs/lorax/*ks< / span > < span class = "pre" > .< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Make sure tar and dracut-network are in the %packages section and that the
2016-11-29 17:27:44 +00:00
< code class = "docutils literal" > < span class = "pre" > url< / span > < span class = "pre" > points< / span > < span class = "pre" > to< / span > < span class = "pre" > the< / span > < span class = "pre" > correct< / span > < span class = "pre" > repo< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Init the mock
2018-03-15 20:53:58 +00:00
< code class = "docutils literal" > < span class = "pre" > mock< / span > < span class = "pre" > -r< / span > < span class = "pre" > fedora-rawhide-x86_64< / span > < span class = "pre" > --old-chroot< / span > < span class = "pre" > --init< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Copy the kickstart inside the mock
2018-03-15 20:53:58 +00:00
< code class = "docutils literal" > < span class = "pre" > mock< / span > < span class = "pre" > -r< / span > < span class = "pre" > fedora-rawhide-x86_64< / span > < span class = "pre" > --old-chroot< / span > < span class = "pre" > --copyin< / span > < span class = "pre" > ./fedora-minimal.ks< / span > < span class = "pre" > /root/< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Copy the Anaconda boot.iso inside the mock
2018-03-15 20:53:58 +00:00
< code class = "docutils literal" > < span class = "pre" > mock< / span > < span class = "pre" > -r< / span > < span class = "pre" > fedora-rawhide-x86_64< / span > < span class = "pre" > --old-chroot< / span > < span class = "pre" > --copyin< / span > < span class = "pre" > ./boot.iso< / span > < span class = "pre" > /root/< / span > < / code > < / p >
2016-03-18 23:30:48 +00:00
< / li >
< li > < p class = "first" > Make a minimal iso:< / p >
2018-03-15 20:53:58 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > mock< / span > < span class = "o" > -< / span > < span class = "n" > r< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > rawhide< / span > < span class = "o" > -< / span > < span class = "n" > x86_64< / span > < span class = "o" > --< / span > < span class = "n" > old< / span > < span class = "o" > -< / span > < span class = "n" > chroot< / span > < span class = "o" > --< / span > < span class = "n" > chroot< / span > < span class = "o" > --< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > \
2016-11-29 17:27:44 +00:00
< span class = "o" > --< / span > < span class = "n" > resultdir< / span > < span class = "o" > =/< / span > < span class = "n" > results< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "o" > --< / span > < span class = "n" > logfile< / span > < span class = "o" > =/< / span > < span class = "n" > results< / span > < span class = "o" > /< / span > < span class = "n" > logs< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "o" > /< / span > < span class = "k" > try< / span > < span class = "o" > -< / span > < span class = "mf" > 1.< / span > < span class = "n" > log< / span > \
< span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > /< / span > < span class = "n" > root< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > /< / span > < span class = "n" > root< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span >
2016-03-18 23:30:48 +00:00
< / pre > < / div >
< / div >
< / li >
< / ol >
< p > Results will be in ./results/try-1 and logs under /results/logs/try-1/
including anaconda logs and livemedia-creator logs. The new iso will be
located at ~/results/try-1/images/boot.iso, and the ~/results/try-1/
directory tree will also contain the vmlinuz, initrd, etc.< / p >
< p > This will run qemu without kvm support, which is going to be very slow. You can
2016-11-29 17:27:44 +00:00
add < code class = "docutils literal" > < span class = "pre" > mknod< / span > < span class = "pre" > /dev/kvm< / span > < span class = "pre" > c< / span > < span class = "pre" > 10< / span > < span class = "pre" > 232;< / span > < / code > to create the device node before running lmc.< / p >
2016-03-18 23:30:48 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< div class = "section" id = "openstack-image-creation" >
< h2 > OpenStack Image Creation< a class = "headerlink" href = "#openstack-image-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-11-29 17:27:44 +00:00
< p > OpenStack supports partitioned disk images so < code class = "docutils literal" > < span class = "pre" > --make-disk< / span > < / code > can be used to
2018-03-15 20:53:58 +00:00
create images for importing into glance, OpenStack’ s image storage component.
2015-05-11 23:44:09 +00:00
You need to have access to an OpenStack provider that allows image uploads, or
2015-12-04 18:12:19 +00:00
setup your own using the instructions from the < a class = "reference external" href = "https://www.rdoproject.org/Quickstart" > RDO Project< / a > .< / p >
2015-05-11 23:44:09 +00:00
< p > The example kickstart, fedora-openstack.ks, is only slightly different than the
fedora-minimal.ks one. It adds the cloud-init and cloud-utils-growpart
packages. OpenStack supports setting up the image using cloud-init, and
2018-03-15 20:53:58 +00:00
cloud-utils-growpart will grow the image to fit the instance’ s disk size.< / p >
2015-05-11 23:44:09 +00:00
< p > Create a qcow2 image using the kickstart like this:< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > livemedia-creator< / span > < span class = "pre" > --make-disk< / span > < span class = "pre" > --iso=/path/to/boot.iso< / span > < span class = "pre" > --ks=/path/to/fedora-openstack.ks< / span > < span class = "pre" > --image-type=qcow2< / span > < / code > < / div > < / blockquote >
2015-05-11 23:44:09 +00:00
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
2018-03-15 20:53:58 +00:00
< p class = "last" > On the RHEL7 version of lmc < code class = "docutils literal" > < span class = "pre" > --image-type< / span > < / code > isn’ t supported. You can only create a bare partitioned disk image.< / p >
2015-05-11 23:44:09 +00:00
< / div >
< p > Import the resulting disk image into the OpenStack system, either via the web UI, or glance on the cmdline:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > glance< / span > < span class = "n" > image< / span > < span class = "o" > -< / span > < span class = "n" > create< / span > < span class = "o" > --< / span > < span class = "n" > name< / span > < span class = "s2" > " fedora-openstack" < / span > < span class = "o" > --< / span > < span class = "ow" > is< / span > < span class = "o" > -< / span > < span class = "n" > public< / span > < span class = "n" > true< / span > < span class = "o" > --< / span > < span class = "n" > disk< / span > < span class = "o" > -< / span > < span class = "nb" > format< / span > < span class = "n" > qcow2< / span > \
< span class = "o" > --< / span > < span class = "n" > container< / span > < span class = "o" > -< / span > < span class = "nb" > format< / span > < span class = "n" > bare< / span > < span class = "o" > --< / span > < span class = "n" > file< / span > < span class = "o" > ./< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > openstack< / span > < span class = "o" > .< / span > < span class = "n" > qcow2< / span >
2015-05-11 23:44:09 +00:00
< / pre > < / div >
< / div >
2018-03-15 20:53:58 +00:00
< p > If qcow2 wasn’ t used then < code class = "docutils literal" > < span class = "pre" > --disk-format< / span > < / code > should be set to raw.< / p >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "docker-image-creation" >
< h2 > Docker Image Creation< a class = "headerlink" href = "#docker-image-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Use lmc to create a tarfile as described in the < a class = "reference internal" href = "#tar-file-creation" > TAR File Creation< / a > section, but substitute the
fedora-docker.ks example kickstart which removes the requirement for core files and the kernel.< / p >
< p > You can then import the tarfile into docker like this (as root):< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > cat< / span > < span class = "pre" > /var/tmp/fedora-root.tar.xz< / span > < span class = "pre" > |< / span > < span class = "pre" > docker< / span > < span class = "pre" > import< / span > < span class = "pre" > -< / span > < span class = "pre" > fedora-root< / span > < / code > < / div > < / blockquote >
2015-05-11 23:44:09 +00:00
< p > And then run bash inside of it:< / p >
< blockquote >
2016-11-29 17:27:44 +00:00
< div > < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > docker< / span > < span class = "pre" > run< / span > < span class = "pre" > -i< / span > < span class = "pre" > -t< / span > < span class = "pre" > fedora-root< / span > < span class = "pre" > /bin/bash< / span > < / code > < / div > < / blockquote >
2015-05-11 23:44:09 +00:00
< / div >
2015-12-04 18:12:19 +00:00
< div class = "section" id = "open-container-initiative-image-creation" >
< h2 > Open Container Initiative Image Creation< a class = "headerlink" href = "#open-container-initiative-image-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > The OCI is a new specification that is still being worked on. You can read more about it at
< a class = "reference external" href = "https://www.opencontainers.org/" > the Open Container Initiative website< / a > . You can create
OCI images using the following command:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > sudo< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > oci< / span > < span class = "o" > --< / span > < span class = "n" > oci< / span > < span class = "o" > -< / span > < span class = "n" > config< / span > < span class = "o" > /< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > config< / span > < span class = "o" > .< / span > < span class = "n" > json< / span > < span class = "o" > --< / span > < span class = "n" > oci< / span > < span class = "o" > -< / span > < span class = "n" > runtime< / span > < span class = "o" > /< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > runtime< / span > < span class = "o" > .< / span > < span class = "n" > json< / span > \
< span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span >
2015-12-04 18:12:19 +00:00
< / pre > < / div >
< / div >
< p > You must provide the config.json and runtime.json files to be included in the bundle,
their specifications can be found < a class = "reference external" href = "https://github.com/opencontainers/specs" > on the OCI github project< / a >
output will be in the results directory with a default name of bundle.tar.xz< / p >
2018-03-15 20:53:58 +00:00
< p > This will work with < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > and inside a mock since it doesn’ t use any
2015-12-04 18:12:19 +00:00
partitioned disk images.< / p >
< / div >
< div class = "section" id = "vagrant-image-creation" >
< h2 > Vagrant Image Creation< a class = "headerlink" href = "#vagrant-image-creation" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > < a class = "reference external" href = "https://www.vagrantup.com/" > Vagrant< / a > images can be created using the following command:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > sudo< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > vagrant< / span > < span class = "o" > --< / span > < span class = "n" > vagrant< / span > < span class = "o" > -< / span > < span class = "n" > metadata< / span > < span class = "o" > /< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > metadata< / span > < span class = "o" > .< / span > < span class = "n" > json< / span > \
< span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > < span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > vagrant< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span >
2015-12-04 18:12:19 +00:00
< / pre > < / div >
< / div >
< p > The image created is a < a class = "reference external" href = "https://github.com/pradels/vagrant-libvirt" > vagrant-libvirt< / a > provider image and needs to have
vagrant setup with libvirt before you can use it.< / p >
2016-11-29 17:27:44 +00:00
< p > The < code class = "docutils literal" > < span class = "pre" > --vagrant-metadata< / span > < / code > file is optional, it will create a minimal one by
2015-12-04 18:12:19 +00:00
default, and if one is passed it will make sure the disk size is setup
2016-11-29 17:27:44 +00:00
correctly. If you pass a < code class = "docutils literal" > < span class = "pre" > --vagrant-vagrantfile< / span > < / code > it will be included in the
2015-12-04 18:12:19 +00:00
image verbatim. By default no vagrantfile is created.< / p >
< p > There is an example Vagrant kickstart file in the docs directory that sets up
the vagrant user with the default insecure SSH pubkey and a few useful
utilities.< / p >
2016-11-29 17:27:44 +00:00
< p > This also works with < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > , but will not work inside a mock due to its
2015-12-04 18:12:19 +00:00
use of partitioned disk images and qcow2.< / p >
< / div >
< div class = "section" id = "creating-uefi-disk-images-with-virt" >
< h2 > Creating UEFI disk images with virt< a class = "headerlink" href = "#creating-uefi-disk-images-with-virt" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Partitioned disk images can only be created for the same platform as the host system (BIOS or
UEFI). You can use virt to create BIOS images on UEFI systems, and it is also possible
to create UEFI images on BIOS systems using OVMF. You first need to setup your system with
the OVMF firmware. The details can be < a class = "reference external" href = "http://www.linux-kvm.org/page/OVMF" > found here linux-kvm OVMF page< / a >
but it amounts to:< / p >
< ol class = "arabic simple" >
< li > Download the firmware.repo from < a class = "reference external" href = "https://www.kraxel.org/repos/" > Gerd Hoffmann< / a > and install it
in /etc/yum.repos.d/< / li >
< li > Install the edk2.git-ovmf-x64 package< / li >
< li > Copy /usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd to /usr/share/OVMF/OVMF_CODE.fd< / li >
< li > Copy /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd to /usr/share/OVMF/OVMF_VARS.fd< / li >
< / ol >
2016-11-29 17:27:44 +00:00
< p > Now you can run livemedia-creator with < code class = "docutils literal" > < span class = "pre" > --virt-uefi< / span > < / code > to boot and install using UEFI:< / p >
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > sudo< / span > < span class = "n" > livemedia< / span > < span class = "o" > -< / span > < span class = "n" > creator< / span > < span class = "o" > --< / span > < span class = "n" > make< / span > < span class = "o" > -< / span > < span class = "n" > disk< / span > < span class = "o" > --< / span > < span class = "n" > virt< / span > < span class = "o" > -< / span > < span class = "n" > uefi< / span > < span class = "o" > --< / span > < span class = "n" > iso< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > .< / span > < span class = "n" > iso< / span > \
< span class = "o" > --< / span > < span class = "n" > ks< / span > < span class = "o" > =/< / span > < span class = "n" > path< / span > < span class = "o" > /< / span > < span class = "n" > to< / span > < span class = "o" > /< / span > < span class = "n" > fedora< / span > < span class = "o" > -< / span > < span class = "n" > minimal< / span > < span class = "o" > .< / span > < span class = "n" > ks< / span >
2015-12-04 18:12:19 +00:00
< / pre > < / div >
< / div >
< p > Make sure that the kickstart you are using creates a /boot/efi partition by including this:< / p >
2016-11-29 17:27:44 +00:00
< div class = "highlight-default" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > part< / span > < span class = "o" > /< / span > < span class = "n" > boot< / span > < span class = "o" > /< / span > < span class = "n" > efi< / span > < span class = "o" > --< / span > < span class = "n" > fstype< / span > < span class = "o" > =< / span > < span class = "s2" > " efi" < / span > < span class = "o" > --< / span > < span class = "n" > size< / span > < span class = "o" > =< / span > < span class = "mi" > 500< / span >
2015-12-04 18:12:19 +00:00
< / pre > < / div >
< / div >
< div class = "admonition note" >
< p class = "first admonition-title" > Note< / p >
< p class = "last" > When using the resulting image with the current version of OVMF (edk2.git-ovmf-x64-0-20151103.b1295.ge5cffca)
it will not boot automatically because there is a problem with the fallback path.
You can boot it by entering the UEFI shell and running EFI/fedora/shim.efi and
then using efibootmgr to setup the correct boot entry.< / p >
< / div >
< / div >
2015-05-11 23:44:09 +00:00
< div class = "section" id = "debugging-problems" >
< h2 > Debugging problems< a class = "headerlink" href = "#debugging-problems" title = "Permalink to this headline" > ¶< / a > < / h2 >
2016-03-18 23:30:48 +00:00
< p > Sometimes an installation will get stuck. When using qemu the logs will
2015-05-11 23:44:09 +00:00
be written to ./virt-install.log and most of the time any problems that happen
will be near the end of the file. lmc tries to detect common errors and will
cancel the installation when they happen. But not everything can be caught.
2016-03-18 23:30:48 +00:00
When creating a new kickstart it is helpful to use vnc so that you can monitor
the installation as it happens, and if it gets stuck without lmc detecting the
problem you can switch to tty1 and examine the system directly.< / p >
< p > If it does get stuck the best way to cancel is to use kill -9 on the qemu pid,
lmc will detect that the process died and cleanup.< / p >
2018-03-15 20:53:58 +00:00
< p > If lmc didn’ t handle the cleanup for some reason you can do this:
2016-11-29 17:27:44 +00:00
1. < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > umount< / span > < span class = "pre" > /tmp/lmc-XXXX< / span > < / code > to unmount the iso from its mountpoint.
2. < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > rm< / span > < span class = "pre" > -rf< / span > < span class = "pre" > /tmp/lmc-XXXX< / span > < / code >
3. < code class = "docutils literal" > < span class = "pre" > sudo< / span > < span class = "pre" > rm< / span > < span class = "pre" > /var/tmp/lmc-disk-XXXXX< / span > < / code > to remove the disk image.< / p >
2016-03-18 23:30:48 +00:00
< p > Note that lmc uses the lmc- prefix for all of its temporary files and
directories to make it easier to find and clean up leftovers.< / p >
< p > The logs from the qemu run are stored in virt-install.log, logs from
livemedia-creator are in livemedia.log and program.log< / p >
2016-11-29 17:27:44 +00:00
< p > You can add < code class = "docutils literal" > < span class = "pre" > --image-only< / span > < / code > to skip the .iso creation and examine the resulting
disk image. Or you can pass < code class = "docutils literal" > < span class = "pre" > --keep-image< / span > < / code > to keep it around after the iso has
2015-05-11 23:44:09 +00:00
been created.< / p >
2016-11-29 17:27:44 +00:00
< p > Cleaning up aborted < code class = "docutils literal" > < span class = "pre" > --no-virt< / span > < / code > installs can sometimes be accomplished by
running the < code class = "docutils literal" > < span class = "pre" > anaconda-cleanup< / span > < / code > script. As of Fedora 18 anaconda is
2015-05-11 23:44:09 +00:00
multi-threaded and it can sometimes become stuck and refuse to exit. When this
happens you can usually clean up by first killing the anaconda process then
2016-11-29 17:27:44 +00:00
running < code class = "docutils literal" > < span class = "pre" > anaconda-cleanup< / span > < / code > .< / p >
2015-05-11 23:44:09 +00:00
< / div >
< div class = "section" id = "hacking" >
< h2 > Hacking< a class = "headerlink" href = "#hacking" title = "Permalink to this headline" > ¶< / a > < / h2 >
< p > Development on this will take place as part of the lorax project, and on the
anaconda-devel-list mailing list, and < a class = "reference external" href = "https://github.com/rhinstaller/lorax" > on github< / a > < / p >
< p > Feedback, enhancements and bugs are welcome. You can use < a class = "reference external" href = "https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora&component=lorax" > bugzilla< / a > to
report bugs against the lorax component.< / p >
< / div >
< / div >
2017-11-28 17:18:51 +00:00
< / div >
< div class = "articleComments" >
2016-02-13 00:06:33 +00:00
< / div >
2015-05-11 23:44:09 +00:00
< / div >
< footer >
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
2017-11-28 17:18:51 +00:00
< a href = "product-images.html" class = "btn btn-neutral float-right" title = "Product and Updates Images" accesskey = "n" rel = "next" > Next < span class = "fa fa-arrow-circle-right" > < / span > < / a >
2015-05-11 23:44:09 +00:00
2017-11-28 17:18:51 +00:00
< a href = "lorax.html" class = "btn btn-neutral" title = "Lorax" accesskey = "p" rel = "prev" > < span class = "fa fa-arrow-circle-left" > < / span > Previous< / a >
2015-05-11 23:44:09 +00:00
< / div >
< hr / >
< div role = "contentinfo" >
< p >
2018-03-15 20:53:58 +00:00
© Copyright 2018, Red Hat, Inc..
2016-02-13 00:06:33 +00:00
2015-05-11 23:44:09 +00:00
< / p >
< / div >
2016-02-13 00:06:33 +00:00
Built with < a href = "http://sphinx-doc.org/" > Sphinx< / a > using a < a href = "https://github.com/snide/sphinx_rtd_theme" > theme< / a > provided by < a href = "https://readthedocs.org" > Read the Docs< / a > .
2015-07-10 18:39:39 +00:00
2015-05-11 23:44:09 +00:00
< / footer >
2015-07-10 18:39:39 +00:00
2015-05-11 23:44:09 +00:00
< / div >
< / div >
< / section >
< / div >
< script type = "text/javascript" >
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
2018-03-15 20:53:58 +00:00
VERSION:'28.9',
2015-05-11 23:44:09 +00:00
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
2017-11-28 17:18:51 +00:00
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
2015-05-11 23:44:09 +00:00
};
< / 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 type = "text/javascript" src = "_static/js/theme.js" > < / script >
< script type = "text/javascript" >
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
< / script >
< / body >
< / html >