From 0328828a572c4f11a6c66162b1046a8e0c426528 Mon Sep 17 00:00:00 2001 From: Bastian Bittorf Date: Wed, 20 Jan 2021 11:07:47 +0100 Subject: [PATCH] Add new build target 'minikernel': ./rootfs minikernel will download external helper script, which compiles a kernel and starts qemu (if possible in kvm mode) together with the already generated initital ramdisk. all tempfiles are in already provided tmpfs and lost at the very end during unmount and exit. also add a logfile for all targets, which can be used to better spot errors. --- rootfs.sh | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/rootfs.sh b/rootfs.sh index 04deeb3f..540d10ca 100755 --- a/rootfs.sh +++ b/rootfs.sh @@ -1,7 +1,7 @@ #!/bin/bash set -ex -QEMU_CMD="${1:-qemu-system-x86_64}" # or 'chroot' +QEMU_CMD="${1:-qemu-system-x86_64}" # or 'chroot' or 'minikernel' QEMU_RAM="${2:-8G}" pushd sysa @@ -12,6 +12,8 @@ pushd sysa mkdir -p tmp/ sudo mount -t tmpfs -o size=8G tmpfs tmp +LOGFILE="$PWD/tmp/bootstrap.log" + # base: mescc-tools-seed # copy in all the mescc-tools-seed stuff cp -r mescc-tools-seed/src/mescc-tools-seed/x86/* tmp @@ -125,17 +127,33 @@ cd tmp find . | cpio -H newc -o | gzip > initramfs.igz # Run -if [ "${QEMU_CMD}" = 'chroot' ]; then - sudo PATH="/after/bin:${PATH}" chroot . /init -else - ${QEMU_CMD} -enable-kvm \ - -m "${QEMU_RAM}" \ - -nographic \ - -no-reboot \ - -kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 -fi +case "${QEMU_CMD}" in + chroot) + sudo PATH="/after/bin:${PATH}" chroot . /init | tee "$LOGFILE" + ;; + minikernel) + git clone --depth 1 --branch v0.4 https://github.com/bittorf/kritis-linux.git + + kritis-linux/ci_helper.sh \ + --arch x86_64 \ + --ramsize 4G \ + --kernel 5.10.8 \ + --initrd initramfs.igz \ + --log "$LOGFILE" + ;; + *) + ${QEMU_CMD} -enable-kvm \ + -m "${QEMU_RAM:-8G}" \ + -nographic \ + -no-reboot \ + -kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 | tee "$LOGFILE" + ;; +esac cd ../.. +# eventually keep logfile before unmount: +echo "see logfile: $LOGFILE" + # Cleanup sudo umount sysa/tmp