Use of a Linux initramfs to fully automate the bootstrapping process
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

182 lines
3.5 KiB

# SPDX-FileCopyrightText: 2021 Andrius Štikonas <>
# SPDX-FileCopyrightText: 2021 fosslinux <>
# SPDX-FileCopyrightText: 2021 Paul Dersey <>
# SPDX-License-Identifier: GPL-3.0-or-later
set -e
# shellcheck source=sysglobal/
# shellcheck source=/dev/null
. bootstrap.cfg
export PREFIX=/usr
export SOURCES=/after
mkdir -p "${PREFIX}/sbin"
export PATH="${PREFIX}/bin:${PREFIX}/sbin"
create_sysb() {
# Copy everything in
echo "Creating sysb rootfs"
mkdir -p /sysb/usr
for d in bin include lib libexec sbin share; do
cp -r "${PREFIX}/${d}" "/sysb/usr/${d}"
populate_device_nodes /sysb
go_sysb() {
# Mount proc for kexec
mkdir /proc /etc
mount -t proc proc /proc
# kexec time
echo "Loading kernel + sysb initramfs using kexec"
kexec -l "${PREFIX}/boot/linux-4.9.10" --console-serial \
--initrd="${PREFIX}/boot/initramfs-sysb" \
--append="init=/init console=ttyS0"
echo "kexecing into sysb"
kexec -e
build flex-2.5.11
# Patch meslibc to support > 255 command line arguments
build mes-0.23
build tcc-0.9.27 checksums/tcc-meslibc-rebuild
build musl-1.1.24 '' checksums/pass1
# Rebuild tcc using musl
build tcc-0.9.27 checksums/tcc-musl-pass1
# Rebuild musl using tcc-musl
build musl-1.1.24 '' checksums/pass2
# Rebuild tcc-musl using new musl
build tcc-0.9.27 checksums/tcc-musl-pass2
# Rebuild sed using musl
build sed-4.0.9 checksums/pass2
# Rebuild bzip2 using musl
build bzip2-1.0.8 checksums/bzip2-pass2
build m4-1.4.7
build flex-2.6.4
build bison-3.4.1 checksums/stage1
build bison-3.4.1 checksums/stage2
build bison-3.4.1 checksums/stage3
build grep-2.4
build diffutils-2.7
# Rebuild coreutils using musl
build coreutils-5.0 checksums/pass2
# Build only date, mktemp and sha256sum
build coreutils-6.10
build gawk-3.0.4
build perl-5.000
build perl-5.003
build perl5.004_05
build perl5.005_03
build perl-5.6.2
build autoconf-2.52
build automake-1.6.3
build automake-1.6.3
build automake-1.6.3
build automake-1.4-p6
build autoconf-2.52
build autoconf-2.13
build autoconf-2.12
build libtool-1.4
build binutils-2.14
# Build musl with fewer patches
build musl-1.1.24 checksums/pass3 patches-pass3
# Rebuild tcc-musl using new musl
build tcc-0.9.27 checksums/tcc-musl-pass3 patches-musl-pass3
build autoconf-2.53
build autoconf-2.53
build automake-1.7
build autoconf-2.54
build autoconf-2.54
build automake-1.7
build autoconf-2.55
build automake-1.7.8
build autoconf-2.57
build autoconf-2.59
build automake-1.8.5
build help2man-1.36.4
build autoconf-2.61
build autoconf-2.61
build automake-1.9.6
build automake-1.9.6
build findutils-4.2.33
build libtool-2.2.4
build automake-1.10.3
build autoconf-2.64
build gcc-4.0.4 checksums/pass1
build linux-headers-5.10.41 '' '' '' linux-5.10.41
build musl-1.2.2
build gcc-4.0.4 checksums/pass2
build util-linux-2.19.1
build kbd-1.15
build make-3.82
if [ "${CHROOT}" = False ]; then
build kexec-tools-2.0.22
build linux-4.9.10