diff --git a/.buildinfo b/.buildinfo
index f57824d9..d9e06e01 100644
--- a/.buildinfo
+++ b/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: ddd1819963711304e50ae8967f60783e
+config: 88205636a709bc0dd26760157b71913b
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle
index 441481c9..a2f61a73 100644
Binary files a/.doctrees/environment.pickle and b/.doctrees/environment.pickle differ
diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree
index 9f150f3c..391f12af 100644
Binary files a/.doctrees/index.doctree and b/.doctrees/index.doctree differ
diff --git a/.doctrees/livemedia-creator.doctree b/.doctrees/livemedia-creator.doctree
index 687c240d..ab3379c5 100644
Binary files a/.doctrees/livemedia-creator.doctree and b/.doctrees/livemedia-creator.doctree differ
diff --git a/.doctrees/lorax-composer.doctree b/.doctrees/lorax-composer.doctree
index 4b0e4cc4..56e50fe2 100644
Binary files a/.doctrees/lorax-composer.doctree and b/.doctrees/lorax-composer.doctree differ
diff --git a/.doctrees/lorax.doctree b/.doctrees/lorax.doctree
index 1eec4d45..e7ce565d 100644
Binary files a/.doctrees/lorax.doctree and b/.doctrees/lorax.doctree differ
diff --git a/.doctrees/mkksiso.doctree b/.doctrees/mkksiso.doctree
new file mode 100644
index 00000000..a8a2e075
Binary files /dev/null and b/.doctrees/mkksiso.doctree differ
diff --git a/.doctrees/pylorax.api.doctree b/.doctrees/pylorax.api.doctree
index 37052167..32cd0bc5 100644
Binary files a/.doctrees/pylorax.api.doctree and b/.doctrees/pylorax.api.doctree differ
diff --git a/.doctrees/pylorax.doctree b/.doctrees/pylorax.doctree
index bf3d0256..c7fba21b 100644
Binary files a/.doctrees/pylorax.doctree and b/.doctrees/pylorax.doctree differ
diff --git a/_modules/composer/cli.html b/_modules/composer/cli.html
index c7eb8e52..96c5b0d5 100644
--- a/_modules/composer/cli.html
+++ b/_modules/composer/cli.html
@@ -8,7 +8,7 @@
-
@@ -226,7 +227,10 @@
Return a list of templates and errors encountered or an empty list """template_errors=[]
- forcompose_typeincompose_types(share_dir):
+ forcompose_type,enabledincompose_types(share_dir):
+ ifnotenabled:
+ continue
+
# Read the kickstart template for this typeks_template_path=joinpaths(share_dir,"composer",compose_type)+".ks"ks_template=open(ks_template_path,"r").read()
@@ -846,9 +850,12 @@
share_dir=cfg.get("composer","share_dir")lib_dir=cfg.get("composer","lib_dir")
- # Make sure compose_type is valid
- ifcompose_typenotincompose_types(share_dir):
- raiseRuntimeError("Invalid compose type (%s), must be one of %s"%(compose_type,compose_types(share_dir)))
+ # Make sure compose_type is valid, only allow enabled types
+ type_enabled=dict(compose_types(share_dir)).get(compose_type)
+ iftype_enabledisNone:
+ raiseRuntimeError("Invalid compose type (%s), must be one of %s"%(compose_type,[tfort,eincompose_types(share_dir)]))
+ ifnottype_enabled:
+ raiseRuntimeError("Compose type '%s' is disabled on this architecture"%compose_type)# Some image types (live-iso) need extra packages for composer to execute the output templatewithdnflock.lock:
@@ -1017,11 +1024,30 @@
# Supported output types
[docs]defcompose_types(share_dir):
- r""" Returns a list of the supported output types
+ r""" Returns a list of tuples of the supported output types, and their state The output types come from the kickstart names in /usr/share/lorax/composer/\*ks
+
+ If they are disabled on the current arch their state is False. If enabled, it is True.
+ eg. [("alibaba", False), ("ext4-filesystem", True), ...] """
- returnsorted([os.path.basename(ks)[:-3]forksinglob(joinpaths(share_dir,"composer/*.ks"))])
+ # These are compose types that are not supported on an architecture. eg. hyper-v on s390
+ # If it is not listed, it is allowed
+ disable_map={
+ "arm":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "armhfp":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "aarch64":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "ppc":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "ppc64":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "ppc64le":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "s390":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ "s390x":["alibaba","ami","google","hyper-v","vhd","vmdk"],
+ }
+
+ all_types=sorted([os.path.basename(ks)[:-3]forksinglob(joinpaths(share_dir,"composer/*.ks"))])
+ arch_disabled=disable_map.get(os.uname().machine,[])
+
+ return[(t,tnotinarch_disabled)fortinall_types]
[docs]defcompose_args(compose_type):""" Returns the settings to pass to novirt_install for the compose type
diff --git a/_modules/pylorax/api/config.html b/_modules/pylorax/api/config.html
index 25be281c..f5f7b736 100644
--- a/_modules/pylorax/api/config.html
+++ b/_modules/pylorax/api/config.html
@@ -8,7 +8,7 @@
- pylorax.api.config — Lorax 32.1 documentation
+ pylorax.api.config — Lorax 32.2 documentation
@@ -58,7 +58,7 @@
diff --git a/_sources/index.rst.txt b/_sources/index.rst.txt
index c19a1fe9..d33bb17b 100644
--- a/_sources/index.rst.txt
+++ b/_sources/index.rst.txt
@@ -16,6 +16,7 @@ Contents:
livemedia-creator
lorax-composer
composer-cli
+ mkksiso
product-images
modules
diff --git a/_sources/livemedia-creator.rst.txt b/_sources/livemedia-creator.rst.txt
index 4b4fea7f..faad25c4 100644
--- a/_sources/livemedia-creator.rst.txt
+++ b/_sources/livemedia-creator.rst.txt
@@ -43,8 +43,18 @@ livemedia-creator cmdline arguments
-----------------------------------
.. argparse::
- :ref: pylorax.cmdline.lmc_parser
- :prog: livemedia-creator
+ :ref: pylorax.cmdline.lmc_parser
+ :prog: livemedia-creator
+
+ --macboot : @replace
+ Make the iso bootable on UEFI based Mac systems
+
+ Default: True
+
+ --nomacboot : @replace
+ Do not create a Mac bootable iso
+
+ Default: False
Quickstart
diff --git a/_sources/lorax.rst.txt b/_sources/lorax.rst.txt
index 04516d03..71e9dc1f 100644
--- a/_sources/lorax.rst.txt
+++ b/_sources/lorax.rst.txt
@@ -20,8 +20,18 @@ lorax cmdline arguments
-----------------------
.. argparse::
- :ref: pylorax.cmdline.lorax_parser
- :prog: lorax
+ :ref: pylorax.cmdline.lorax_parser
+ :prog: lorax
+
+ --macboot : @replace
+ Make the iso bootable on UEFI based Mac systems
+
+ Default: True
+
+ --nomacboot : @replace
+ Do not create a Mac bootable iso
+
+ Default: False
Quickstart
diff --git a/_sources/mkksiso.rst.txt b/_sources/mkksiso.rst.txt
new file mode 100644
index 00000000..05ad21d3
--- /dev/null
+++ b/_sources/mkksiso.rst.txt
@@ -0,0 +1,120 @@
+mkksiso
+=======
+
+:Authors:
+ Brian C. Lane
+
+``mkksiso`` is a tool for creating kickstart boot isos. In it's simplest form
+you can add a kickstart to a boot.iso and the kickstart will be executed when
+the iso is booted. If the original iso was created with EFI and Mac support the
+kickstart boot.iso will include this support as well.
+
+``mkksiso`` needs to be run as root, it depends on mounting the original iso
+and you need to be root to be able to do that.
+
+
+mkksiso cmdline arguments
+-------------------------
+
+Add a kickstart and files to an iso
+
+ ``usage: mkksiso [-h] [-a ADD_PATHS] [-c CMDLINE] [--debug] ks input_iso output_iso``
+
+Optional arguments
+^^^^^^^^^^^^^^^^^^
+
+ -h, --help show this help message and exit
+ -a ADD_PATHS, --add ADD_PATHS
+ File or directory to add to ISO (may be used multiple
+ times)
+ -c CMDLINE, --cmdline CMDLINE
+ Arguments to add to kernel cmdline
+ --debug print debugging info
+
+Positional arguments
+^^^^^^^^^^^^^^^^^^^^
+
+ :ks: Kickstart to add to the ISO
+
+ :input_iso: ISO to modify
+
+ :output_iso: Full pathname of iso to be created
+
+
+Create a kickstart boot.iso or DVD
+----------------------------------
+
+Create a kickstart like you normally would, kickstart documentation can be
+`found here `_, including the
+``url`` and ``repo`` commands. If you are creating a DVD and only need the
+content on the DVD you can use the ``cdrom`` command to install without a
+network connection. Then run ``mkksiso`` like this::
+
+ mkksiso /PATH/TO/KICKSTART /PATH/TO/ISO /PATH/TO/NEW-ISO
+
+This will create a new iso with the kickstart in the root directory, and the
+kernel cmdline will have ``inst.ks=...`` added to it so that it will be
+executed when the iso is booted (be careful not to boot on a system you don't
+want to wipe out! There will be no prompting).
+
+
+Adding package repos to a boot.iso
+----------------------------------
+
+You can add repo directories to the iso using ``--add /PATH/TO/REPO/``, make
+sure it contains the ``repodata`` directory by running ``createrepo_c`` on it
+first. In the kickstart you can refer to the directories (and files) on the iso
+using ``file:///run/install/repo/DIRECTORY/``. You can then use these repos in
+the kickstart like this::
+
+ repo --name=extra-repo --baseurl=file:///run/install/repo/extra-repo/
+
+Run ``mkksiso`` like so::
+
+ mkksiso --add /PATH/TO/REPO/ /PATH/TO/KICKSTART /PATH/TO/ISO /PATH/TO/NEW-ISO
+
+
+Create a liveimg boot.iso
+-------------------------
+
+You can use the kickstart `liveimg command
+`_,
+to install a pre-generated disk image or tar to the system the iso is booting
+on.
+
+Create a disk image or tar with ``lorax-composer`` or ``livemedia-creator``,
+make sure the image includes tools expected by ``anaconda``, as well as the
+kernel and bootloader support. In ``lorax-composer`` use the ``liveimg-tar``
+image type. If you plan to install it to a UEFI machine make sure to include
+``grub2-efi`` and ``efibootmgr`` in the blueprint.
+
+Add the ``root.tar.xz`` file to the iso using ``--add /PATH/TO/ROOT.TAR.XZ``,
+and in the kickstart reference it with the ``liveimg`` command like this::
+
+ liveimg --url=file:///run/install/repo/root.tar.xz
+
+It is also a good idea to use the ``--checksum`` argument to ``liveimg`` to be
+sure the file hasn't been corrupted::
+
+ mkksiso --add /PATH/TO/root.tar.xz /PATH/TO/KICKSTART /PATH/TO/ISO /PATH/TO/NEW-ISO
+
+When this iso is booted it will execute the kickstart and install the liveimg
+contents to the system without any prompting.
+
+
+How it works
+------------
+
+``mkksiso`` first examines the system to make sure the tools it needs are installed,
+it will work with ``xorrisofs`` or ``mkisofs`` installed. It mounts the source iso,
+and copies the directories that need to be modified to a temporary directory.
+
+It then modifies the boot configuration files to include the ``inst.ks`` command,
+and checks to see if the original iso supports EFI. If it does it regenerates the
+EFI boot images with the new configuration, and then runs the available iso creation
+tool to add the new files and directories to the new iso. If the architecture is
+``x86_64`` it will also make sure the iso can be booted as an iso or from a USB
+stick (hybridiso).
+
+The last step is to update the iso checksums so that booting with test enabled
+will pass.
diff --git a/_static/documentation_options.js b/_static/documentation_options.js
index 505ad010..66e8074a 100644
--- a/_static/documentation_options.js
+++ b/_static/documentation_options.js
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: '32.1',
+ VERSION: '32.2',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
diff --git a/composer-cli.html b/composer-cli.html
index 75aab6e3..97144449 100644
--- a/composer-cli.html
+++ b/composer-cli.html
@@ -8,7 +8,7 @@
- composer-cli — Lorax 32.1 documentation
+ composer-cli — Lorax 32.2 documentation
@@ -35,7 +35,7 @@
-
+
@@ -60,7 +60,7 @@