From f9e3ceba6cee9302e2b93f5d2bc510ede7508817 Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Wed, 11 Sep 2024 01:20:32 -0700 Subject: [PATCH] feat: package seabios needed for many qemu use cases --- packages/seabios/Containerfile | 62 +++++++++++++++++++++++ packages/seabios/config.coreboot | 2 + packages/seabios/config.csm | 2 + packages/seabios/config.seabios-128k | 22 ++++++++ packages/seabios/config.seabios-256k | 4 ++ packages/seabios/config.seabios-microvm | 26 ++++++++++ packages/seabios/config.seabios-vga-ati | 0 packages/seabios/config.vga-ati | 4 ++ packages/seabios/config.vga-bochs-display | 3 ++ packages/seabios/config.vga-cirrus | 3 ++ packages/seabios/config.vga-isavga | 3 ++ packages/seabios/config.vga-qxl | 6 +++ packages/seabios/config.vga-ramfb | 3 ++ packages/seabios/config.vga-stdvga | 3 ++ packages/seabios/config.vga-virtio | 6 +++ packages/seabios/config.vga-vmware | 6 +++ 16 files changed, 155 insertions(+) create mode 100644 packages/seabios/Containerfile create mode 100644 packages/seabios/config.coreboot create mode 100644 packages/seabios/config.csm create mode 100644 packages/seabios/config.seabios-128k create mode 100644 packages/seabios/config.seabios-256k create mode 100644 packages/seabios/config.seabios-microvm create mode 100644 packages/seabios/config.seabios-vga-ati create mode 100644 packages/seabios/config.vga-ati create mode 100644 packages/seabios/config.vga-bochs-display create mode 100644 packages/seabios/config.vga-cirrus create mode 100644 packages/seabios/config.vga-isavga create mode 100644 packages/seabios/config.vga-qxl create mode 100644 packages/seabios/config.vga-ramfb create mode 100644 packages/seabios/config.vga-stdvga create mode 100644 packages/seabios/config.vga-virtio create mode 100644 packages/seabios/config.vga-vmware diff --git a/packages/seabios/Containerfile b/packages/seabios/Containerfile new file mode 100644 index 0000000..0baaf1c --- /dev/null +++ b/packages/seabios/Containerfile @@ -0,0 +1,62 @@ +FROM scratch AS base +ENV VERSION=1.16.3 +ENV SRC_FILE=rel-${VERSION}.tar.gz +ENV SRC_SITE=https://github.com/coreboot/seabios/archive/${SRC_FILE} +ENV SRC_HASH=1c1742a315b0c2fefa9390c8a50e2ac1a6f4806e0715aece6595eaf4477fcd8a + +FROM base AS fetch +ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} . + +FROM fetch AS build +COPY --from=stagex/busybox . / +COPY --from=stagex/gcc . / +COPY --from=stagex/binutils . / +COPY --from=stagex/make . / +COPY --from=stagex/musl . / +COPY --from=stagex/python . / +RUN tar -xf ${SRC_FILE} +RUN ls -lah . +WORKDIR /seabios-rel-${VERSION} +ADD config.* . +RUN --network=none <<-EOF + set -ex + mkdir output + echo "Stagex ${VERSION}" > .version + printf " \ + coreboot bios.bin.elf bios-coreboot.bin\n \ + csm Csm16.bin bios-csm.bin\n \ + seabios-128k bios.bin bios.bin\n \ + seabios-256k bios.bin bios-256k.bin\n \ + seabios-microvm bios.bin bios-microvm.bin\n \ + vga-ati vgabios.bin vgabios-ati.bin out/vgabios.bin\n \ + vga-bochs-display vgabios.bin vgabios-bochs-display.bin out/vgabios.bin\n \ + vga-cirrus vgabios.bin vgabios-cirrus.bin out/vgabios.bin\n \ + vga-isavga vgabios.bin vgabios-isavga.bin out/vgabios.bin\n \ + vga-qxl vgabios.bin vgabios-qxl.bin out/vgabios.bin\n \ + vga-ramfb vgabios.bin vgabios-ramfb.bin out/vgabios.bin\n \ + vga-stdvga vgabios.bin vgabios-stdvga.bin out/vgabios.bin\n \ + vga-virtio vgabios.bin vgabios-virtio.bin out/vgabios.bin\n \ + vga-vmware vgabios.bin vgabios-vmware.bin out/vgabios.bin" \ + | while IFS= read -r line; do + set -- $line; + config_name="$1"; + output_name="$2"; + binary_name="$3"; + build_target="$4"; + make clean distclean; + cp "config.${config_name}" .config; + make oldnoconfig V=1; + make V=1 EXTRAVERSION=-1 PYTHON=python3 $build_target + cp "out/${output_name}" "output/${binary_name}" + done + +EOF + +FROM build AS install +RUN <<-EOF + set -eux + install -vDm 644 output/*.bin -t /rootfs/usr/share/qemu/ +EOF + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/seabios/config.coreboot b/packages/seabios/config.coreboot new file mode 100644 index 0000000..a0323b2 --- /dev/null +++ b/packages/seabios/config.coreboot @@ -0,0 +1,2 @@ +CONFIG_QEMU_HARDWARE=y +CONFIG_COREBOOT=y diff --git a/packages/seabios/config.csm b/packages/seabios/config.csm new file mode 100644 index 0000000..c1d8df1 --- /dev/null +++ b/packages/seabios/config.csm @@ -0,0 +1,2 @@ +CONFIG_QEMU_HARDWARE=y +CONFIG_CSM=y diff --git a/packages/seabios/config.seabios-128k b/packages/seabios/config.seabios-128k new file mode 100644 index 0000000..4b7b59d --- /dev/null +++ b/packages/seabios/config.seabios-128k @@ -0,0 +1,22 @@ +# for qemu machine types 1.7 + older +# need to turn off features (bootsplash) to make it fit into 128k +CONFIG_QEMU=y +CONFIG_ROM_SIZE=128 +CONFIG_ATA_DMA=n +CONFIG_BOOTSPLASH=n +CONFIG_XEN=n +CONFIG_USB_OHCI=n +CONFIG_USB_XHCI=n +CONFIG_USB_UAS=n +CONFIG_SDCARD=n +CONFIG_TCGBIOS=n +CONFIG_MPT_SCSI=n +CONFIG_ESP_SCSI=n +CONFIG_MEGASAS=n +CONFIG_PVSCSI=n +CONFIG_NVME=n +CONFIG_USE_SMM=n +CONFIG_VGAHOOKS=n +CONFIG_HOST_BIOS_GEOMETRY=n +CONFIG_ACPI_PARSE=n +CONFIG_SERCON=n diff --git a/packages/seabios/config.seabios-256k b/packages/seabios/config.seabios-256k new file mode 100644 index 0000000..d1bcc94 --- /dev/null +++ b/packages/seabios/config.seabios-256k @@ -0,0 +1,4 @@ +# for qemu machine types 2.0 + newer +CONFIG_QEMU=y +CONFIG_ROM_SIZE=256 +CONFIG_ATA_DMA=n diff --git a/packages/seabios/config.seabios-microvm b/packages/seabios/config.seabios-microvm new file mode 100644 index 0000000..a253e2e --- /dev/null +++ b/packages/seabios/config.seabios-microvm @@ -0,0 +1,26 @@ +CONFIG_QEMU=y +CONFIG_QEMU_HARDWARE=y +CONFIG_PERMIT_UNALIGNED_PCIROM=y +CONFIG_ROM_SIZE=128 +CONFIG_XEN=n +CONFIG_BOOTSPLASH=n +CONFIG_ATA=n +CONFIG_AHCI=n +CONFIG_SDCARD=n +CONFIG_PVSCSI=n +CONFIG_ESP_SCSI=n +CONFIG_LSI_SCSI=n +CONFIG_MEGASAS=n +CONFIG_MPT_SCSI=n +CONFIG_FLOPPY=n +CONFIG_FLASH_FLOPPY=n +CONFIG_NVME=n +CONFIG_PS2PORT=n +CONFIG_USB=n +CONFIG_LPT=n +CONFIG_RTC_TIMER=n +CONFIG_USE_SMM=n +CONFIG_PMTIMER=n +CONFIG_TCGBIOS=n +CONFIG_HARDWARE_IRQ=n +CONFIG_ACPI_PARSE=y diff --git a/packages/seabios/config.seabios-vga-ati b/packages/seabios/config.seabios-vga-ati new file mode 100644 index 0000000..e69de29 diff --git a/packages/seabios/config.vga-ati b/packages/seabios/config.vga-ati new file mode 100644 index 0000000..12506b6 --- /dev/null +++ b/packages/seabios/config.vga-ati @@ -0,0 +1,4 @@ +CONFIG_QEMU=y +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_ATI=y +CONFIG_VGA_PCI=y diff --git a/packages/seabios/config.vga-bochs-display b/packages/seabios/config.vga-bochs-display new file mode 100644 index 0000000..d2adaae --- /dev/null +++ b/packages/seabios/config.vga-bochs-display @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_DISPLAY_BOCHS=y +CONFIG_VGA_PCI=y diff --git a/packages/seabios/config.vga-cirrus b/packages/seabios/config.vga-cirrus new file mode 100644 index 0000000..c8fe582 --- /dev/null +++ b/packages/seabios/config.vga-cirrus @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_CIRRUS=y +CONFIG_VGA_PCI=y diff --git a/packages/seabios/config.vga-isavga b/packages/seabios/config.vga-isavga new file mode 100644 index 0000000..e55e294 --- /dev/null +++ b/packages/seabios/config.vga-isavga @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_BOCHS=y +CONFIG_VGA_PCI=n diff --git a/packages/seabios/config.vga-qxl b/packages/seabios/config.vga-qxl new file mode 100644 index 0000000..d393f0c --- /dev/null +++ b/packages/seabios/config.vga-qxl @@ -0,0 +1,6 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_BOCHS=y +CONFIG_VGA_PCI=y +CONFIG_OVERRIDE_PCI_ID=y +CONFIG_VGA_VID=0x1b36 +CONFIG_VGA_DID=0x0100 diff --git a/packages/seabios/config.vga-ramfb b/packages/seabios/config.vga-ramfb new file mode 100644 index 0000000..c809c79 --- /dev/null +++ b/packages/seabios/config.vga-ramfb @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_RAMFB=y +CONFIG_VGA_PCI=n diff --git a/packages/seabios/config.vga-stdvga b/packages/seabios/config.vga-stdvga new file mode 100644 index 0000000..7d063b7 --- /dev/null +++ b/packages/seabios/config.vga-stdvga @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_BOCHS=y +CONFIG_VGA_PCI=y diff --git a/packages/seabios/config.vga-virtio b/packages/seabios/config.vga-virtio new file mode 100644 index 0000000..aa7a15b --- /dev/null +++ b/packages/seabios/config.vga-virtio @@ -0,0 +1,6 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_BOCHS=y +CONFIG_VGA_PCI=y +CONFIG_OVERRIDE_PCI_ID=y +CONFIG_VGA_VID=0x1af4 +CONFIG_VGA_DID=0x1050 diff --git a/packages/seabios/config.vga-vmware b/packages/seabios/config.vga-vmware new file mode 100644 index 0000000..eb10427 --- /dev/null +++ b/packages/seabios/config.vga-vmware @@ -0,0 +1,6 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_BOCHS=y +CONFIG_VGA_PCI=y +CONFIG_OVERRIDE_PCI_ID=y +CONFIG_VGA_VID=0x15ad +CONFIG_VGA_DID=0x0405