2017-06-30 21:32:33 +00:00
|
|
|
branacleos/build
|
|
|
|
================
|
2017-05-06 23:16:00 +00:00
|
|
|
|
2017-07-02 06:52:40 +00:00
|
|
|
Tool used to create the [BarnacleOS](https://github.com/barnacleos) images.
|
2017-07-02 06:51:25 +00:00
|
|
|
Based on [pi-gen](https://github.com/rpi-distro/pi-gen) tool used to create
|
|
|
|
the official [raspberrypi.org](https://raspberrypi.org/) Raspbian images.
|
2017-05-06 23:16:00 +00:00
|
|
|
|
|
|
|
|
2017-06-30 21:36:04 +00:00
|
|
|
|
|
|
|
Dependencies
|
|
|
|
------------
|
2016-04-11 06:25:30 +00:00
|
|
|
|
2017-05-06 23:16:00 +00:00
|
|
|
On Debian-based systems:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
apt-get install quilt parted realpath qemu-user-static debootstrap zerofree pxz zip \
|
|
|
|
dosfstools bsdtar libcap2-bin grep rsync
|
|
|
|
```
|
|
|
|
|
2017-07-02 04:19:03 +00:00
|
|
|
The file `depends` contains a list of tools needed. The format of this
|
2017-07-02 06:55:42 +00:00
|
|
|
file is `<tool>[:<debian-package>]`.
|
2017-05-06 23:16:00 +00:00
|
|
|
|
2016-09-05 04:02:39 +00:00
|
|
|
|
2017-06-30 21:36:04 +00:00
|
|
|
|
|
|
|
Stage Anatomy
|
|
|
|
-------------
|
2016-09-05 04:02:39 +00:00
|
|
|
|
|
|
|
The build of Raspbian is divided up into several stages for logical clarity
|
2017-07-02 04:19:03 +00:00
|
|
|
and modularity. This causes some initial complexity, but it simplifies
|
2016-09-05 04:02:39 +00:00
|
|
|
maintenance and allows for more easy customization.
|
|
|
|
|
2017-07-02 04:19:03 +00:00
|
|
|
- **Stage 0** - bootstrap. The primary purpose of this stage is to create a
|
|
|
|
usable filesystem. This is accomplished largely through the use of
|
2016-09-05 04:02:39 +00:00
|
|
|
`debootstrap`, which creates a minimal filesystem suitable for use as a
|
2017-07-02 04:19:03 +00:00
|
|
|
base.tgz on Debian systems. This stage also configures apt settings and
|
|
|
|
installs `raspberrypi-bootloader` which is missed by debootstrap. The
|
2016-09-05 04:02:39 +00:00
|
|
|
minimal core is installed but not configured, and the system will not quite
|
|
|
|
boot yet.
|
|
|
|
|
2017-07-02 04:19:03 +00:00
|
|
|
- **Stage 1** - truly minimal system. This stage makes the system bootable by
|
2016-09-05 04:02:39 +00:00
|
|
|
installing system files like `/etc/fstab`, configures the bootloader, makes
|
2017-07-02 04:19:03 +00:00
|
|
|
the network operable, and installs packages like raspi-config. At this
|
2016-09-05 04:02:39 +00:00
|
|
|
stage the system should boot to a local console from which you have the
|
|
|
|
means to perform basic tasks needed to configure and install the system.
|
|
|
|
This is as minimal as a system can possibly get, and its arguably not
|
2017-07-02 04:19:03 +00:00
|
|
|
really usable yet in a traditional sense yet. Still, if you want minimal,
|
2016-09-05 04:02:39 +00:00
|
|
|
this is minimal and the rest you could reasonably do yourself as sysadmin.
|
|
|
|
|
2017-07-02 04:19:03 +00:00
|
|
|
- **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It
|
2016-09-05 04:02:39 +00:00
|
|
|
installs some optimized memory functions, sets timezone and charmap
|
|
|
|
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
|
2017-07-02 04:19:03 +00:00
|
|
|
dphys-swapfile, and other basics for managing the hardware. It also
|
2016-09-05 04:02:39 +00:00
|
|
|
creates necessary groups and gives the pi user access to sudo and the
|
|
|
|
standard console hardware permission groups.
|
|
|
|
|
|
|
|
There are a few tools that may not make a whole lot of sense here for
|
|
|
|
development purposes on a minimal system such as basic python and lua
|
2017-07-02 04:19:03 +00:00
|
|
|
packages as well as the `build-essential` package. They are lumped right
|
2016-09-05 04:02:39 +00:00
|
|
|
in with more essential packages presently, though they need not be with
|
2017-07-02 04:19:03 +00:00
|
|
|
pi-gen. These are understandable for Raspbian's target audience, but if
|
2016-09-05 04:02:39 +00:00
|
|
|
you were looking for something between truly minimal and Raspbian-lite,
|
|
|
|
here's where you start trimming.
|
|
|
|
|
2017-07-02 04:23:35 +00:00
|
|
|
- **Stage 3** - secure system. This stage configures SSH do disallow root
|
|
|
|
login, adds iptables rules, etc.
|