Commit a74d60be authored by kyodev's avatar kyodev

add live-wrapper essai doc html

parent 83a60f1c
Pipeline #62484 failed with stage
in 19 seconds
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Overview: module code &#8212; live-wrapper 0.7 documentation</title>
<link rel="stylesheet" href="../_static/classic.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
URL_ROOT: '../',
VERSION: '0.7',
FILE_SUFFIX: '.html',
<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>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<body role="document">
<div class="related" role="navigation" aria-label="related navigation">
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">live-wrapper 0.7 documentation</a> &#187;</li>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1>All modules for which code is available</h1>
<ul><li><a href="lwr/disk.html">lwr.disk</a></li>
<li><a href="lwr/grub.html">lwr.grub</a></li>
<li><a href="lwr/isolinux.html">lwr.isolinux</a></li>
<li><a href="lwr/vm.html">lwr.vm</a></li>
<li><a href="lwr/xorriso.html">lwr.xorriso</a></li>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
<script type="text/javascript">$('#searchbox').show(0);</script>
<div class="clearer"></div>
<div class="related" role="navigation" aria-label="related navigation">
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
<li class="right" >
<a href="../py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="nav-item nav-item-0"><a href="../index.html">live-wrapper 0.7 documentation</a> &#187;</li>
<div class="footer" role="contentinfo">
&#169; Copyright 2017, Iain R. Learmonth.
Created using <a href="">Sphinx</a> 1.5.6.
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Advanced Topics
Bootloader Customisation
By default, both ISOLINUX (for BIOS boot) and GRUB 2 (for EFI boot) are
installed into the images. A ``loopback.cfg`` file is also installed to allow
for the image to be booted while still an ISO image in a filesystem.
You can pass ``--no-isolinux`` to prevent the installation of ISOLINUX to the
image if you do not want ISOLINUX.
You can pass ``--no-grub`` to prevent the installation of GRUB to the image.
If you do not want GRUB installed but you would still like the ``loopback.cfg``
file to be installed, you can pass ``--grub-loopback-only``.
Using an Alternative Build Directory
Temporary directories are created using the Python standard library functions
for doing so. On Debian systems, this typically means that the directories are
created in ``/tmp``. If this is problematic for you, perhaps due to filesystem
permissions, you can change the path that Python will use to create directories
in by using the ``TMP`` environment variable, for example::
sudo TMP=/other/path lwr --blah --blah
Developer Documentation
.. toctree::
:maxdepth: 2
Welcome to live-wrapper's documentation!
.. toctree::
:maxdepth: 2
Indices and tables
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
live-wrapper is a tool produced by the `Debian Live Team
<>`_ that can be used to create
Debian-based live images for use with CDs, DVDs or USB sticks.
live-wrapper is designed to, as far as is possible, exist only as glue between
existing tools. The root filesystem is built using `vmdebootstrap` and
isohybrid image creation is provided by `xorriso`.
Helper Documentation
Root Filesystem Helpers
.. automodule:: lwr.vm
Bootloader Helpers
.. automodule:: lwr.grub
.. automodule:: lwr.isolinux
CD Filesystem Helpers
.. automodule:: lwr.disk
ISO Creation Helpers
.. automodule:: lwr.xorriso
Super Fast Quickstart
Building images with live-wrapper is quite simple. For the impatient:
.. code-block:: shell
sudo apt install live-wrapper
sudo lwr
This will build you a file named ``output.iso`` in the current directory
containing a minimal live-image.
.. warning::
Currently live-wrapper will create a lot of files and directories in the
current working directory. There is a TODO item to move these to a temporary
location and clean up afterwards, though this has not yet been fully
implemented. You may want to use an empty directory to run ``lwr`` in.
Customising the Image
There are a number of supported command-line arguments that can be passed to
live-wrapper. These change the behaviour to create a customised image.
Changing the Distribution
By default, the ISO image will be built using the ``stretch`` distribution. If
you'd like to build using ``buster`` or ``sid`` you can pass the ``-d``
parameter to live-wrapper like so:
.. code-block:: shell
sudo lwr -d buster
.. note::
You must use the codename, and not the suite (e.g. stable), when specifying
the distribution.
Using an Alternative Mirror
By default, ``vmdebootstrap`` will use the mirror configured in your
``/etc/apt/sources.list``. If you have a faster mirror available, you may want
to change the mirror you're using to create the image. You can do this with the
``-m`` parameter:
.. code-block:: shell
sudo lwr -m http://localhost/debian/
You may also configure the mirror that will be configured *inside* the
image. This will be used for any extra packages that are specified,
and will also be the mirror that the image will use after the build is
complete. Change this with the ``--apt-mirror`` parameter:
.. code-block:: shell
sudo lwr -m http://localhost/debian/ --apt-mirror
By default this is set to ````
Customising Packages
There are several methods for specifying extra packages to be
installed into the live image:
* ``-t`` / ``--tasks`` should be used to give a list of **task**
packages to be included in the image. These will be installed as
part of the ``vmdebootstrap`` hook, so all their "Depends" and
"Recommends" will be installed too.
* ``-e`` / ``--extra`` allows for a list of extra non-task packages
to be installed, again with all their "Depends" and "Recommends"
* ``-f`` / ``--firmware`` allows for a list of firmware packages to
be installed in the image, again with all their "Depends" and
"Recommends" included. **Also** each of these packages will be
downloaded and saved into the image so that an included installer
will automatically find them for installation. **BEWARE** that
using this option is likely to mean your image will include
non-free software. Check the licensing carefully before
distributing it.
For example:
.. code-block:: shell
sudo lwr -e vim -t science-typesetting
.. code-block:: shell
sudo lwr -e "emacs25 jed" -t live-task-xfce -f "firmware-iwlwifi firmware-realtek"
Finally, if you want to make a live image that will work as a
standalone source for installation you will need to specify a list of
"base" packages. This is the list of packages that will need to be
installed *after* the contents of the live image is copied to the new
system. This is essentially a list of bootloader packages and a few
utility packages that they use. Specify this list with the
``--base_debs`` parameter. For example, this is the list needed for
Debian Stretch on amd64:
.. code-block:: shell
sudo lwr --base_debs "eject pciutils usbutils \
keyboard-configuration console-setup \
grub-efi-amd64 grub-efi-amd64-bin grub-pc"
The customise script also has a part to play in this area, to ensure
that all the needed dependencies for these packages are also added to
the image.
Setting the Volume ID
The Volume ID is the embedded label in the ISO image; this is what
will be displayed on the desktop when a DVD or USB flash drive
containing the image is inserted into a computer. The default is
``DEBIAN LIVE``, or you can change this using the ``--volume_id``
parameter. There is a 32-character limit for what can be specified
here. Example:
.. code-block:: shell
sudo lwr --volume_id "My live image"
Testing the Image with QEMU
You can easily test your created live images with QEMU.
.. warning:: You will need to increase the amount of memory available to
QEMU when running the live image. The image will crash if run
with the default memory limit.
To test the image using BIOS boot:
.. code-block:: shell
qemu-system-x86_64 -m 2G -cdrom live.iso
For EFI boot you will need to install the ``ovmf`` package and then run:
.. code-block:: shell
qemu-system-x86_64 -bios /usr/share/ovmf/OVMF.fd -m 2G -cdrom live.iso
To test with an emulated USB device, run:
.. code-block:: shell
qemu-system-x86_64 -m 2G -usbdevice disk:live.iso
To test the speech synthesis installer option, you will need to add the
following to the QEMU invocation:
.. code-block:: shell
-soundhw sb16,es1370,adlib
.. note::
Using -hda to attach the disk image will prevent the installer from detecting
the "CD-ROM" as this is not a removable device, it is an emulated attached hard
disk drive.
Next Steps
To learn more about using live-wrapper, you can read the man page or check out
the :doc:`advanced` section of this documentation.
This diff is collapsed.
* classic.css_t
* ~~~~~~~~~~~~~
* Sphinx stylesheet -- classic theme.
* :copyright: Copyright 2007-2017 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: sans-serif;
font-size: 100%;
background-color: #11303d;
color: #000;
margin: 0;
padding: 0;
div.document {
background-color: #1c4e63;
div.documentwrapper {
float: left;
width: 100%;
div.bodywrapper {
margin: 0 0 0 230px;
div.body {
background-color: #ffffff;
color: #000000;
padding: 0 20px 30px 20px;
div.footer {
color: #ffffff;
width: 100%;
padding: 9px 0 9px 0;
text-align: center;
font-size: 75%;
div.footer a {
color: #ffffff;
text-decoration: underline;
div.related {
background-color: #133f52;
line-height: 30px;
color: #ffffff;
div.related a {
color: #ffffff;
div.sphinxsidebar {
div.sphinxsidebar h3 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.4em;
font-weight: normal;
margin: 0;
padding: 0;
div.sphinxsidebar h3 a {
color: #ffffff;
div.sphinxsidebar h4 {
font-family: 'Trebuchet MS', sans-serif;
color: #ffffff;
font-size: 1.3em;
font-weight: normal;
margin: 5px 0 0 0;
padding: 0;
div.sphinxsidebar p {
color: #ffffff;
div.sphinxsidebar p.topless {
margin: 5px 10px 10px 10px;
div.sphinxsidebar ul {
margin: 10px;
padding: 0;
color: #ffffff;
div.sphinxsidebar a {
color: #98dbcc;
div.sphinxsidebar input {
border: 1px solid #98dbcc;
font-family: sans-serif;
font-size: 1em;
/* -- hyperlink styles ------------------------------------------------------ */
a {
color: #355f7c;
text-decoration: none;
a:visited {
color: #355f7c;
text-decoration: none;
a:hover {
text-decoration: underline;
/* -- body styles ----------------------------------------------------------- */
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: 'Trebuchet MS', sans-serif;
background-color: #f2f2f2;
font-weight: normal;
color: #20435c;
border-bottom: 1px solid #ccc;
margin: 20px -20px 10px -20px;
padding: 3px 0 3px 10px;
div.body h1 { margin-top: 0; font-size: 200%; }
div.body h2 { font-size: 160%; }
div.body h3 { font-size: 140%; }
div.body h4 { font-size: 120%; }
div.body h5 { font-size: 110%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #c60f0f;
font-size: 0.8em;
padding: 0 4px 0 4px;
text-decoration: none;
a.headerlink:hover {
background-color: #c60f0f;
color: white;
div.body p, div.body dd, div.body li, div.body blockquote {
text-align: justify;
line-height: 130%;
div.admonition p.admonition-title + p {
display: inline;
div.admonition p {
margin-bottom: 5px;
div.admonition pre {
margin-bottom: 5px;
div.admonition ul, div.admonition ol {
margin-bottom: 5px;
div.note {
background-color: #eee;
border: 1px solid #ccc;
div.seealso {
background-color: #ffc;
border: 1px solid #ff6;
div.topic {
background-color: #eee;
div.warning {
background-color: #ffe4e4;
border: 1px solid #f66;
p.admonition-title {
display: inline;
p.admonition-title:after {
content: ":";
pre {
padding: 5px;
background-color: #eeffcc;
color: #333333;
line-height: 120%;
border: 1px solid #ac9;
border-left: none;
border-right: none;
code {
background-color: #ecf0f3;
padding: 0 1px 0 1px;
font-size: 0.95em;
th {
background-color: #ede;
.warning code {
background: #efc2c2;
.note code {
background: #d6d6d6;
.viewcode-back {
font-family: sans-serif;
div.viewcode-block:target {
background-color: #f4debf;
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
div.code-block-caption {
color: #efefef;
background-color: #1c4e63;
\ No newline at end of file
@import url("classic.css");
\ No newline at end of file
\ No newline at end of file
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */