Merge pull request #43 from sam3d/dev
Add stage specification documentation
This commit is contained in:
commit
bc8a74858e
1 changed files with 23 additions and 10 deletions
33
README.md
33
README.md
|
@ -1,12 +1,14 @@
|
||||||
#TODO
|
# pi-gen
|
||||||
|
_Tool used to create the raspberrypi.org Raspbian images_
|
||||||
|
|
||||||
|
### TODO
|
||||||
1. Documentation
|
1. Documentation
|
||||||
|
|
||||||
#Dependencies
|
## Dependencies
|
||||||
|
|
||||||
`quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin`
|
`quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin`
|
||||||
|
|
||||||
#Config
|
## Config
|
||||||
|
|
||||||
Upon execution, `build.sh` will source the file `config` in the current
|
Upon execution, `build.sh` will source the file `config` in the current
|
||||||
working directory. This bash shell fragment is intended to set needed
|
working directory. This bash shell fragment is intended to set needed
|
||||||
|
@ -33,17 +35,17 @@ A simple example for building Raspbian:
|
||||||
IMG_NAME='Raspbian'
|
IMG_NAME='Raspbian'
|
||||||
```
|
```
|
||||||
|
|
||||||
#Stage Anatomy
|
## Stage Anatomy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#Raspbian Stage Overview
|
### Raspbian Stage Overview
|
||||||
|
|
||||||
The build of Raspbian is divided up into several stages for logical clarity
|
The build of Raspbian is divided up into several stages for logical clarity
|
||||||
and modularity. This causes some initial complexity, but it simplifies
|
and modularity. This causes some initial complexity, but it simplifies
|
||||||
maintenance and allows for more easy customization.
|
maintenance and allows for more easy customization.
|
||||||
|
|
||||||
- Stage 0, bootstrap. The primary purpose of this stage is to create a
|
- **Stage 0** - bootstrap. The primary purpose of this stage is to create a
|
||||||
usable filesystem. This is accomplished largely through the use of
|
usable filesystem. This is accomplished largely through the use of
|
||||||
`debootstrap`, which creates a minimal filesystem suitable for use as a
|
`debootstrap`, which creates a minimal filesystem suitable for use as a
|
||||||
base.tgz on Debian systems. This stage also configures apt settings and
|
base.tgz on Debian systems. This stage also configures apt settings and
|
||||||
|
@ -51,7 +53,7 @@ maintenance and allows for more easy customization.
|
||||||
minimal core is installed but not configured, and the system will not quite
|
minimal core is installed but not configured, and the system will not quite
|
||||||
boot yet.
|
boot yet.
|
||||||
|
|
||||||
- Stage 1, truly minimal system. This stage makes the system bootable by
|
- **Stage 1** - truly minimal system. This stage makes the system bootable by
|
||||||
installing system files like `/etc/fstab`, configures the bootloader, makes
|
installing system files like `/etc/fstab`, configures the bootloader, makes
|
||||||
the network operable, and installs packages like raspi-config. At this
|
the network operable, and installs packages like raspi-config. At this
|
||||||
stage the system should boot to a local console from which you have the
|
stage the system should boot to a local console from which you have the
|
||||||
|
@ -60,7 +62,7 @@ maintenance and allows for more easy customization.
|
||||||
really usable yet in a traditional sense yet. Still, if you want minimal,
|
really usable yet in a traditional sense yet. Still, if you want minimal,
|
||||||
this is minimal and the rest you could reasonably do yourself as sysadmin.
|
this is minimal and the rest you could reasonably do yourself as sysadmin.
|
||||||
|
|
||||||
- State 2, lite system. This stage produces the Raspbian-Lite image. It
|
- **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It
|
||||||
installs some optimized memory functions, sets timezone and charmap
|
installs some optimized memory functions, sets timezone and charmap
|
||||||
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
|
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
|
||||||
dphys-swapfile, and other basics for managing the hardware. It also
|
dphys-swapfile, and other basics for managing the hardware. It also
|
||||||
|
@ -75,13 +77,24 @@ maintenance and allows for more easy customization.
|
||||||
you were looking for something between truly minimal and Raspbian-lite,
|
you were looking for something between truly minimal and Raspbian-lite,
|
||||||
here's where you start trimming.
|
here's where you start trimming.
|
||||||
|
|
||||||
- Stage 3, desktop system. Here's where you get the full desktop system
|
- **Stage 3** - desktop system. Here's where you get the full desktop system
|
||||||
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
|
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
|
||||||
enhancements, etc. This is a base desktop system, with some development
|
enhancements, etc. This is a base desktop system, with some development
|
||||||
tools installed.
|
tools installed.
|
||||||
|
|
||||||
- Stage 4, complete Raspbian system. More development tools, an email
|
- **Stage 4** - complete Raspbian system. More development tools, an email
|
||||||
client, learning tools like Scratch, specialized packages like sonic-pi and
|
client, learning tools like Scratch, specialized packages like sonic-pi and
|
||||||
wolfram-engine, system documentation, office productivity, etc. This is
|
wolfram-engine, system documentation, office productivity, etc. This is
|
||||||
the stage that installs all of the things that make Raspbian friendly to
|
the stage that installs all of the things that make Raspbian friendly to
|
||||||
new users.
|
new users.
|
||||||
|
|
||||||
|
### Stage specification
|
||||||
|
If you wish to build up to a specified stage (such as building up to stage 2 for a lite system), place an empty file named `SKIP` in each of the `./stage` directories you wish not to include.
|
||||||
|
|
||||||
|
Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or from `./stage2` (if building a minimal system).
|
||||||
|
|
||||||
|
```
|
||||||
|
# Example for building a lite system
|
||||||
|
$ touch ./stage3/SKIP ./stage4/SKIP
|
||||||
|
$ rm stage4/EXPORT*
|
||||||
|
```
|
Loading…
Reference in a new issue