live-bootstrap/sysa/run.sh

183 lines
3.5 KiB
Bash
Raw Normal View History

2021-01-29 01:31:56 +00:00
#!/bin/bash
# SPDX-FileCopyrightText: 2021 Andrius Štikonas <andrius@stikonas.eu>
# SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space>
# SPDX-FileCopyrightText: 2021 Paul Dersey <pdersey@gmail.com>
#
2021-01-29 01:31:56 +00:00
# SPDX-License-Identifier: GPL-3.0-or-later
set -e
# shellcheck source=sysglobal/helpers.sh
2021-01-29 01:31:56 +00:00
. helpers.sh
# shellcheck source=/dev/null
. bootstrap.cfg
2021-01-29 01:31:56 +00:00
export PREFIX=/usr
export SOURCES=/after
2021-08-04 03:45:39 +01:00
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}"
done
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"
Update the linux kernel for sysb/c to 4.9.10. - We do not use latest 4.9.x because it relies on a new version of binutils, while older versions do not. (Note: we should be able to go a bit newer but I didn't bother testing >50 versions to figure this out). - We do not use newer kernel versions because they require one or more of (new perl, new binutils, new make, new gcc, new bison, new tar). - sysb and sysc are updated to use the SATA (libata) subsystem (aka sda) instead of IDE-emulating SATA subsystem (aka hda) which is now available to us. - While theoretically according to docs 4.9 should work OOTB with our version of binutils this is not the case, so we have to do a bit of (interesting) patching. But this does not break anything. - Thankfully serial support in 4.9 is not screwed over like it is in 2.6 so we can revert to that. - 4.9 has the linux-libre project at our disposal, instead of gNewSense. So we use this. Unfortunatley that takes forever because we have to use sed because our version of gawk is too old/buggy. :( I plan to introduce very shortly 1. parallelism 2. 'sysc snapshot' which will start from sysc to avoid this. I do not want to use linux-libre tarballs because they make modificiations directly from this script (aka not easily verifiable, use the source!) and this script allows for much greater flexibility. - We compile the initramfs ahead-of-build using the in-tree cpio generator instead of also building cpio to use less packages. We do NOT build the initramfs into the kernel like 2.6 (unsupported). - Oh and fix a kexec-tools checksum.
2021-08-04 03:56:07 +01:00
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
2021-02-27 12:22:22 +00:00
}
2021-02-07 15:39:42 +00:00
build flex-2.5.11
2021-01-29 01:31:56 +00:00
# Patch meslibc to support > 255 command line arguments
build mes-0.23 mes-libc-0.23.sh
build tcc-0.9.27 tcc-meslibc-rebuild.sh checksums/tcc-meslibc-rebuild
build musl-1.1.24 '' checksums/pass1
2021-01-28 18:53:44 +00:00
# Rebuild tcc using musl
build tcc-0.9.27 tcc-musl-pass1.sh checksums/tcc-musl-pass1
2021-02-01 01:09:24 +00:00
# Rebuild musl using tcc-musl
build musl-1.1.24 '' checksums/pass2
2021-02-03 00:16:39 +00:00
# Rebuild tcc-musl using new musl
build tcc-0.9.27 tcc-musl-pass2.sh checksums/tcc-musl-pass2
2021-03-11 18:12:52 +00:00
# Rebuild sed using musl
build sed-4.0.9 sed-4.0.9.sh checksums/pass2
2021-03-11 18:12:52 +00:00
# Rebuild bzip2 using musl
build bzip2-1.0.8 bzip2-1.0.8.sh checksums/bzip2-pass2
build m4-1.4.7
build flex-2.6.4
build bison-3.4.1 stage1.sh checksums/stage1
build bison-3.4.1 stage2.sh checksums/stage2
build bison-3.4.1 stage3.sh checksums/stage3
2021-02-04 21:41:43 +00:00
2021-02-10 18:06:40 +00:00
build grep-2.4
2021-02-06 00:16:32 +00:00
build diffutils-2.7
# Rebuild coreutils using musl
build coreutils-5.0 coreutils-5.0.sh checksums/pass2
# Build only date, mktemp and sha256sum
build coreutils-6.10
2021-02-28 20:53:20 +00:00
2021-02-11 09:22:12 +00:00
build gawk-3.0.4
build perl-5.000
2021-02-14 15:36:05 +00:00
build perl-5.003
2021-02-16 23:20:34 +00:00
2021-02-17 23:46:18 +00:00
build perl5.004_05
2021-02-18 23:19:09 +00:00
build perl5.005_03
2021-02-24 01:02:10 +00:00
build perl-5.6.2
2021-02-27 12:22:22 +00:00
populate_device_nodes
2021-02-27 17:35:02 +00:00
build autoconf-2.52 stage1.sh
2021-02-21 21:09:47 +00:00
2021-03-17 00:24:37 +00:00
build automake-1.6.3 stage1.sh
build automake-1.6.3 stage2.sh
build automake-1.6.3 stage3.sh
build automake-1.4-p6
2021-02-27 17:08:17 +00:00
2021-02-27 17:35:02 +00:00
build autoconf-2.52 stage2.sh
2021-02-27 20:07:04 +00:00
build autoconf-2.13
2021-02-27 22:42:23 +00:00
build autoconf-2.12
2021-03-25 19:14:34 +00:00
build libtool-1.4
2021-03-12 00:28:29 +00:00
2021-02-24 14:38:10 +00:00
build binutils-2.14
2021-03-03 00:05:33 +00:00
# Build musl with fewer patches
build musl-1.1.24 binutils-rebuild.sh checksums/pass3 patches-pass3
populate_device_nodes
2021-03-03 00:54:17 +00:00
# Rebuild tcc-musl using new musl
build tcc-0.9.27 tcc-musl-pass3.sh checksums/tcc-musl-pass3 patches-musl-pass3
2021-03-03 00:54:17 +00:00
2021-03-17 22:17:11 +00:00
build autoconf-2.53 stage1.sh
build autoconf-2.53 stage2.sh
2021-03-18 00:23:40 +00:00
build automake-1.7 stage1.sh
build autoconf-2.54 stage1.sh
build autoconf-2.54 stage2.sh
build automake-1.7 stage2.sh
2021-03-18 17:47:12 +00:00
build autoconf-2.55
2021-03-18 19:25:50 +00:00
build automake-1.7.8
2021-03-18 19:33:54 +00:00
build autoconf-2.57
2021-03-18 19:37:07 +00:00
build autoconf-2.59
2021-03-18 19:53:06 +00:00
build automake-1.8.5
2021-03-19 15:40:07 +00:00
build help2man-1.36.4
2021-03-19 20:00:43 +00:00
build autoconf-2.61 stage1.sh
build autoconf-2.61 stage2.sh
2021-03-21 16:10:53 +00:00
build automake-1.9.6 stage1.sh
build automake-1.9.6 stage2.sh
2021-03-25 17:52:31 +00:00
build findutils-4.2.33
2021-03-25 19:14:34 +00:00
build libtool-2.2.4
2021-03-25 20:39:08 +00:00
build automake-1.10.3
2021-06-30 18:43:33 +01:00
build autoconf-2.64
2021-03-25 21:35:43 +00:00
2021-03-21 16:10:53 +00:00
build gcc-4.0.4 pass1.sh checksums/pass1
build linux-headers-5.10.41 '' '' '' linux-5.10.41
2021-03-21 16:10:53 +00:00
build musl-1.2.2
build gcc-4.0.4 pass2.sh checksums/pass2
2021-08-04 03:45:39 +01:00
build util-linux-2.19.1
2021-06-22 11:11:23 +01:00
2021-08-04 03:45:39 +01:00
build kbd-1.15
build make-3.82
2021-06-10 11:27:45 +01:00
2021-08-04 03:45:39 +01:00
if [ "${CHROOT}" = False ]; then
build kexec-tools-2.0.22
create_sysb
2021-06-29 01:42:39 +01:00
Update the linux kernel for sysb/c to 4.9.10. - We do not use latest 4.9.x because it relies on a new version of binutils, while older versions do not. (Note: we should be able to go a bit newer but I didn't bother testing >50 versions to figure this out). - We do not use newer kernel versions because they require one or more of (new perl, new binutils, new make, new gcc, new bison, new tar). - sysb and sysc are updated to use the SATA (libata) subsystem (aka sda) instead of IDE-emulating SATA subsystem (aka hda) which is now available to us. - While theoretically according to docs 4.9 should work OOTB with our version of binutils this is not the case, so we have to do a bit of (interesting) patching. But this does not break anything. - Thankfully serial support in 4.9 is not screwed over like it is in 2.6 so we can revert to that. - 4.9 has the linux-libre project at our disposal, instead of gNewSense. So we use this. Unfortunatley that takes forever because we have to use sed because our version of gawk is too old/buggy. :( I plan to introduce very shortly 1. parallelism 2. 'sysc snapshot' which will start from sysc to avoid this. I do not want to use linux-libre tarballs because they make modificiations directly from this script (aka not easily verifiable, use the source!) and this script allows for much greater flexibility. - We compile the initramfs ahead-of-build using the in-tree cpio generator instead of also building cpio to use less packages. We do NOT build the initramfs into the kernel like 2.6 (unsupported). - Oh and fix a kexec-tools checksum.
2021-08-04 03:56:07 +01:00
build linux-4.9.10
2021-03-21 16:10:53 +00:00
go_sysb
fi