bootstrapping.md

May 3, 2021 ยท View on GitHub

Installing build dependencies

We need specific packages to build this Linux distribution. Without them you can't perform the required tasks. To install required build dependencies:

Fedora

dnf groupinstall "Development Tools" "C Development Tools and Libraries"
dnf install clang lld glibc-static jq zstd bsdcpio bsdtar curl mtools libisoburn which python3 texinfo meson rsync freetype-devel zlib-devel xz-devel libzstd-devel libarchive-devel elfutils-libelf-devel openssl-devel readline-devel libffi-devel sqlite-devel

Debian/Ubuntu:

apt install build-essential clang lld autoconf automake autopoint libtool jq zstd libarchive-tools attr curl mtools xorriso python3 meson rsync libtasn1-bin libfreetype-dev zlib1g-dev liblzma-dev libzstd-dev libarchive-dev libelf-dev libssl-dev libreadline-dev libffi-dev libsqlite-dev

Ataraxia GNU/Linux:

tsukuri emerge libisoburn mtools freetype

Compiling package manager

Ataraxia GNU/Linux uses tsukuri as its package manager. You should do this commands to install tsukuri (AS ROOT):

cd /tmp
curl -OL https://github.com/ataraxialinux/tsukuri/archive/refs/tags/0.2.5.1.tar.gz
tar xpf 0.2.5.1.tar.gz
cd tsukuri-0.2.5.1
mkdir build
cd build
meson --prefix=/usr -Dsystemd=false ..
ninja
ninja install

Building

Arguments supported by "build script":

target		- Select target for build

Sub-arguments supported by "build script":

 -a <Architecture>		- Select architecture for build
 -k <Kernel>			- Select kernel for target OS
 -b <Board>			- Build OS for specific board
 -C				- Enable ccache

We have seperated the build process into seperate "targets":

 * toolchain              - This stage intended to compile cross-toolchain
 * system                 - This stage intended to compile basic target system with cross-compiler (You don't need to compile stage 0)
 * installer              - This stage intended to generate installer .iso image
 * stage                  - This stage intended to generate archive with pre-compiled OS

To begin the bootstrap process, as root: See supported platforms and architecures.

./build target -a [supported architecture] -k [kernel] -b [supported board] [target name]

And magic happens!