TurnKey bootstrap
Find a file
2026-10-14 19:31:27 -03:00
.forgejo/workflows ci: Forgejo workflows for git.pop.coop 2026-10-14 22:23:48 +00:00
.github/workflows ci: security scanning, with the findings read and justified 2026-10-07 18:19:15 +00:00
.gitignore initial commit: debian/squeeze 2012-07-16 12:38:04 +03:00
Makefile Only warn about missing deps for 'make help' and some output adjustment 2026-05-31 09:40:19 +10:00
README.rst Rewrite readme 2026-05-31 09:41:01 +10:00
removelist Major refactoring of TurnKey bootstrap repo. 2020-02-21 12:07:45 +11:00
TODO Major refactoring of TurnKey bootstrap repo. 2020-02-21 12:07:45 +11:00

About
=====

This project builds a Debian ``bootstrap`` for use as the build base for
TurnKey GNU/Linux appliances.

A ``bootstrap`` is the minimal root filesystem in which packages can
be installed. TurnKey uses the default Debian ``debootstrap`` tool to build a
"minbase" variant Debian bootstrap, with the addition of a couple of packages.

Current supported architectures are:

- amd64 - aka x86_64
- arm64 - aka aarch64

An amd64 host can build both amd64 & arch64 bootstraps; an arm64 host can only
build arm64.

Install
=======

Requirements
------------

An internet connection is required to download the Debian packages when building
the bootstrap. There are also some dependencies that can be installed via apt.
If running on a non-TurnKey system you will need to add the TurnKey apt repo
to install the 2 TurnKey dependencies.


* TurnKey packages (from TurnKey apt repo):
    - fab
    - pool

* Debian packages - native arch builds - amd64 on amd64 / arm64 on arm64:
    - debootstrap

* Debian packages - arm64 built on amd64:
    - qemu-debootstrap
    - qemu-system-arm
    - qemu-user-static
    - binfmt-support

When building an arm64 bootstrap on amd64, the fab ``install-arm-on-amd-deps``
script can be used to install all deps.

** ``debootstrap`` Debian release transition note **

During a transition to a new Debian release occasionally you may need a newer
version of `debootstrap`` than the one packaged for your host system. If the
bootstrap fails to build for a Debian release newer than the host system, try
upgrading to the ``debootstrap`` version of the bootstrap you are building.
Installing a newer ``debootstrap`` deb is fine as it is a collection of shell
scripts with minimal dependencies.

Download the newer deb and install with apt. E.g. to install the Debian
14/Forky ``debootstrap`` package on a v19.x TKLDev (Debian 13/Trixie)::

    # where XXXX is the debootstrap version

    wget http://deb.debian.org/debian/pool/main/d/debootstrap/debootstrap_XXXX_all.deb
    apt update
    apt install ./debootstrap/debootstrap_XXXX_all.deb

Clone this repo
---------------

Once dependencies are installed, then simply clone this repo::

    cd /turnkey
    git clone https://github.com/turnkeylinux/bootstrap.git

Usage
=====

This project uses a Makefile so building is as simple as running ``make``. A
few common usage scenarios are covered below, but for full details about the
possible env vars that can be used to control the process can be viewed via::

    make help

Build and copy bootstrap
------------------------

When building a bootstrap for local use build to the ``install`` target. I.e.::

    make clean
    make install

That will build the bootstrap, remove the paths noted in the ``removelist``
and copy to a directory named ``<DEBIAN_CODENAME>-$ARCH`` in
``BOOTSTRAPS_PATH``. The default value of ``BOOTSTRAPS_PATH`` is
``$FAB_PATH/bootstraps/`` (usually ``/turnkey/fab/bootstraps/``) so the full
path of a trixie amd64 bootstrap will be
``/turnkey/fab/bootstraps/trixie-amd64/``

Build tarball
-------------

If you wish to share your bootstrap, do not specify a make target. With no
target noted, it will generate a tarball of the bootstrap as an additional
step. I.e.::

    make clean
    make

Build an alternate release bootstrap
------------------------------------

To build a bootstrap for a Debian release other than the host, set the value
of ``RELEASE``. E.g. to build a Debian forky release on a v19.x (trixie)
TKLDev::

    make clean
    RELEASE=debian/forky make install

Build arm64 bootstrap on amd64
------------------------------

To build a non-native arch bootstrap, set the value of ``FAB_ARCH``. E.g.
to build an arm64 forky bootstrap on v19.x TKLDev::

    make clean
    FAB_ARCH=arm64 RELEASE=debian/forky make install