logo

live-bootstrap

Mirror of <https://github.com/fosslinux/live-bootstrap>
commit: f12897265c945986bf7aef47e0227c239888fabc
parent 732af79cddb56c0689207ce5ac53a088d7789648
Author: fosslinux <fosslinux@aussies.space>
Date:   Mon, 11 Oct 2021 07:54:23 +1100

Shuffle around the creation of sysb

For further RAM savings, we want to create sysb -without- having linux
tarball extracted at the same time. To accomplish this, we move the
gen_init_cpio + related script out of the tree and create it afterward.

Also use hard links to free up some more space.

Diffstat:

Msysa/linux-4.9.10/files/config2+-
Msysa/linux-4.9.10/linux-4.9.10.sh11+++--------
Asysa/linux-4.9.10/patches/initramfs_list.patch17+++++++++++++++++
Msysa/run.sh11+++++++----
4 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/sysa/linux-4.9.10/files/config b/sysa/linux-4.9.10/files/config @@ -177,7 +177,7 @@ CONFIG_SCHED_AUTOGROUP=y # CONFIG_SYSFS_DEPRECATED is not set CONFIG_RELAY=y CONFIG_BLK_DEV_INITRD=y -CONFIG_INITRAMFS_SOURCE="/sysb" +CONFIG_INITRAMFS_SOURCE="" CONFIG_INITRAMFS_ROOT_UID=0 CONFIG_INITRAMFS_ROOT_GID=0 CONFIG_RD_GZIP=y diff --git a/sysa/linux-4.9.10/linux-4.9.10.sh b/sysa/linux-4.9.10/linux-4.9.10.sh @@ -41,14 +41,6 @@ src_prepare() { } src_compile() { - # Generate the initramfs so we can remove /sysb - make ARCH=i386 prepare - make ARCH=i386 usr/ - mkdir -p "${PREFIX}/boot" - mv usr/initramfs_data.cpio.gz "${PREFIX}/boot/initramfs-sysb" - make clean - rm -rf /sysb - sed -i 's:/sysb::' .config cp .config include/config/auto.conf rm include/generated/autoconf.h generate_autoconf_h @@ -58,5 +50,8 @@ src_compile() { } src_install() { + mkdir -p "${PREFIX}/boot" cp arch/i386/boot/bzImage "${PREFIX}/boot/linux-4.9.10" + cp usr/gen_init_cpio "${PREFIX}/bin" + cp scripts/gen_initramfs_list.sh "${PREFIX}/bin" } diff --git a/sysa/linux-4.9.10/patches/initramfs_list.patch b/sysa/linux-4.9.10/patches/initramfs_list.patch @@ -0,0 +1,17 @@ +SPDX-FileCopyrightText: 2021 fosslinux <fosslinux@aussies.space> + +SPDX-License-Identifier: GPL-2.0-only + +Use gen_initramfs_list.sh from outside kernel source tree. + +--- scripts/gen_initramfs_list.sh 2021-10-10 20:37:12.220231015 +1100 ++++ scripts/gen_initramfs_list.sh 2021-10-10 20:37:22.694296140 +1100 +@@ -310,7 +310,7 @@ + fi + fi + cpio_tfile="$(mktemp ${TMPDIR:-/tmp}/cpiofile.XXXXXX)" +- usr/gen_init_cpio $timestamp ${cpio_list} > ${cpio_tfile} ++ gen_init_cpio $timestamp ${cpio_list} > ${cpio_tfile} + else + cpio_tfile=${cpio_file} + fi diff --git a/sysa/run.sh b/sysa/run.sh @@ -22,10 +22,14 @@ create_sysb() { 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}" + # Minimise RAM (storage) use - use hard links + cp -rl "${PREFIX}/${d}" "/sysb/usr/${d}" done cp "${SOURCES}/bootstrap.cfg" /sysb/usr/src/bootstrap.cfg populate_device_nodes /sysb + echo "Creating sysb initramfs" + gen_initramfs_list.sh -o "${PREFIX}/boot/initramfs-sysb.cpio.gz" /sysb + rm -rf /sysb # Cleanup } go_sysb() { @@ -35,7 +39,7 @@ go_sysb() { # kexec time echo "Loading kernel + sysb initramfs using kexec" kexec -l "${PREFIX}/boot/linux-4.9.10" --console-serial \ - --initrd="${PREFIX}/boot/initramfs-sysb" \ + --initrd="${PREFIX}/boot/initramfs-sysb.cpio.gz" \ --append="init=/init console=ttyS0" echo "kexecing into sysb" kexec -e @@ -237,10 +241,9 @@ rm -rf "${SOURCES}/mes" if [ "${CHROOT}" = False ]; then build kexec-tools-2.0.22 - create_sysb - build linux-4.9.10 + create_sysb go_sysb fi