/usr/share/doc/vmdebootstrap/html/live.html is in vmdebootstrap 1.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>vmdebootstrap for creation of live images — vmdebootstrap 1.9 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">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '1.9',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</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>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Developing live scripts and customisation hooks" href="devel.html" />
<link rel="prev" title="VMDebootstrap" href="overview.html" />
</head>
<body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="devel.html" title="Developing live scripts and customisation hooks"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="overview.html" title="VMDebootstrap"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">vmdebootstrap 1.9 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="vmdebootstrap-for-creation-of-live-images">
<h1>vmdebootstrap for creation of live images<a class="headerlink" href="#vmdebootstrap-for-creation-of-live-images" title="Permalink to this headline">¶</a></h1>
<div class="section" id="role-of-vmdebootstrap">
<h2>Role of vmdebootstrap<a class="headerlink" href="#role-of-vmdebootstrap" title="Permalink to this headline">¶</a></h2>
<p><code class="docutils literal"><span class="pre">vmdebootstrap</span></code> is limited to the role of generating the rootfs for
the live image - the architecture-specific part. <code class="docutils literal"><span class="pre">vmdebootstrap</span></code> then
copies the kernel files out of the rootfs and runs <code class="docutils literal"><span class="pre">mksquashfs</span></code>.</p>
<p>The files in the directory specified by the <code class="docutils literal"><span class="pre">--squash</span></code> option are not
themselves sufficient to create a live image. Remaining steps include
configuration of grub and EFI, addition of other components (like a menu
or Debian Installer) and packaging up into a isohybrid image.</p>
</div>
<div class="section" id="vmdebootstrap-features">
<h2>vmdebootstrap features<a class="headerlink" href="#vmdebootstrap-features" title="Permalink to this headline">¶</a></h2>
<div class="section" id="architecture-support">
<h3>Architecture support<a class="headerlink" href="#architecture-support" title="Permalink to this headline">¶</a></h3>
<p>vmdebootstrap has explicit support for foreign architecture
bootstraps using qemu static binformat handling as well as
support for Debian releases from wheezy onwards.</p>
<blockquote>
<div><ul class="simple">
<li>This is <strong>not</strong> intended to provide support for all packages
in the Debian archive. Some packages do not install correctly
with binfmt handling and <code class="docutils literal"><span class="pre">vmdebootstrap</span></code> should be run natively
when the package list is to include these packages.</li>
</ul>
</div></blockquote>
<p>Whether to use the binfmt_handler or build natively depends on:</p>
<ol class="arabic simple">
<li>the availability of a working default kernel for the images
built for that architecture and how to configure the bootloader(s) to
provide the relevant dtb where needed.</li>
<li>the complexity of the package set and compatibility with configuring
those packages using qemu-user. Some packages fail if the emulator
cannot provide threading support or other mechanisms - package sets
with such requirements would need to be built natively. Test with a
smaller package set where possible.</li>
</ol>
</div>
<div class="section" id="live-support-package">
<h3>live-support package<a class="headerlink" href="#live-support-package" title="Permalink to this headline">¶</a></h3>
<p>vmdebootstrap can support adding specific packages but a
simpler approach is to use the existing task-* packages and
only add packages manually where explicitly needed for a live
image, using the <code class="docutils literal"><span class="pre">live-support</span></code> package.</p>
</div>
<div class="section" id="running-vmdebootstrap-for-debian-cd">
<h3>Running vmdebootstrap for debian-cd<a class="headerlink" href="#running-vmdebootstrap-for-debian-cd" title="Permalink to this headline">¶</a></h3>
<p>debian-cd runs vmdebootstrap inside a VM in a similar manner to
how debian-live currently operates, as both debian-live and
vmdebootstrap need to call debootstrap which involves making
device nodes and needs to run as root. This outer VM is specific
for the release of Debian being built. vmdebootstrap can build
older releases and it may be necessary to use a newer version of
vmdebootstrap than is present in jessie to build jessie and to
use that version to build wheezy.</p>
<p>Remember to use <code class="docutils literal"><span class="pre">http://cdbuilder.debian.org/debian/</span></code> for the bootstrap
operations (–mirror option) and <code class="docutils literal"><span class="pre">http://httpredir.debian.org/debian</span></code> for
the mirror to be used after the image has booted (–apt-mirror option).</p>
<p>Ensure that a user is created (<code class="docutils literal"><span class="pre">--user</span> <span class="pre">'user/live'</span></code>) and that <code class="docutils literal"><span class="pre">sudo</span></code> is
added to the set of packages to install and the –sudo option is passed
to vmdebootstrap to ensure that the user is added to the sudo group. The
root user password should also be locked (–lock-root-password).</p>
<ul class="simple">
<li>Consider using a blank password and enforcing a password to be set
upon login for those images which can support this.</li>
</ul>
<p><code class="docutils literal"><span class="pre">mksquashfs</span></code> can fail without indication of why and when it does, the image
file can be 4Kb or so of junk. <code class="docutils literal"><span class="pre">vmdebootstrap</span></code> will fail if the
squashfs output is less than 1MB. This can occur if the drive runs
out of space but squashfs does not report an error.</p>
</div>
<div class="section" id="customisation-hooks">
<h3>Customisation hooks<a class="headerlink" href="#customisation-hooks" title="Permalink to this headline">¶</a></h3>
<p>vmdebootstrap uses a single config file per image type and each
config file can have a single customisation script. The config
file specifies the architecture of the image and the binformat
handler for that architecture (if used), so the customisation hook
script can be architecture-specific.</p>
<p>Customisation hook scripts are shell scripts which will be passed
a single parameter - the directory which represents the root
directory of the final image. These scripts can use standard shell
support to include other common functions or call out to utilities
known to be installed in the outer VM running vmdebootstrap.</p>
<p>Customisation hooks clearly need to live in a VCS - examples will
be carried in the <code class="docutils literal"><span class="pre">examples</span></code> directory of <code class="docutils literal"><span class="pre">vmdebootstrap</span></code> and
in the <code class="docutils literal"><span class="pre">/usr/share/vmdebootstrap/examples</span></code> directory. Working
scripts based on these examples will likely be within the debian-cd
git repo.</p>
<p>Unlike standard vmdebootstrap example scripts, the scripts calling
vmdebootstrap itself do not need to use sudo as the call is made inside
the outer VM which already has root. Using sudo will work but will output
a message: sudo: unable to resolve host JESSIE-debian-live-builder</p>
<p>The building of live images doesn’t appear to need changes in the
vmdebootstrap package itself. The changes to isolinux to add the menu config,
splash screen and to provide access to the install menus can all be done
after the generation of the squashfs.</p>
<p>Installing task packages using debootstrap <strong>omits</strong> <code class="docutils literal"><span class="pre">Recommended</span></code> packages,
resulting in a much smaller image which is not expected for a live image.
Task selection needs to be done in the customisation hook using the chroot
command, at which point the default apt configuration will install the
Recommends as well as the Depends packages. Ensure that the image size is
big enough.</p>
<div class="section" id="use-the-helpers">
<h4>Use the helpers<a class="headerlink" href="#use-the-helpers" title="Permalink to this headline">¶</a></h4>
<p><code class="file docutils literal"><span class="pre">vmdebootstrap</span></code> provides helpers for customisation hooks - typically
you call a series at the start, do your customisations and call a parallel
set before the customisation script finishes. See <a class="reference internal" href="devel.html#customisation-hooks"><span class="std std-ref">Developing live scripts and customisation hooks</span></a>.</p>
<ul>
<li><p class="first"><a class="reference internal" href="devel.html#export-env"><span class="std std-ref">export_env</span></a> - When installing using apt in the customisation
script, ensure that the debconf non-interactive settings are exported
to prevent the install waiting for keyboard interaction:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>``DEBIAN_FRONTEND=noninteractive``
</pre></div>
</div>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#mount-proc"><span class="std std-ref">mount_proc</span></a> - The customisation script needs to mount proc (and
possibly other locations like <code class="docutils literal"><span class="pre">/sys/</span></code>, <code class="docutils literal"><span class="pre">/dev/</span></code> and <code class="docutils literal"><span class="pre">/dev/pts/</span></code>)
before starting the apt install.</p>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#cleanup"><span class="std std-ref">cleanup</span></a> - cleanup mountpoints at the end of the script.</p>
</li>
<li><p class="first">Calls to apt should also not output the progress bar but the actual package
installation steps should be logged.</p>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#prepare-apt-source"><span class="std std-ref">prepare_apt_source</span></a> - Move the image apt sources aside and set
the cdimage apt source instead. Use <code class="docutils literal"><span class="pre">http://cdbuilder.debian.org/debian/</span></code>.</p>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#replace-apt-source"><span class="std std-ref">replace_apt_source</span></a> - At the end of the customisation hook,
remove that source and replace the original.</p>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#disable-daemons"><span class="std std-ref">disable_daemons</span></a> - any daemons installed into the system need to
know that the daemon should not be started until boot.</p>
</li>
<li><p class="first"><a class="reference internal" href="devel.html#remove-daemon-block"><span class="std std-ref">remove_daemon_block</span></a> - allow installed daemons to start, once
all package installations are complete.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">vmdebootstrap for creation of live images</a><ul>
<li><a class="reference internal" href="#role-of-vmdebootstrap">Role of vmdebootstrap</a></li>
<li><a class="reference internal" href="#vmdebootstrap-features">vmdebootstrap features</a><ul>
<li><a class="reference internal" href="#architecture-support">Architecture support</a></li>
<li><a class="reference internal" href="#live-support-package">live-support package</a></li>
<li><a class="reference internal" href="#running-vmdebootstrap-for-debian-cd">Running vmdebootstrap for debian-cd</a></li>
<li><a class="reference internal" href="#customisation-hooks">Customisation hooks</a><ul>
<li><a class="reference internal" href="#use-the-helpers">Use the helpers</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="overview.html"
title="previous chapter">VMDebootstrap</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="devel.html"
title="next chapter">Developing live scripts and customisation hooks</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/live.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<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" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="devel.html" title="Developing live scripts and customisation hooks"
>next</a> |</li>
<li class="right" >
<a href="overview.html" title="VMDebootstrap"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">vmdebootstrap 1.9 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2018 Neil Williams.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.7.
</div>
</body>
</html>
|