aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/INTERNALS.md
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2017-05-22 22:35:47 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2017-05-22 22:35:47 +0000
commit903059dfb0dc520f0618062bbbafac4ebd8e29f8 (patch)
tree58d54a90a1dce411cbade9d26702c4a307c1518c /documentation/INTERNALS.md
parent3e9a6410bc6265fd322bedf4ac54dd85eea8e51e (diff)
downloadlh-bootstrap-903059dfb0dc520f0618062bbbafac4ebd8e29f8.tar.gz
Add index.html, rename documentation to doc, clean up
Diffstat (limited to 'documentation/INTERNALS.md')
-rw-r--r--documentation/INTERNALS.md106
1 files changed, 0 insertions, 106 deletions
diff --git a/documentation/INTERNALS.md b/documentation/INTERNALS.md
deleted file mode 100644
index ab7aa54..0000000
--- a/documentation/INTERNALS.md
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
-
-# Internals of lh-bootstrap
-
-Laurent Bercot
-last modified: 2017-04-07
-
-## Definitions
-
-BUILD is the machine you're running this set of scripts on.
-HOST is the machine you're building the image for.
-TARGET has the same meaning as HOST. See the `README.md` file.
-
-
-## General organization
-
-### ./lh-config and ./make
-
-All your configuration should happen in the `lh-config` file. It is a series
-of variable assignments, in shell syntax.
-
-`./make` is a shell script that reads `lh-config`, provides reasonable
-defaults for variables not specified in `lh-config`, exports a set of
-variables into the environment then executes into `make` with the exact
-same command line that it was given. So you can use make options, specify
-a make target, etc.
-
-
-### Other files and directories
-
-The main `Makefile` includes sub-Makefiles that are in the subdirectories
-of the `sub` directory, roughly one per software package. Those subdirectories
-also may contain various scripts and patches necessary to make the software
-package compile and/or run properly.
-
-The `bin` directory contains scripts that are used throughout the whole
-build process. They have been designed for maximum portability, not efficiency.
-
-The `sysdeps` directory contains "system dependencies" for the various HOSTs
-that lh-bootstrap supports, i.e. a textual description of the
-HOST architecture's capabilities and quirks, such as endianness, sizes of
-certain types, etc. These descriptions are used when cross-compiling the
-skarnet.org packages.
-
-The `layout` directory contains the base layout for all the filesystems
-that are used to build our image:
-
-- *rootfs* is the basic one, the root filesystem. It will be mounted
-read-only.
-- *rwfs* is a read-write directory we use to store our configuration
-and other read-write data for normal operation of the machine. It is
-not accessible to "normal" users. For instance, `/var` is a part of
-rwfs.
-- *userfs* is a read-write directory that will be used to store user
-data. For instance, `/home` is a part of userfs.
-- *stagingfs* is unused for now. It will be used for safe firmware
-updates.
-
- All the files under `layout` must be text or otherwise editable
-files: there must be absolutely no binary files in it. Currently,
-the timezone files (`/etc/zoneinfo`) are an exception to that rule;
-at some point I will remove them and make a sub-package script to
-install them.
-
-
-## Dependencies and build order
-
-`./make` first builds a set of tools for the BUILD. The goal is to make the
-build work on as many BUILD machines as possible, with as few dependencies
-as possible. For instance, parts of a recent `util-linux` package are
-installed because the build needs the `-P` option to the `losetup` binary
-and not all distributions ship a `util-linux` version with `losetup -P`.
-
-Then `./make` builds the software for the HOST, installing it into the
-`rootfs` subdirectory of the output.
-
-
-### Topological list of the BUILD tools
-
-- Linux kernel headers
-- musl
-- skarnet.org packages
-- some binaries from util-linux
-- xz-utils
-- kmod
-
-
-### Topological list of the HOST packages
-
- For now, the HOST packages are a mix of "production" bootstrap packages,
-i.e. software that is needed to get a host up and running without
-aiming for development on that host, and "development" bootstrap packages,
-i.e. software that is needed to turn the host into a native development
-platform (in order to build and install software that is difficult to
-cross-compile). A better separation between those two sets of packages
-is planned for future versions of lh-bootstrap.
-
-- Linux kernel
-- musl
-- bearssl
-- skarnet.org packages
-- busybox
-- dnscache (from djbdns)
-- dropbear
-- a native host toolchain (for now just copied from a location)