<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/pibox">
  <channel>
    <title>PiBox</title>
    <link>https://www.linuxjournal.com/tag/pibox</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>Custom Embedded Linux Distributions</title>
  <link>https://www.linuxjournal.com/content/custom-embedded-linux-distributions</link>
  <description>  &lt;div data-history-node-id="1339636" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/12278f1.png" width="698" height="600" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/michael-j-hammel" lang="" about="https://www.linuxjournal.com/users/michael-j-hammel" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Michael J. Hammel&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
&lt;em&gt;The proliferation of inexpensive IoT boards means the time has come to
gain control not only of applications but also the entire software platform.
So, how do you build a custom distribution with cross-compiled applications
targeted for a specific purpose? As Michael J. Hammel explains here, it's not as hard as you might think.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
Why Go Custom?&lt;/h3&gt;

&lt;p&gt;
In the past, many embedded projects used off-the-shelf distributions and
stripped them down to bare essentials for a number of reasons. First,
removing unused packages reduced storage requirements. Embedded systems are
typically shy of large amounts of storage at boot time, and the storage
available, in non-volatile memory, can require copying large amounts of the
OS to memory to run. Second, removing unused packages reduced possible
attack vectors. There is no sense hanging on to potentially vulnerable
packages if you don't need them. Finally, removing unused packages reduced
distribution management overhead. Having dependencies between packages
means
keeping them in sync if any one package requires an update from the upstream
distribution. That can be a validation nightmare.
&lt;/p&gt;

&lt;p&gt;
Yet, starting with an existing distribution and removing packages isn't as
easy as it sounds. Removing one package might break dependencies held by a
variety of other packages, and dependencies can change in the upstream
distribution management. Additionally, some packages simply cannot be
removed without great pain due to their integrated nature within the boot or
runtime process. All of this takes control of the platform outside the
project and can lead to unexpected delays in development.
&lt;/p&gt;

&lt;p&gt;
A popular alternative is to build a custom distribution using build tools
available from an upstream distribution provider. Both Gentoo and Debian
provide options for this type of bottom-up build. The most popular of these
is probably the Debian debootstrap utility. It retrieves prebuilt core
components and allows users to cherry-pick the packages of interest in
building their platforms. But, debootstrap originally was only for x86
platforms. Although there are ARM (and possibly other) options now, debootstrap
and Gentoo's catalyst still take dependency management away from the
local project.
&lt;/p&gt;

&lt;p&gt;
Some people will argue that letting someone else manage the platform software
(like Android) is much easier than doing it yourself. But, those
distributions are general-purpose, and when you're sitting on a lightweight,
resource-limited IoT device, you may think twice about any any advantage that
is taken out of your hands.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/custom-embedded-linux-distributions" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 01 Feb 2018 15:55:42 +0000</pubDate>
    <dc:creator>Michael J. Hammel</dc:creator>
    <guid isPermaLink="false">1339636 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
