minimal/mdbook/src/build_scripts.md
2020-09-08 13:41:42 +03:00

75 lines
3.3 KiB
Markdown

# Build Process
The MLL build process can be divided in several major phases. Refer to the [common properties](./common.md#properties) for more details on the folders that are referenced below.
* [Preparations](#preparations)
* [Kernel](#kernel)
* [GNU C Library](#gnu-c-library)
* [Busybox](#busybox)
* [Overlay bundles](#overlay-bundles)
* [Initramfs](#initramfs)
* [Boot loader](#boot-loader)
* [ISO image](#iso-image)
---
## Preparations
* [00_clean.sh](./00_clean.md)
Everything from ``WORK_DIR`` is removed. All previous MLL build artifacts are lost and the MLL build process can start from scratch. The previously downloaded sources are preserved in order to speed up the process.
## Kernel
* [01_get_kernel.sh](./01_get_kernel.md)
* [02_build_kernel.sh](./02_build_kernel.md)
Linux kernel source code is downloaded. [OverlayFS](https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt) and [EFI stub](https://www.kernel.org/doc/Documentation/efi-stub.txt) are configured. Kernel is built and the kernel binary, along with the kernel header files are placed in ``KERNEL_INSTALLED``.
## GNU C Library
* [03_get_glibc.sh](./03_get_glibc.md)
* [04_build_glibc.sh](./04_build_glibc.md)
* [05_prepare_sysroot.sh](./05_prepare_sysroot.md)
GNU C Library source code is downloaded. Build preparations are made in the ``GLIBC_OBJECTS``. GLIBC is built and the final artifacts are placed in ``GLIBC_INSTALLED``. The ``.so`` files, along with all GLIBC headers and all kernel headers are placed in ``SYSROOT``.
## Busybox
* [06_get_busybox.sh](./06_get_busybox.md)
* [07_build_busybox.sh](./07_build_busybox.md)
Busybox source code is downloaded. The build configuration is tweaked to reference ``SYSROOT``. The final build artifacts are placed in ``BUSYBOX_INSTALLED``.
## Overlay bundles
* [08_prepare_bundles.sh](./08_prepare_bundles.md)
All overlay bundles that have been enabled in ``.config`` are built. The final overlay structure is generated in ``OVERLAY_ROOTFS``.
## Initramfs
* [09_generate_rootfs.sh](./09_generate_rootfs.md)
* [10_pack_rootfs.sh](./10_pack_rootfs.md)
* [11_generate_overlay.sh](./11_generate_overlay.md)
The installed Busybox artifacts and ``src/minimal_rootfs/`` are merged in ``ROOTFS``. The initramfs file ``WORK_DIR/rootfs.cpio.xz`` is generated from ``ROOTFS``. The final initramfs ISO image structure for the overlay bundles is generated in ``ISOIMAGE_OVERLAY``.
## Boot loader
* [12_get_syslinux.sh](./12_get_syslinux.md)
* [12_get_systemd-boot.sh](./12_get_systemd-boot.md)
Syslinux and/or systemd-boot are downloaded.
## ISO image
* [13_prepare_iso.sh](./13_prepare_iso.md)
* [14_generate_iso.sh](./14_generate_iso.md)
* [15_generate_image.sh](./15_generate_image.md)
* [16_cleanup.sh](./16_cleanup.md)
The boot loader for BIOS/UEFI is prepared and the boot configuration artifacts from ``src/minimal_boot/`` are properly placed. The final ISO image layout structure is prepared in ``ISOIMAGE``. This directory contains the BIOS/UEFI boot loader, Linux kernel and initramfs, along with all MLL overlay bundles (i.e. additional software and/or configurations) that have been enabled. The ISO image file ``src/minimal_linux_live.iso`` is generated. The MLL filesystem image (e.g. use in Docker) ``src/mll_image.tgz`` is generated. Final cleanup is performed.