This file is indexed.

/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 &#8212; 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> &#187;</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> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2018 Neil Williams.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.7.
    </div>
  </body>
</html>