diff --git a/packages/acpica/Containerfile b/packages/acpica/Containerfile new file mode 100644 index 0000000..b098932 --- /dev/null +++ b/packages/acpica/Containerfile @@ -0,0 +1,28 @@ +FROM scratch AS base +ENV VERSION=20230628 +ENV SRC_HASH=86876a745e3d224dcfd222ed3de465b47559e85811df2db9820ef09a9dff5cce +ENV SRC_FILE=acpica-unix-${VERSION}.tar.gz +ENV SRC_SITE=https://downloadmirror.intel.com/783549/${SRC_FILE} + +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/musl . / +COPY --from=stagex/binutils . / +COPY --from=stagex/make . / +COPY --from=stagex/bison . / +COPY --from=stagex/flex . / +COPY --from=stagex/m4 . / +RUN tar -xf ${SRC_FILE} +WORKDIR /acpica-unix-${VERSION} +ENV LDFLAGS="-Wl,-z,pack-relative-relocs" +RUN --network=none make NOWERROR=TRUE -j "$(nproc)" + +FROM build AS install +RUN --network=none DESTDIR=/rootfs make install + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/edk2/Containerfile b/packages/edk2/Containerfile new file mode 100644 index 0000000..8d897bf --- /dev/null +++ b/packages/edk2/Containerfile @@ -0,0 +1,112 @@ +FROM scratch AS base +ARG ARCH=x86_64 +ENV VERSION=202408 +ENV VERSION_OPENSSL=3.0.9 +ENV VERSION_SOFTFLOAT=3e +ENV VERSION_MIPISYST=370b5944c046bab043dd8b133727b2135af7747a +ENV VERSION_MBEDTLS=8c89224991adff88d53cd380f42a2baa36f91454 +ENV VERSION_LIBSPDM=50924a4c8145fc721e17208f55814d2b38766fe6 +ENV SRC_HASH=63c99b6f9f7aa94e8d76c432bea05d0d4dd6600af78d6fd59a1aec5ce9cea8ce +ENV SRC_HASH_MIPISYST=9fda3b9a78343ab2be6f06ce6396536e7e065abac29b47c8eb2e42cbb4c4f00b +ENV SRC_HASH_SOFTFLOAT=21130ce885d35c1fe73fc1e1bf2244178167e05c6747cad5f450cc991714c746 +ENV SRC_HASH_OPENSSL=eb1ab04781474360f77c318ab89d8c5a03abc38e63d65a603cabbf1b00a1dc90 +ENV SRC_HASH_MBEDTLS=b5c7e7c54e013c168f4aae036e59912785f11b4aeebd57f6165a14e879b9a82c +ENV SRC_HASH_LIBSPDM=962aefeeddb130deeb68c6c60c4848ddedd09d7715ed1ba8a8dadabd032d6232 +ENV SRC_FILE=edk2-stable${VERSION}.tar.gz +ENV SRC_SITE=https://github.com/tianocore/edk2/archive/refs/tags/${SRC_FILE} +ENV SRC_FILE_MIPISYST=${VERSION_MIPISYST}.tar.gz +ENV SRC_SITE_MIPISYST=https://github.com/MIPI-Alliance/public-mipi-sys-t/archive/${SRC_FILE_MIPISYST} +ENV SRC_FILE_SOFTFLOAT=SoftFloat-${VERSION_SOFTFLOAT}.zip +ENV SRC_SITE_SOFTFLOAT=https://www.jhauser.us/arithmetic/${SRC_FILE_SOFTFLOAT} +ENV SRC_FILE_OPENSSL=openssl-${VERSION_OPENSSL}.tar.gz +ENV SRC_SITE_OPENSSL=https://www.openssl.org/source/${SRC_FILE_OPENSSL} +ENV SRC_FILE_MBEDTLS=${VERSION_MBEDTLS}.tar.gz +ENV SRC_SITE_MBEDTLS=https://github.com/Mbed-TLS/mbedtls/archive/${SRC_FILE_MBEDTLS} +ENV SRC_FILE_LIBSPDM=${VERSION_LIBSPDM}.tar.gz +ENV SRC_SITE_LIBSPDM=https://github.com/DMTF/libspdm/archive/${SRC_FILE_LIBSPDM} + +FROM base AS fetch +ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} . +ADD --checksum=sha256:${SRC_HASH_OPENSSL} ${SRC_SITE_OPENSSL} . +ADD --checksum=sha256:${SRC_HASH_SOFTFLOAT} ${SRC_SITE_SOFTFLOAT} . +ADD --checksum=sha256:${SRC_HASH_MIPISYST} ${SRC_SITE_MIPISYST} . +ADD --checksum=sha256:${SRC_HASH_MBEDTLS} ${SRC_SITE_MBEDTLS} . +ADD --checksum=sha256:${SRC_HASH_LIBSPDM} ${SRC_SITE_LIBSPDM} . + +FROM fetch AS build +COPY --from=stagex/busybox . / +COPY --from=stagex/binutils . / +COPY --from=stagex/pkgconf . / +COPY --from=stagex/musl . / +COPY --from=stagex/make . / +COPY --from=stagex/gcc . / +COPY --from=stagex/git . / +COPY --from=stagex/python . / +COPY --from=stagex/nasm . / +COPY --from=stagex/acpica . / +COPY --from=stagex/bash . / +COPY --from=stagex/util-linux . / +COPY --from=stagex/zlib . / +RUN tar -xf ${SRC_FILE} +RUN tar -xf ${SRC_FILE_OPENSSL} +RUN tar -xf ${SRC_FILE_MIPISYST} +RUN tar -xf ${SRC_FILE_MBEDTLS} +RUN tar -xf ${SRC_FILE_LIBSPDM} +RUN unzip ${SRC_FILE_SOFTFLOAT} +WORKDIR /edk2-edk2-stable${VERSION} +ENV WORKDIR=/edk2-edk2-stable${VERSION} +ENV PACKAGES_PATH=$WORKDIR +ENV WORKSPACE=$WORKDIR +ENV EDK_TOOLS_PATH=${WORKDIR}/BaseTools +ENV PATH=${EDK_TOOLS_PATH}/BinWrappers/PosixLike/:$PATH +ENV PYTHON_COMMAND=python3 +ENV PLATFORMS="ShellPkg/ShellPkg.dsc OvmfPkg/OvmfPkgX64.dsc OvmfPkg/OvmfXen.dsc" +ENV TOOLCHAIN="GCC5" +ENV RELEASE="RELEASE" +ENV TARGET_ARCH=X64 +RUN --network=none <<-EOF + set -ex + rm -rf CryptoPkg/Library/OpensslLib/openssl + ln -s /openssl-${VERSION_OPENSSL} CryptoPkg/Library/OpensslLib/openssl + rm -rf CryptoPkg/Library/MbedTlsLib/mbedtls + ln -s /mbedtls-${VERSION_MBEDTLS} CryptoPkg/Library/MbedTlsLib/mbedtls + rm -rf SecurityPkg/DeviceSecurity/SpdmLib/libspdm + ln -s /libspdm-${VERSION_LIBSPDM} SecurityPkg/DeviceSecurity/SpdmLib/libspdm + rm -rf ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 + ln -s /SoftFloat-${VERSION_SOFTFLOAT} \ + ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 + rm -rf MdePkg/Library/MipiSysTLib/mipisyst + ln -s /public-mipi-sys-t-${VERSION_MIPISYST} \ + MdePkg/Library/MipiSysTLib/mipisyst + sed -e '/BrotliCompress/d' -i BaseTools/Source/C/GNUmakefile + sed -e '/BrotliCustomDecompressLib/d' -i MdeModulePkg/MdeModulePkg.dec + sed -e 's/\r$//' -i BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp \ + BaseTools/Source/C/VolInfo/VolInfo.c + bash -c ". edksetup.sh" + make -C BaseTools + for platform in $PLATFORMS; do + echo "Building Plaform Files: $platform" + command build -b $RELEASE \ + -a $TARGET_ARCH \ + -t $TOOLCHAIN \ + -p $platform \ + -n "$(nproc)" \ + -DSECURE_BOOT_ENABLE=TRUE \ + -DTPM2_ENABLE=TRUE + done +EOF + +FROM build AS install +RUN <<-EOF + mkdir -p /rootfs/usr/bin \ + /rootfs/usr/share/edk2/Conf \ + /rootfs/usr/share/edk2/Scripts + install BaseTools/Source/C/bin/* BaseTools/BinWrappers/PosixLike/LzmaF86Compress \ + /rootfs/usr/bin + install BaseTools/BuildEnv /rootfs/usr/share/edk2/ + install BaseTools/Conf/*.template /rootfs/usr/share/edk2/Conf + install BaseTools/Scripts/GccBase.lds /rootfs/usr/share/edk2/Scripts +EOF + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/iproute2/Containerfile b/packages/iproute2/Containerfile new file mode 100644 index 0000000..5f01e6f --- /dev/null +++ b/packages/iproute2/Containerfile @@ -0,0 +1,34 @@ +FROM scratch AS base +ENV VERSION=6.10.0 +ENV SRC_HASH=91a62f82737b44905a00fa803369c447d549e914e9a2a4018fdd75b1d54e8dce +ENV SRC_FILE=iproute2-${VERSION}.tar.xz +ENV SRC_SITE=http://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/${SRC_FILE} + +FROM base AS fetch +ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} . + +FROM fetch AS build +COPY --from=stagex/busybox . / +COPY --from=stagex/musl . / +COPY --from=stagex/gcc . / +COPY --from=stagex/binutils . / +COPY --from=stagex/make . / +COPY --from=stagex/linux-headers . / +COPY --from=stagex/m4 . / +COPY --from=stagex/bison . / +COPY --from=stagex/flex . / +COPY --from=stagex/elfutils . / +RUN tar -xvf $SRC_FILE +WORKDIR /iproute2-${VERSION} +RUN --network=none make -j "$(nproc)" V=1 + +FROM build AS install +RUN <<-EOF + make DESTDIR=/rootfs install + mv /rootfs/sbin /rootfs/usr/sbin + install -D -m644 include/libnetlink.h /rootfs/usr/include/libnetlink.h + install -D -m644 lib/libnetlink.a /rootfs/usr/lib/libnetlink.a +EOF + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/ipxe/Containerfile b/packages/ipxe/Containerfile new file mode 100644 index 0000000..377c427 --- /dev/null +++ b/packages/ipxe/Containerfile @@ -0,0 +1,86 @@ +FROM scratch AS base +ENV VERSION=6ca597eee9f95b846a3c2dc1231e63cfc02272c1 +ENV SRC_FILE=${VERSION}.tar.gz +ENV SRC_SITE=https://github.com/ipxe/ipxe/archive/${SRC_FILE} +ENV SRC_HASH=f90cc9024d90e3fcbd738a3a1904dd552f276fcc52d177ebdd4e78d17e5c5b44 + +FROM base AS fetch +ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} . + +FROM fetch AS build +COPY --from=stagex/busybox . / +COPY --from=stagex/coreutils . / +COPY --from=stagex/gcc . / +COPY --from=stagex/binutils . / +COPY --from=stagex/openssl . / +COPY --from=stagex/make . / +COPY --from=stagex/perl . / +COPY --from=stagex/musl . / +COPY --from=stagex/edk2 . / +COPY --from=stagex/syslinux . / +COPY --from=stagex/xorriso . / +COPY --from=stagex/xz . / +RUN tar -xf ${SRC_FILE} +WORKDIR /ipxe-${VERSION}/src +ENV SOURCE_DATE_EPOCH=1 +RUN --network=none <<-EOF + set -ex + mkdir -p out + make \ + -j "$(nproc)" \ + CC=x86_64-linux-musl-gcc \ + NO_WERROR=1 \ + EXTRA_CFLAGS="-fcommon" \ + bin/ipxe.iso \ + bin/ipxe.lkrn \ + bin/ipxe.pxe \ + bin/undionly.kpxe \ + bin/ipxe.usb \ + bin/ipxe.dsk \ + bin-x86_64-efi/ipxe.efi + printf " \ + e1000 8086 100e \n \ + e1000e 8086 10d3 \n \ + eepro100 8086 1209 \n \ + ne2k_pci 1050 0940 \n \ + pcnet 1022 2000 \n \ + rtl8139 10ec 8139 \n \ + virtio 1af4 1000 \n \ + vmxnet3 15ad 07b0" \ + | while IFS= read -r line; do + set -- $line; + target="$1"; + vid="$2"; + did="$3"; + make \ + -j "$(nproc)" \ + CONFIG=qemu \ + CC=x86_64-linux-musl-gcc \ + NO_WERROR=1 \ + EXTRA_CFLAGS="-fcommon" \ + bin-x86_64-efi/${vid}${did}.efidrv \ + bin/${vid}${did}.rom; + EfiRom \ + -f "0x${vid}" \ + -i "0x${did}" \ + -l 0x02 \ + -b bin/${vid}${did}.rom \ + -ec bin-x86_64-efi/${vid}${did}.efidrv \ + -o out/efi-${target}.rom; + done +EOF + +FROM build AS install +RUN <<-EOF + set -eux + install -vDm 644 bin/*.lkrn -t /rootfs/usr/share/ipxe/ + install -vDm 644 bin/*.dsk -t /rootfs/usr/share/ipxe/ + install -vDm 644 bin/*.iso -t /rootfs/usr/share/ipxe/ + install -vDm 644 bin/*.pxe -t /rootfs/usr/share/ipxe/ + install -vDm 644 bin/*.kpxe -t /rootfs/usr/share/ipxe/ + install -vDm 644 bin-x86_64-efi/*.efi -t /rootfs/usr/share/ipxe/x86_64/ + install -vDm 644 out/efi-*.rom -t /rootfs/usr/share/qemu/ +EOF + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/libslirp/Containerfile b/packages/libslirp/Containerfile new file mode 100644 index 0000000..a43df18 --- /dev/null +++ b/packages/libslirp/Containerfile @@ -0,0 +1,50 @@ +FROM scratch AS base +ARG ARCH=x86_64 +ENV VERSION=4.8.0 +ENV SRC_HASH=378216c88c021c9ed7de9006db291127d30a0da94a23dffefdb26b26a5849bf7 +ENV SRC_FILE=libslirp-${VERSION}.tar.gz +ENV SRC_SITE=https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v${VERSION}/${SRC_FILE} + +FROM base AS fetch +ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE} ${SRC_FILE} + +FROM fetch AS build +COPY --from=stagex/python . / +COPY --from=stagex/zlib . / +COPY --from=stagex/bzip2 . / +COPY --from=stagex/pkgconf . / +COPY --from=stagex/ncurses . / +COPY --from=stagex/meson . / +COPY --from=stagex/busybox . / +COPY --from=stagex/musl . / +COPY --from=stagex/gcc . / +COPY --from=stagex/binutils . / +COPY --from=stagex/make . / +COPY --from=stagex/cmake . / +COPY --from=stagex/pcre2 . / +COPY --from=stagex/python . / +COPY --from=stagex/bison . / +COPY --from=stagex/flex . / +COPY --from=stagex/py-packaging . / +COPY --from=stagex/xz . / +COPY --from=stagex/ninja . / +COPY --from=stagex/glib . / +COPY --from=stagex/linux-headers . / +RUN tar -xf ${SRC_FILE} +WORKDIR /libslirp-v${VERSION}-ce314e39458223c2c42245fe536fbe1bcd94e9b1 +RUN --network=none <<-EOF + set -eux + meson setup \ + --default-library=shared \ + --prefix=/usr \ + . output + meson compile -C output + meson install --no-rebuild -C output +EOF + +FROM build AS install +RUN DESTDIR=/rootfs meson install --no-rebuild -C output +RUN find /rootfs -exec touch -hcd "@0" "{}" + + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/linux-guest/linux.config b/packages/linux-guest/linux.config index 3a5c159..365960b 100644 --- a/packages/linux-guest/linux.config +++ b/packages/linux-guest/linux.config @@ -92,11 +92,12 @@ CONFIG_CONTEXT_TRACKING_IDLE=y # # Timers subsystem # +CONFIG_TICK_ONESHOT=y CONFIG_HZ_PERIODIC=y # CONFIG_NO_HZ_IDLE is not set # CONFIG_NO_HZ_FULL is not set # CONFIG_NO_HZ is not set -# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_HIGH_RES_TIMERS=y CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=125 # end of Timers subsystem @@ -256,6 +257,7 @@ CONFIG_RSEQ=y CONFIG_CACHESTAT_SYSCALL=y # CONFIG_DEBUG_RSEQ is not set CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y # CONFIG_PC104 is not set # @@ -316,9 +318,16 @@ CONFIG_X86_MPPARSE=y CONFIG_IOSF_MBI=y # CONFIG_SCHED_OMIT_FRAME_POINTER is not set CONFIG_HYPERVISOR_GUEST=y -# CONFIG_PARAVIRT is not set -# CONFIG_ARCH_CPUIDLE_HALTPOLL is not set +CONFIG_PARAVIRT=y +# CONFIG_PARAVIRT_DEBUG is not set +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_X86_HV_CALLBACK_VECTOR=y +# CONFIG_XEN is not set +CONFIG_KVM_GUEST=y +CONFIG_ARCH_CPUIDLE_HALTPOLL=y # CONFIG_PVH is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_CLOCK=y # CONFIG_JAILHOUSE_GUEST is not set # CONFIG_ACRN_GUEST is not set # CONFIG_INTEL_TDX_GUEST is not set @@ -404,6 +413,7 @@ CONFIG_X86_INTEL_TSX_MODE_OFF=y # CONFIG_X86_INTEL_TSX_MODE_AUTO is not set # CONFIG_X86_SGX is not set # CONFIG_X86_USER_SHADOW_STACK is not set +# CONFIG_INTEL_TDX_HOST is not set CONFIG_EFI=y CONFIG_EFI_STUB=y CONFIG_EFI_HANDOVER_PROTOCOL=y @@ -415,6 +425,7 @@ CONFIG_HZ_250=y # CONFIG_HZ_300 is not set # CONFIG_HZ_1000 is not set CONFIG_HZ=250 +CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SUPPORTS_KEXEC=y CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y @@ -563,6 +574,8 @@ CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y # CONFIG_CPU_IDLE_GOV_MENU is not set # CONFIG_CPU_IDLE_GOV_TEO is not set +CONFIG_CPU_IDLE_GOV_HALTPOLL=y +CONFIG_HALTPOLL_CPUIDLE=y # end of CPU Idle # CONFIG_INTEL_IDLE is not set @@ -592,7 +605,34 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y # end of Binary Emulations CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_PFNCACHE=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQFD=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_DIRTY_RING=y +CONFIG_HAVE_KVM_DIRTY_RING_TSO=y +CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_COMPAT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=y +CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_KVM_XFER_TO_GUEST_WORK=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y CONFIG_VIRTUALIZATION=y +CONFIG_KVM=y +CONFIG_KVM_WERROR=y +CONFIG_KVM_INTEL=y +CONFIG_KVM_AMD=y +CONFIG_KVM_SMM=y +# CONFIG_KVM_XEN is not set +# CONFIG_KVM_PROVE_MMU is not set +CONFIG_KVM_MAX_NR_VCPUS=1024 CONFIG_AS_AVX512=y CONFIG_AS_SHA1_NI=y CONFIG_AS_SHA256_NI=y @@ -615,6 +655,7 @@ CONFIG_JUMP_LABEL=y # CONFIG_STATIC_CALL_SELFTEST is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_USER_RETURN_NOTIFIER=y CONFIG_HAVE_IOREMAP_PROT=y CONFIG_HAVE_KPROBES=y CONFIG_HAVE_KRETPROBES=y @@ -649,6 +690,8 @@ CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y +CONFIG_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y CONFIG_MMU_GATHER_MERGE_VMAS=y CONFIG_MMU_LAZY_TLB_REFCOUNT=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y @@ -786,6 +829,7 @@ CONFIG_BFQ_GROUP_IOSCHED=y # CONFIG_BFQ_CGROUP_DEBUG is not set # end of IO Schedulers +CONFIG_PREEMPT_NOTIFIERS=y CONFIG_ASN1=y CONFIG_UNINLINE_SPIN_UNLOCK=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y @@ -859,6 +903,7 @@ CONFIG_ARCH_ENABLE_THP_MIGRATION=y CONFIG_CONTIG_ALLOC=y CONFIG_PCP_BATCH_SCALE_MAX=5 CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y @@ -1935,13 +1980,14 @@ CONFIG_NET_CORE=y # CONFIG_AMT is not set # CONFIG_MACSEC is not set # CONFIG_NETCONSOLE is not set -# CONFIG_TUN is not set +CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=y CONFIG_VIRTIO_NET=y # CONFIG_NLMON is not set # CONFIG_NETKIT is not set # CONFIG_NET_VRF is not set +# CONFIG_VSOCKMON is not set # CONFIG_ARCNET is not set CONFIG_ETHERNET=y # CONFIG_NET_VENDOR_3COM is not set @@ -2050,29 +2096,7 @@ CONFIG_USB_NET_DRIVERS=y # CONFIG_USB_LAN78XX is not set # CONFIG_USB_USBNET is not set # CONFIG_USB_IPHETH is not set -CONFIG_WLAN=y -CONFIG_WLAN_VENDOR_ADMTEK=y -CONFIG_WLAN_VENDOR_ATH=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_ATH5K_PCI is not set -CONFIG_WLAN_VENDOR_ATMEL=y -CONFIG_WLAN_VENDOR_BROADCOM=y -CONFIG_WLAN_VENDOR_CISCO=y -CONFIG_WLAN_VENDOR_INTEL=y -CONFIG_WLAN_VENDOR_INTERSIL=y -# CONFIG_HOSTAP is not set -CONFIG_WLAN_VENDOR_MARVELL=y -CONFIG_WLAN_VENDOR_MEDIATEK=y -CONFIG_WLAN_VENDOR_MICROCHIP=y -CONFIG_WLAN_VENDOR_PURELIFI=y -CONFIG_WLAN_VENDOR_RALINK=y -CONFIG_WLAN_VENDOR_REALTEK=y -CONFIG_WLAN_VENDOR_RSI=y -CONFIG_WLAN_VENDOR_SILABS=y -CONFIG_WLAN_VENDOR_ST=y -CONFIG_WLAN_VENDOR_TI=y -CONFIG_WLAN_VENDOR_ZYDAS=y -CONFIG_WLAN_VENDOR_QUANTENNA=y +# CONFIG_WLAN is not set # CONFIG_WAN is not set # @@ -2869,11 +2893,7 @@ CONFIG_VGA_CONSOLE=y CONFIG_DUMMY_CONSOLE=y CONFIG_DUMMY_CONSOLE_COLUMNS=80 CONFIG_DUMMY_CONSOLE_ROWS=25 -CONFIG_FRAMEBUFFER_CONSOLE=y -# CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION is not set -CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y -# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set -# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# CONFIG_FRAMEBUFFER_CONSOLE is not set # end of Console display driver support # CONFIG_LOGO is not set @@ -3222,6 +3242,7 @@ CONFIG_RTC_MC146818_LIB=y # CONFIG_UIO is not set # CONFIG_VFIO is not set +CONFIG_IRQ_BYPASS_MANAGER=y # CONFIG_VIRT_DRIVERS is not set CONFIG_VIRTIO_ANCHOR=y CONFIG_VIRTIO=y @@ -3235,7 +3256,13 @@ CONFIG_VIRTIO_PCI_LEGACY=y # CONFIG_VIRTIO_INPUT is not set # CONFIG_VIRTIO_MMIO is not set # CONFIG_VDPA is not set -# CONFIG_VHOST_MENU is not set +CONFIG_VHOST_IOTLB=y +CONFIG_VHOST_TASK=y +CONFIG_VHOST=y +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=y +CONFIG_VHOST_VSOCK=y +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set # # Microsoft Hyper-V guest support @@ -3975,6 +4002,7 @@ CONFIG_TEXTSEARCH=y CONFIG_TEXTSEARCH_KMP=y CONFIG_TEXTSEARCH_BM=y CONFIG_TEXTSEARCH_FSM=y +CONFIG_INTERVAL_TREE=y CONFIG_XARRAY_MULTI=y CONFIG_ASSOCIATIVE_ARRAY=y CONFIG_HAS_IOMEM=y @@ -4004,9 +4032,8 @@ CONFIG_HAVE_GENERIC_VDSO=y CONFIG_GENERIC_GETTIMEOFDAY=y CONFIG_GENERIC_VDSO_TIME_NS=y CONFIG_FONT_SUPPORT=y -# CONFIG_FONTS is not set -CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y +CONFIG_FONT_AUTOSELECT=y CONFIG_SG_POOL=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y @@ -4226,7 +4253,9 @@ CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y # x86 Debugging # # CONFIG_X86_VERBOSE_BOOTUP is not set -# CONFIG_EARLY_PRINTK is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_EARLY_PRINTK_DBGP is not set +# CONFIG_EARLY_PRINTK_USB_XDBC is not set # CONFIG_EFI_PGT_DUMP is not set # CONFIG_DEBUG_TLBFLUSH is not set CONFIG_HAVE_MMIOTRACE_SUPPORT=y diff --git a/packages/nasm/Containerfile b/packages/nasm/Containerfile new file mode 100644 index 0000000..dfb4784 --- /dev/null +++ b/packages/nasm/Containerfile @@ -0,0 +1,32 @@ +FROM scratch AS base +ENV VERSION=2.16.03 +ENV SRC_HASH=1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148 +ENV SRC_FILE=nasm-${VERSION}.tar.xz +ENV SRC_SITE=https://www.nasm.us/pub/nasm/releasebuilds/${VERSION}/${SRC_FILE} + +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/perl . / +RUN tar -xf ${SRC_FILE} +WORKDIR /nasm-${VERSION} +RUN --network=none <<-EOF + set -eux + ./configure \ + --build=x86_64-linux-musl \ + --host=x86_64-linux-musl \ + --prefix=/usr + make -j "$(nproc)" +EOF + +FROM build AS install +RUN --network=none DESTDIR=/rootfs make install + +FROM stagex/filesystem AS package +COPY --from=install /rootfs/. / diff --git a/packages/qemu/Containerfile b/packages/qemu/Containerfile index f386e1f..c7f55fb 100644 --- a/packages/qemu/Containerfile +++ b/packages/qemu/Containerfile @@ -1,6 +1,6 @@ FROM scratch AS base -ENV VERSION=9.0.2 -ENV SRC_HASH=a8c3f596aece96da3b00cafb74baafa0d14515eafb8ed1ee3f7f5c2d0ebf02b6 +ENV VERSION=9.1.0 +ENV SRC_HASH=816b7022a8ba7c2ac30e2e0cf973e826f6bcc8505339603212c5ede8e94d7834 ENV SRC_FILE=qemu-${VERSION}.tar.xz ENV SRC_SITE=https://download.qemu.org/${SRC_FILE} @@ -48,6 +48,7 @@ COPY --from=stagex/libaio . / COPY --from=stagex/libzstd . / COPY --from=stagex/libseccomp . / COPY --from=stagex/libcap-ng . / +COPY --from=stagex/libslirp . / COPY --from=stagex/alsa-lib . / COPY --from=stagex/ncurses . / COPY --from=stagex/curl . / @@ -83,11 +84,37 @@ ENV CFLAGS=" \ -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" ENV CXXFLAGS="$CFLAGS -Wp,-D_GLIBCXX_ASSERTIONS" ENV LTOFLAGS="-flto=auto" +ENV TARGET_LIST="x86_64-softmmu,x86_64-linux-user,i386-softmmu,i386-linux-user" +COPY <<-EOF pc-bios/optionrom/config.mak + TOPSRC_DIR=/qemu-${VERSION} + CC=gcc + CCAS=gcc + AR=ar + AS=as + LD=ld + NM=nm + OBJCOPY=objcopy + RANLIB=ranlib + STRIP=strip +EOF RUN --network=none <<-EOF set -eux + # rm -rf pc-bios/*.bz2 + rm -rf \ + pc-bios/*.bin \ + pc-bios/*.rom \ + pc-bios/*.img \ + pc-bios/*.e500 \ + pc-bios/*.dtb \ + pc-bios/*.lid \ + pc-bios/*.ndrv \ + pc-bios/palcode-clipper \ + pc-bios/openbios-* + make -j "$(nproc)" -C pc-bios/optionrom all ./configure \ --build="x86_64-linux-musl" \ --host="x86_64-linux-musl" \ + --target-list="$TARGET_LIST" \ --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ @@ -99,6 +126,12 @@ RUN --network=none <<-EOF --enable-curses \ --enable-modules \ --enable-tpm \ + --enable-vhost-net \ + --enable-attr \ + --enable-linux-user \ + --enable-slirp \ + --enable-tcg \ + --disable-install-blobs \ --disable-docs \ --disable-sdl \ --disable-gtk \ @@ -115,13 +148,12 @@ RUN --network=none <<-EOF --disable-spice \ --disable-usb-redir \ --disable-vde \ - --disable-vhost-net \ --disable-virglrenderer \ --disable-virtfs \ --disable-vnc \ --disable-vnc-jpeg \ --disable-xen - make ARFLAGS="rc" + make ARFLAGS="rc" -j "$(nproc)" EOF FROM build AS install @@ -129,50 +161,8 @@ RUN --network=none <<-EOF make DESTDIR=/rootfs install rm -rf /rootfs/var/run strip /rootfs/usr/bin/qemu-* - # These are not currently deterministic so we can't release them yet - rm -rf /rootfs/usr/bin/qemu-aarch64 - rm -rf /rootfs/usr/bin/qemu-aarch64_be - rm -rf /rootfs/usr/bin/qemu-arm - rm -rf /rootfs/usr/bin/qemu-armeb - rm -rf /rootfs/usr/bin/qemu-hexagon - rm -rf /rootfs/usr/bin/qemu-hppa - rm -rf /rootfs/usr/bin/qemu-loongarch64 - rm -rf /rootfs/usr/bin/qemu-microblaze - rm -rf /rootfs/usr/bin/qemu-microblazeel - rm -rf /rootfs/usr/bin/qemu-mips - rm -rf /rootfs/usr/bin/qemu-mips64 - rm -rf /rootfs/usr/bin/qemu-mips64el - rm -rf /rootfs/usr/bin/qemu-mipsel - rm -rf /rootfs/usr/bin/qemu-mipsn32 - rm -rf /rootfs/usr/bin/qemu-mipsn32el - rm -rf /rootfs/usr/bin/qemu-or1k - rm -rf /rootfs/usr/bin/qemu-ppc - rm -rf /rootfs/usr/bin/qemu-ppc64 - rm -rf /rootfs/usr/bin/qemu-ppc64le - rm -rf /rootfs/usr/bin/qemu-riscv32 - rm -rf /rootfs/usr/bin/qemu-riscv64 - rm -rf /rootfs/usr/bin/qemu-sparc - rm -rf /rootfs/usr/bin/qemu-sparc32plus - rm -rf /rootfs/usr/bin/qemu-sparc64 - rm -rf /rootfs/usr/bin/qemu-system-aarch64 - rm -rf /rootfs/usr/bin/qemu-system-arm - rm -rf /rootfs/usr/bin/qemu-system-avr - rm -rf /rootfs/usr/bin/qemu-system-hppa - rm -rf /rootfs/usr/bin/qemu-system-loongarch64 - rm -rf /rootfs/usr/bin/qemu-system-microblaze - rm -rf /rootfs/usr/bin/qemu-system-microblazeel - rm -rf /rootfs/usr/bin/qemu-system-mips - rm -rf /rootfs/usr/bin/qemu-system-mips64 - rm -rf /rootfs/usr/bin/qemu-system-mips64el - rm -rf /rootfs/usr/bin/qemu-system-mipsel - rm -rf /rootfs/usr/bin/qemu-system-or1k - rm -rf /rootfs/usr/bin/qemu-system-ppc - rm -rf /rootfs/usr/bin/qemu-system-ppc64 - rm -rf /rootfs/usr/bin/qemu-system-riscv32 - rm -rf /rootfs/usr/bin/qemu-system-riscv64 - rm -rf /rootfs/usr/bin/qemu-system-rx - rm -rf /rootfs/usr/bin/qemu-system-sparc - rm -rf /rootfs/usr/bin/qemu-system-sparc64 + install -vDm 644 pc-bios/optionrom/*.bin -t /rootfs/usr/share/qemu + install -vDm 644 pc-bios/optionrom/*.img -t /rootfs/usr/share/qemu EOF FROM stagex/filesystem AS package 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