hhl/public/handbook/print.html
2021-02-19 22:43:36 -05:00

371 lines
22 KiB
HTML

<!DOCTYPE HTML>
<html lang="en" class="sidebar-visible no-js light">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>The HitchHiker's Guide to HitchHiker Linux</title>
<meta name="robots" content="noindex" />
<!-- Custom HTML head -->
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff" />
<link rel="icon" href="favicon.svg">
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/variables.css">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/chrome.css">
<link rel="stylesheet" href="css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="highlight.css">
<link rel="stylesheet" href="tomorrow-night.css">
<link rel="stylesheet" href="ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
<body>
<!-- Provide site root to javascript -->
<script type="text/javascript">
var path_to_root = "";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script type="text/javascript">
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
html.classList.remove('light')
html.classList.add(theme);
html.classList.add('js');
</script>
<!-- Hide / unhide sidebar before it is displayed -->
<script type="text/javascript">
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<ol class="chapter">
<li class="chapter-item affix ">
<a href="/">Home</a>
</li>
<li class="chapter-item affix ">
<a href="/news/">News</a>
</li>
<li class="chapter-item affix ">
<a href="/about/">About</a>
</li>
<li class="spacer"></li>
</ol>
<ol class="chapter"><li class="chapter-item affix "><a href="index.html">Preface</a></li><li class="chapter-item "><a href="introduction/index.html"><strong aria-hidden="true">1.</strong> Introduction</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="introduction/audience.html"><strong aria-hidden="true">1.1.</strong> Target Audience</a></li><li class="chapter-item "><a href="introduction/features.html"><strong aria-hidden="true">1.2.</strong> Features</a></li></ol></li><li class="chapter-item "><a href="installation/index.html"><strong aria-hidden="true">2.</strong> Installation</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="installation/binary/index.html"><strong aria-hidden="true">2.1.</strong> Installing Binary Sets</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="installation/binary/downloading.html"><strong aria-hidden="true">2.1.1.</strong> Downloading Binary Sets</a></li><li class="chapter-item "><a href="installation/binary/x86/index.html"><strong aria-hidden="true">2.1.2.</strong> Installing on x86</a></li><li class="chapter-item "><a href="installation/binary/arm/index.html"><strong aria-hidden="true">2.1.3.</strong> Installing on Arm</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="installation/binary/arm/rpi.html"><strong aria-hidden="true">2.1.3.1.</strong> Raspberry Pi</a></li></ol></li><li class="chapter-item "><a href="installation/binary/riscv/index.html"><strong aria-hidden="true">2.1.4.</strong> Installing on Riscv</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="installation/binary/riscv/qemu.html"><strong aria-hidden="true">2.1.4.1.</strong> Qemu</a></li><li class="chapter-item "><a href="installation/binary/riscv/beagle-v.html"><strong aria-hidden="true">2.1.4.2.</strong> BeagleV</a></li></ol></li></ol></li><li class="chapter-item "><a href="installation/source/index.html"><strong aria-hidden="true">2.2.</strong> Installing from Source</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="installation/source/downloading.html"><strong aria-hidden="true">2.2.1.</strong> Downloading HHL Source</a></li><li class="chapter-item "><a href="installation/source/preparing.html"><strong aria-hidden="true">2.2.2.</strong> Preparing to Build</a></li><li class="chapter-item "><a href="installation/source/building-hitchhiker.html"><strong aria-hidden="true">2.2.3.</strong> Building HitchHiker</a></li></ol></li></ol></li><li class="chapter-item "><a href="configuration/index.html"><strong aria-hidden="true">3.</strong> Post Install Configuration</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="configuration/users.html"><strong aria-hidden="true">3.1.</strong> Adding a User Account</a></li><li class="chapter-item "><a href="configuration/networking.html"><strong aria-hidden="true">3.2.</strong> Setting up Networking</a></li></ol></li><li class="chapter-item "><a href="s6/index.html"><strong aria-hidden="true">4.</strong> Managing Processes</a></li><li class="chapter-item "><a href="pkgsrc/index.html"><strong aria-hidden="true">5.</strong> Installing Third Party Software</a></li><li class="chapter-item "><a href="updating/index.html"><strong aria-hidden="true">6.</strong> Updating HitchHiker Linux</a><a class="toggle"><div></div></a></li><li><ol class="section"><li class="chapter-item "><a href="updating/binary.html"><strong aria-hidden="true">6.1.</strong> From Binary Sets</a></li><li class="chapter-item "><a href="updating/source.html"><strong aria-hidden="true">6.2.</strong> From Source</a></li></ol></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky bordered">
<div class="left-buttons">
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</button>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light (default)</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">The HitchHiker's Guide to HitchHiker Linux</h1>
<div class="right-buttons">
<a href="print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" name="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script type="text/javascript">
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1><a class="header" href="#preface" id="preface">Preface</a></h1>
<h2><a class="header" href="#what-is-this" id="what-is-this">What is this?</a></h2>
<p><strong>HitchHiker Linux</strong> is a general purpose Linux distribution that has been carefully
assembled to give a more traditional, Unix-like experience. HitchHiker provides,
out of the box, all development tools and libraries to rebuild itself from source
code as well as being a solid base from which to create whatever system is
desired.</p>
<h1><a class="header" href="#introduction" id="introduction">Introduction</a></h1>
<pre><code class="language-bash">#!/don't/panic
man 42
</code></pre>
<p>HitchHiker Linux is a very Unix-like distribution of Linux with a focus on
simplicity, elegance and providing a solid base that the end user can turn into
whatever they see fit.</p>
<h2><a class="header" href="#core-principles" id="core-principles">Core Principles:</a></h2>
<ul>
<li>The default installation should include the bare minimum required software to provide a solid base.</li>
<li>Complexity should be discouraged in favor of code elegance, security and maintainability.</li>
<li>End users should not be discouraged from tinkering with their system.</li>
<li>The distribution should make as few assumptions as possible regarding end use.</li>
<li>While newer releases of software often eliminate bugs and vulnerabilities, newer software packages are not by default more secure than stable, mature packages (newer is not always better).</li>
<li>Any changes to the core system functionality, especially those which change expected functionality, must be well justified and well vetted before deployment.</li>
<li>The base installation should include everything required to rebuild itself from source.</li>
<li>The distribution should make as few changes to the upstream software as possible, delivering it as intended by the original author.</li>
<li>Patching of sources should only be done to fix bugs or vulnerabilities.</li>
</ul>
<p>HHL was born of a desire to harness the greater hardware support of Linux while
paying respect to the Unix systems from which Linux was born. The author was a
long time user of FreeBSD who migrated to Arch for several years, but has become
increasingly frustrated with Systemd, Gnome, RedHat and Ubuntu dominance. It is
believed that there is a need for a distribution that does not pander to ease of
use for casual users at the expense of putting up roadblocks for experienced Unix
veterans.</p>
<h2><a class="header" href="#architectures" id="architectures">Architectures</a></h2>
<p>HHL is running on the following processor architectures:</p>
<ul>
<li>x86 (minimum i486)</li>
<li>x86_64</li>
<li>armv7l</li>
<li>aarch64</li>
<li>riscv64</li>
</ul>
<h1><a class="header" href="#target-audience" id="target-audience">Target Audience</a></h1>
<p>My first computer was a Tandy TRS-80 handed down from an uncle. The interface
consisted of a blinking cursor on a monochrome screen, and it had no storage
beyond RAM and ROM. Whatever you could type into memory before shutting it off
and run with the included Basic interpretor was the extent of the software that
ran on that computer. As limited as it was, it was fascinating to me.</p>
<p>In this day and age an interface consisting of a blinking cursor without wallaper,
icons, notifications and voice input is bewildering to the average human.
Nevertheless, that is the interface that a fresh installation of HItchHiker will
always present to the user. Therefore, it can be reasoned that the target audience
will consist of individuals who either are comfortable with using a command line
interface or are eager to learn. Some proficiency using Linux or Unix is helpful,
but not 100% necessary given an ability and willingness to read the documentation
and get used to being &quot;close to the machine&quot;.</p>
<p>Indeed, HitchHiker will not do any kind of hand holding while you are installing
and using your new system. You will be expected to learn the hows and whys of
what makes a computer work. Most operating systems, including the majority of
Linux distributions, will gladly install, configure, and run 100s of programs
without your ever being aware that they are doing it. By the time you have
achived proficiency with HitchHiker, you will know what every running process is
for and why it is needed.</p>
<h1><a class="header" href="#whats-included" id="whats-included">What's Included</a></h1>
<ul>
<li>A full C and C++ development environment including compiler, headers and libraries.</li>
<li>Up to date versions of kernel, base libraries and toolchain components.</li>
<li>Where possible, BSD and historical Unix utilities have been incorporated.</li>
<li>Full documentation is included for all included software.</li>
<li>The HitchHiker build system is capable of bootstrapping itself from another
Linux distro or from HitchHiker itself, and is available for x86, Arm and RiscV
architectures.</li>
</ul>
<h1><a class="header" href="#whats-missing" id="whats-missing">What's Missing</a></h1>
<ul>
<li>Systemd - HitchHiker uses the S6 supervision suite and a minimal init.</li>
<li>No installer - HitchHiker is installed using Unix command line tools present
on any Linux distribution.</li>
<li>No apt, rpm, dnf, pacman, etc. HitchHiker uses NetBSD Pkgsrc for installing
extra software.</li>
<li>No daemons beyond what is required to provide a functional command prompt are
started by default.</li>
<li>No extra configuration is done to provide a &quot;consistent look and feel&quot; or any
such crap.
The Linux world is full of choices. Unfortunately, among the hundreds of installable
offerings the vast majority are &quot;vanity distros&quot; which are just a remix of another
distribution, with a different set of installed packages and a few cool wallpapers.</li>
</ul>
<p>HitchHiker on the other hand is not based on any other distribution of Linux. It
is a fully independent offering which tracks the most recent releases of the Linux
kernel, Glibc, GCC etc. It's smaller userland utilities have been mostly ported
from BSD or implemented from scratch. It's source tree can compile the entire
operating system with a single command using Makefiles. We strive for an active
and independent presence and want to push open source into new and exciting
frontiers, such as RiscV, while paying homage to classic Unix. While there are
other offerings that cover some of the same territory (Arch, Gentoo) we felt that
there was space for something different.</p>
<h1><a class="header" href="#installation" id="installation">Installation</a></h1>
<h1><a class="header" href="#binary" id="binary">Binary</a></h1>
<h1><a class="header" href="#downloading" id="downloading">downloading</a></h1>
<h1><a class="header" href="#x86" id="x86">x86</a></h1>
<p>The x86 platform includes all 32-bit Intel and Intel compatible processors
ranging from i386 to i786 processors. For the purposes of installation, the
x86_64 architecture, including all AMD64 and Intel 64-bit processors, is identical
in function and included in this page.</p>
<blockquote>
<p><strong><em>NOTE:</em></strong></p>
<p>Please note that the minimum supported processor is i486. This is not a limitation
specific to HitchHiker, but a limitation of the Linux Kernel itself and Glibc.
Should you have a computer of this vintage, and wish to get it running, you have
the choice of installing an older and likely unsupported distribution, or
installing an operating system descended from 4.4BSD (FreeBSD, NetBSD, and OpenBSD).</p>
</blockquote>
<h1><a class="header" href="#arm" id="arm">Arm</a></h1>
<h1><a class="header" href="#raspberry-pi" id="raspberry-pi">Raspberry Pi</a></h1>
<h1><a class="header" href="#riscv" id="riscv">Riscv</a></h1>
<h1><a class="header" href="#qemu" id="qemu">Qemu</a></h1>
<h1><a class="header" href="#beaglev" id="beaglev">BeagleV</a></h1>
<h1><a class="header" href="#source" id="source">Source</a></h1>
<h1><a class="header" href="#downloading-1" id="downloading-1">downloading</a></h1>
<h1><a class="header" href="#preparing-to-build" id="preparing-to-build">Preparing to Build</a></h1>
<h1><a class="header" href="#building-hitchhiker" id="building-hitchhiker">Building HitchHiker</a></h1>
<h1><a class="header" href="#post-install-configuration" id="post-install-configuration">Post Install Configuration</a></h1>
<h1><a class="header" href="#adding-a-user-account" id="adding-a-user-account">Adding a User Account</a></h1>
<h1><a class="header" href="#setting-up-networking" id="setting-up-networking">Setting up Networking</a></h1>
<h1><a class="header" href="#managing-processes" id="managing-processes">Managing Processes</a></h1>
<h1><a class="header" href="#installing-third-party-software" id="installing-third-party-software">Installing Third Party Software</a></h1>
<h1><a class="header" href="#updating-hitchhiker-linux" id="updating-hitchhiker-linux">Updating HitchHiker Linux</a></h1>
<h1><a class="header" href="#from-binary-sets" id="from-binary-sets">From Binary Sets</a></h1>
<h1><a class="header" href="#from-source" id="from-source">From Source</a></h1>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
</nav>
</div>
<script type="text/javascript">
window.playground_copyable = true;
</script>
<script src="elasticlunr.min.js" type="text/javascript" charset="utf-8"></script>
<script src="mark.min.js" type="text/javascript" charset="utf-8"></script>
<script src="searcher.js" type="text/javascript" charset="utf-8"></script>
<script src="clipboard.min.js" type="text/javascript" charset="utf-8"></script>
<script src="highlight.js" type="text/javascript" charset="utf-8"></script>
<script src="book.js" type="text/javascript" charset="utf-8"></script>
<!-- Custom JS scripts -->
<script type="text/javascript">
window.addEventListener('load', function() {
window.setTimeout(window.print, 100);
});
</script>
</body>
</html>