A minimal Linux system with an automated build process.
This project automates building a minimal Linux environment from source. The build process is orchestrated by the make script,
which prepares a root filesystem, fetches, builds, installs, and configures a set of core packages using per-package makepkg scripts
found in each package directory (e.g., linux/makepkg, glibc/makepkg, etc.).
-
make: The main script. It:- Creates the root filesystem structure.
- Iterates through a predefined package list, using each package’s
makepkgto download, build, install, and configure. - Creates a hash of the build process for each package and on consecutive runs, it checks if the package has changed to avoid unnecessary rebuilds.
- At the end, builds an initramfs image.
-
*/makepkg: Each package directory contains amakepkgscript defining how to build and install that package. These scripts standardize the build process by definingbuild,install, andconfigurefunctions. -
Packages include the Linux kernel, glibc, BusyBox, OpenRC, and other essential utilities.
./makeThis will build all components and produce a bootable root filesystem and initramfs.
- Get networking working
- Modify the build process to produce tarballs of each package, effectively making a proto-package manager
- Transform the proto-package manager into a full package manager and bundle it with the root filesystem
- Transition from
busyboxtoGNU coreutils - Add more packages (e.g.,
bash,zsh,vim,git, etc.) - Use
udevinstead of a fixed/devdirectory- Stop cheating and build
libgcc_s.soandlibgcc_s.so.1from source, instead of copying them from the host system
- Stop cheating and build
- Add a bootloader configuration and ability to make a bootable ISO
- Add an install script to the ISO that can install the system to a disk
- Move each package into its own repository
This project (in particular, the make script and each package makepkg script and accompanying files) is licensed under the GPL-3.0 License.
See the LICENSE.md file for details.