Nothing to see here, move along
at main 84 lines 2.3 kB view raw
1#!/usr/bin/env bash 2set -euo pipefail 3 4SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 5ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" 6 7KERNEL_BIN="$ROOT/target/x86_64-lancer-none/debug/lancer-kernel" 8ISO_DIR="$ROOT/target/iso" 9ISO_FILE="$ROOT/target/lancer.iso" 10LIMINE_DIR="$ROOT/target/limine" 11OVMF_VARS="$ROOT/target/ovmf/OVMF_VARS_4M.fd" 12OVMF_CODE="/usr/share/OVMF/OVMF_CODE_4M.fd" 13 14echo "Building test kernel" 15cargo build --manifest-path "$ROOT/Cargo.toml" -p lancer-kernel --features test-kernel 16 17echo "Creating ISO" 18rm -rf "$ISO_DIR" 19mkdir -p "$ISO_DIR/boot/limine" "$ISO_DIR/EFI/BOOT" 20cp "$KERNEL_BIN" "$ISO_DIR/boot/kernel" 21cat > "$ISO_DIR/boot/limine/limine.conf" <<'LIMINEEOF' 22timeout: 0 23serial: yes 24 25/Lancer Test 26 protocol: limine 27 kernel_path: boot():/boot/kernel 28LIMINEEOF 29cp "$LIMINE_DIR/limine-bios.sys" "$ISO_DIR/boot/limine/" 30cp "$LIMINE_DIR/limine-bios-cd.bin" "$ISO_DIR/boot/limine/" 31cp "$LIMINE_DIR/limine-uefi-cd.bin" "$ISO_DIR/boot/limine/" 32cp "$LIMINE_DIR/BOOTX64.EFI" "$ISO_DIR/EFI/BOOT/" 33cp "$LIMINE_DIR/BOOTIA32.EFI" "$ISO_DIR/EFI/BOOT/" 34xorriso -as mkisofs \ 35 -b boot/limine/limine-bios-cd.bin \ 36 -no-emul-boot -boot-load-size 4 -boot-info-table \ 37 --efi-boot boot/limine/limine-uefi-cd.bin \ 38 -efi-boot-part --efi-boot-image --protective-msdos-label \ 39 "$ISO_DIR" -o "$ISO_FILE" 40"$LIMINE_DIR/limine" bios-install "$ISO_FILE" 41 42mkdir -p "$(dirname "$OVMF_VARS")" 43cp /usr/share/OVMF/OVMF_VARS_4M.fd "$OVMF_VARS" 44 45echo "Running test kernel in QEMU" 46set +e 47timeout 60s qemu-system-x86_64 \ 48 -M q35,accel=kvm:tcg,kernel-irqchip=split \ 49 -cpu host \ 50 -m 512M \ 51 -drive if=pflash,format=raw,readonly=on,file="$OVMF_CODE" \ 52 -drive if=pflash,format=raw,file="$OVMF_VARS" \ 53 -cdrom "$ISO_FILE" \ 54 -serial stdio \ 55 -display none \ 56 -no-reboot \ 57 -device intel-iommu,intremap=on,caching-mode=on \ 58 -device virtio-net-pci,netdev=net0 \ 59 -netdev user,id=net0 \ 60 -device isa-debug-exit,iobase=0x501,iosize=0x04 \ 61 < /dev/null 62QEMU_EXIT=$? 63set -e 64 65case $QEMU_EXIT in 66 33) 67 exit 0 68 ;; 69 35) 70 echo "" 71 echo "TESTS FAILED" 72 exit 1 73 ;; 74 124|137) 75 echo "" 76 echo "TIMEOUT" 77 exit 1 78 ;; 79 *) 80 echo "" 81 echo "UNEXPECTED EXIT CODE: $QEMU_EXIT" 82 exit 1 83 ;; 84esac