# ============================================================================= # KERNEL SPEC - Ro-ASD Linux Kernel (EXPERIMENTAL) # Gaming & Low-Latency Optimized - Vanilla Based # ============================================================================= %global debug_package %{nil} %global __strip /bin/true %global _build_id_links none %global _default_patch_fuzz 2 %global _disable_source_fetch 0 # === Basic Information === Name: ro-kernel-experimental %global branch experimental %global buildid .ro_%{branch} Version: 7.0 Release: 100%{?dist} Summary: Ro-ASD Experimental Kernel - Gaming & Low-Latency Optimized License: GPLv2 URL: https://github.com/Project-Ro-ASD/ro-kernel Vendor: Ro-ASD Kernel Team ExclusiveArch: x86_64 # === Macro Definitions === %define kverrel %{version}-%{release}%{?buildid}.%{_arch} %define kverstr %{version}-%{release}%{?buildid} # Compression settings %global compression xz %global compression_flags --compress %global compext xz # === Sources === Source0: https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-%{version}.tar.xz Source1: config # === Patches (With URLs) === # Based on patches from Nobara Project (https://github.com/Nobara-Project/rpm-sources/blob/43/baseos/kernel/6.19) # All patches licensed under GPLv2 Patch0: 0001-bore-roasd-7.0.patch Patch1: 0001-Allow-to-set-custom-USB-pollrate-for-specific-device-roasd-7.0.patch Patch2: valve-gamescope-framerate-control-fixups-roasd-7.0.patch Patch3: capture-device-nv12-fixup.patch Patch4: 0857-hwmon-nct6775-Add-ROG-STRIX-X870-I-GAMING-WIFI.patch Patch5: xpadneo-kernel-integration-roasd-7.0.patch Patch6: xpadneo-kernel-integration-roasd-fix-7.0.patch Patch7: MA350.patch Patch8: xe-nonx86-roasd-7.0.patch Patch9: linux-surface-roasd-7.0.patch # === Build Dependencies === BuildRequires: bash bc binutils bison flex gcc gcc-c++ make perl-interpreter BuildRequires: rsync openssl openssl-devel elfutils-libelf-devel dwarves BuildRequires: python3 python3-devel python3-pyyaml BuildRequires: kernel-rpm-macros BuildRequires: kmod bash coreutils tar git-core which BuildRequires: bzip2 xz findutils m4 perl-Carp perl-devel perl-generators diffutils gawk BuildRequires: asciidoc xmlto python3-docutils BuildRequires: libcap-devel libcap-ng-devel ncurses-devel BuildRequires: libtraceevent-devel libtracefs-devel libbpf-devel >= 0.6.0 # === Package Dependencies === Requires: linux-firmware >= 20150904 Requires(pre): coreutils systemd >= 203 Requires(post): %{name}-modules = %{version}-%{release} %description Ro-ASD Experimental Linux Kernel - Gaming & Low-Latency Optimized This kernel is based on vanilla Linux 7.0 with gaming optimizations. Includes patches from: - Nobara Project (BORE scheduler, gaming optimizations) - CachyOS (performance improvements) - Valve Corporation (gamescope support) Optimized for: - Low latency gaming - High performance scheduling (BORE) - Gaming peripherals support - Streaming/recording (OBS compatible) License: GPLv2 Third-party patches retain their original licenses. # === CORE PACKAGE === %package core Summary: Experimental Kernel core package (vmlinuz) Provides: installonlypkg(kernel) Provides: kernel-experimental = %{version}-%{release} Provides: kernel-experimental-core = %{version}-%{release} Provides: kernel-experimental-uname-r = %{kverrel} Provides: kernel-experimental-core-uname-r = %{kverrel} Provides: kernel-ro-experimental = %{version}-%{release} Requires: bash coreutils linux-firmware Requires: /usr/bin/kernel-install Requires: %{name}-modules = %{version}-%{release} %description core The Ro-ASD Experimental kernel core package containing the vmlinuz binary. Optimized for gaming with: - BORE Scheduler for better responsiveness - 1000Hz timer for low latency - Performance CPU governor - Gaming peripheral support Credits: - Based on vanilla kernel from kernel.org - BORE scheduler from CachyOS/Nobara Project - Gaming optimizations from Nobara Project # === MODULES PACKAGE === %package modules Summary: Kernel modules for the Ro-ASD experimental kernel Provides: installonlypkg(kernel-module) Provides: kernel-experimental-modules = %{version}-%{release} Provides: kernel-experimental-modules-uname-r = %{kverrel} Provides: kernel-ro-experimental-modules = %{version}-%{release} Requires: kmod %description modules Loadable kernel modules for the Ro-ASD experimental kernel. Compatible with NVIDIA/AMD proprietary drivers via akmods. # === DEVEL PACKAGE === %package devel Summary: Development headers for building external modules Provides: kernel-experimental-devel = %{version}-%{release} Provides: kernel-experimental-devel-uname-r = %{kverrel} Provides: kernel-ro-experimental-devel = %{version}-%{release} AutoReqProv: no Requires: findutils perl-interpreter openssl-devel Requires: elfutils-libelf-devel bison flex make gcc Requires: %{name}-core = %{version}-%{release} Enhances: akmods dkms %description devel Development headers and makefiles required for building external kernel modules. Required for: - NVIDIA/AMD proprietary drivers (akmods) - DKMS modules - VirtualBox/VMware kernel modules - WireGuard, ZFS, etc. # === PREP === %prep %setup -q -n linux-%{version} cp %{SOURCE1} .config %if 0%{?nopatches} == 0 patch -p1 -i %{PATCH0} # BORE patch -p1 -i %{PATCH1} # USB pollrate patch -p1 -i %{PATCH2} # gamescope patch -p1 -i %{PATCH3} # NV12 patch -p1 -i %{PATCH4} # ROG hwmon patch -p1 -i %{PATCH5} # xpadneo patch -p1 -i %{PATCH6} # xpadneofix patch -p1 -i %{PATCH7} # MA350 patch -p1 -i %{PATCH8} # xe nonx86 patch -p1 -i %{PATCH9} # surface %endif make %{?_smp_mflags} olddefconfig cp .config config-linux-%{branch} # === BUILD === %build make %{?_smp_mflags} KERNELRELEASE=%{kverrel} bzImage modules KCFLAGS="-g0 -O2" # === INSTALL === %install mkdir -p %{buildroot}/boot mkdir -p %{buildroot}/lib/modules/%{kverrel} mkdir -p %{buildroot}/usr/src/kernels/%{kverrel} ImageName=$(make KERNELRELEASE=%{kverrel} image_name | tail -n 1) cp -v $ImageName %{buildroot}/boot/vmlinuz-%{kverrel} chmod 755 %{buildroot}/boot/vmlinuz-%{kverrel} cp -v $ImageName %{buildroot}/lib/modules/%{kverrel}/vmlinuz chmod 755 %{buildroot}/lib/modules/%{kverrel}/vmlinuz make %{?_smp_mflags} INSTALL_MOD_PATH=%{buildroot} \ KERNELRELEASE=%{kverrel} modules_install cp -v .config %{buildroot}/boot/config-%{kverrel} cp -v System.map %{buildroot}/boot/System.map-%{kverrel} cp -v .config %{buildroot}/lib/modules/%{kverrel}/config cp -v System.map %{buildroot}/lib/modules/%{kverrel}/System.map # Development headers preparation cd %{_builddir}/linux-%{version} rm -f %{buildroot}/lib/modules/%{kverrel}/build rm -f %{buildroot}/lib/modules/%{kverrel}/source mkdir -p %{buildroot}/lib/modules/%{kverrel}/build (cd %{buildroot}/lib/modules/%{kverrel} ; ln -s build source) cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` \ %{buildroot}/lib/modules/%{kverrel}/build [ -e Module.symvers ] && cp Module.symvers %{buildroot}/lib/modules/%{kverrel}/build cp System.map %{buildroot}/lib/modules/%{kverrel}/build [ -e Module.symvers ] && cp Module.symvers %{buildroot}/lib/modules/%{kverrel}/symvers xz -f %{buildroot}/lib/modules/%{kverrel}/symvers || true cp -a scripts %{buildroot}/lib/modules/%{kverrel}/build/ rm -rf %{buildroot}/lib/modules/%{kverrel}/build/scripts/tracing cp -a include %{buildroot}/lib/modules/%{kverrel}/build/include %ifarch x86_64 cp -a --parents arch/x86/entry/syscalls/syscall_*.tbl \ %{buildroot}/lib/modules/%{kverrel}/build/ cp -a --parents arch/x86/tools/relocs*.c \ %{buildroot}/lib/modules/%{kverrel}/build/ %endif mkdir -p %{buildroot}/usr/src/kernels mv %{buildroot}/lib/modules/%{kverrel}/build %{buildroot}/usr/src/kernels/%{kverrel} ln -sf /usr/src/kernels/%{kverrel} %{buildroot}/lib/modules/%{kverrel}/build /sbin/depmod -b %{buildroot} -F %{buildroot}/lib/modules/%{kverrel}/System.map %{kverrel} || : # === POST SCRIPTS === %post core : %posttrans core /usr/bin/kernel-install add %{kverrel} /lib/modules/%{kverrel}/vmlinuz || exit $? if command -v grubby &>/dev/null; then echo "Experimental kernel installed. Use grubby to set as default if desired." fi %preun core /usr/bin/kernel-install remove %{kverrel} /lib/modules/%{kverrel}/vmlinuz || exit $? %post modules /sbin/depmod -a %{kverrel} %postun modules /sbin/depmod -a %{kverrel} %post devel if [ "$HARDLINK" != "no" ] && [ -x /usr/bin/hardlink ]; then (cd /usr/src/kernels/%{kverrel} && /usr/bin/find . -type f | while read f; do hardlink -c /usr/src/kernels/*/$f $f 2>/dev/null || : ; done) || : fi # === FILES === %files core %license COPYING %attr(0755,root,root) /boot/vmlinuz-%{kverrel} %attr(0644,root,root) /boot/config-%{kverrel} %attr(0644,root,root) /boot/System.map-%{kverrel} %ghost %attr(0600,root,root) /boot/initramfs-%{kverrel}.img %ghost %attr(0644,root,root) /boot/symvers-%{kverrel}.%{compext} %dir /lib/modules/%{kverrel} /lib/modules/%{kverrel}/vmlinuz /lib/modules/%{kverrel}/config /lib/modules/%{kverrel}/System.map /lib/modules/%{kverrel}/symvers.xz %files modules %dir /lib/modules/%{kverrel} /lib/modules/%{kverrel}/kernel/ /lib/modules/%{kverrel}/modules.* %exclude /lib/modules/%{kverrel}/build %exclude /lib/modules/%{kverrel}/source %files devel %dir /usr/src/kernels /usr/src/kernels/%{kverrel}/ /lib/modules/%{kverrel}/build /lib/modules/%{kverrel}/source %changelog * Fri Mar 27 2026 Ro-ASD Kernel Team - 7.0-100 - Initial experimental kernel release - Based on vanilla Linux 7.0 (kernel.org) - BORE scheduler from CachyOS Project - Gaming optimizations and low-latency config - Patches from: * Nobara Project (https://github.com/Nobara-Project/rpm-sources/blob/43/baseos/kernel/6.19) * Valve Corporation (gamescope) - x86_64 architecture only - Debug symbols disabled for performance - Compatible with NVIDIA/AMD akmods