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.
This commit is contained in:
Bastian Bittorf 2021-01-20 11:07:47 +01:00
parent 329afda94d
commit 0328828a57

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
set -ex 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}" QEMU_RAM="${2:-8G}"
pushd sysa pushd sysa
@ -12,6 +12,8 @@ pushd sysa
mkdir -p tmp/ mkdir -p tmp/
sudo mount -t tmpfs -o size=8G tmpfs tmp sudo mount -t tmpfs -o size=8G tmpfs tmp
LOGFILE="$PWD/tmp/bootstrap.log"
# base: mescc-tools-seed # base: mescc-tools-seed
# copy in all the mescc-tools-seed stuff # copy in all the mescc-tools-seed stuff
cp -r mescc-tools-seed/src/mescc-tools-seed/x86/* tmp 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 find . | cpio -H newc -o | gzip > initramfs.igz
# Run # Run
if [ "${QEMU_CMD}" = 'chroot' ]; then case "${QEMU_CMD}" in
sudo PATH="/after/bin:${PATH}" chroot . /init chroot)
else 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 \ ${QEMU_CMD} -enable-kvm \
-m "${QEMU_RAM}" \ -m "${QEMU_RAM:-8G}" \
-nographic \ -nographic \
-no-reboot \ -no-reboot \
-kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 -kernel ../../kernel -initrd initramfs.igz -append console=ttyS0 | tee "$LOGFILE"
fi ;;
esac
cd ../.. cd ../..
# eventually keep logfile before unmount:
echo "see logfile: $LOGFILE"
# Cleanup # Cleanup
sudo umount sysa/tmp sudo umount sysa/tmp