b595006ffb
* Enable setting modprobed-db database path This enables using different dbs and be able to build the kernel for others, with modprobed-db * Save generated .config file back to user's git folder, for eventual re-use * Set local version for all distros * install.sh: handle user provided .config files Update dosctring for the _configfile var in customization.cfg * install.sh: fix kernel version prompt broken newlines * Copy final config file as kernelconfig.new
231 lines
13 KiB
INI
231 lines
13 KiB
INI
# linux-TkG config file
|
|
|
|
# Linux distribution you are using, options are "Arch", "Void", "Ubuntu", "Debian", "Fedora" or "Suse".
|
|
# It is automatically set to "Arch" when using PKGBUILD.
|
|
# If left empty, the script will prompt
|
|
_distro=""
|
|
|
|
# Kernel Version - Options are "5.4", "5.7", "5.8", "5.9", "5.10", "5.11"
|
|
_version=""
|
|
|
|
#### MISC OPTIONS ####
|
|
|
|
# External config file to use - If the given file exists in path, it will override default config (customization.cfg) - Default is ~/.config/frogminer/linux-tkg.cfg
|
|
_EXT_CONFIG_PATH=~/.config/frogminer/linux-tkg.cfg
|
|
|
|
# [Arch specific] Set to anything else than "true" to limit cleanup operations and keep source and files generated during compilation.
|
|
# Default is "true".
|
|
_NUKR="true"
|
|
|
|
# [install.sh specific] Git mirror to use to get the kernel sources, possible values are "googlesource.com" and "kernel.org"
|
|
_git_mirror="kernel.org"
|
|
|
|
# Custom compiler root dirs - Leave empty to use system compilers
|
|
# Example: CUSTOM_GCC_PATH="/home/frog/PKGBUILDS/mostlyportable-gcc/gcc-mostlyportable-9.2.0"
|
|
CUSTOM_GCC_PATH=""
|
|
|
|
# Custom LLVM compiler root dirs - Leave empty to use system llvm compiler
|
|
# Example: CUSTOM_LLVM_PATH="/home/frog/PKGBUILDS/mostlyportable-llvm/llvm-mostlyportable-11.0.0"
|
|
CUSTOM_LLVM_PATH=""
|
|
|
|
# Set to the number corresponding to a predefined profile to use it. Current list of available profiles :
|
|
# 1 - Custom (meaning nothing will be enforced and you get to configure everything)
|
|
# 2 - Ryzen desktop (performance)
|
|
# 3 - Generic Desktop (Performance)
|
|
_OPTIPROFILE=""
|
|
|
|
# Set to true to bypass makepkg.conf and use all available threads for compilation. False will respect your makepkg.conf options.
|
|
_force_all_threads="true"
|
|
|
|
# Set to true to prevent ccache from being used and set CONFIG_GCC_PLUGINS=y (which needs to be disabled for ccache to work properly)
|
|
_noccache="false"
|
|
|
|
# Set to true to use modprobed db to clean config from unneeded modules. Speeds up compilation considerably. Requires root - https://wiki.archlinux.org/index.php/Modprobed-db
|
|
# !!!! Make sure to have a well populated db !!!! - Leave empty to be asked about it at build time
|
|
_modprobeddb="false"
|
|
|
|
# modprobed-db database file location
|
|
_modprobeddb_db_path=~/.config/modprobed.db
|
|
|
|
# Set to "1" to call make menuconfig, "2" to call make nconfig, "3" to call make xconfig, before building the kernel. Set to false to disable and skip the prompt.
|
|
_menunconfig=""
|
|
|
|
# Set to true to generate a kernel config fragment from your changes in menuconfig/nconfig. Set to false to disable and skip the prompt.
|
|
_diffconfig=""
|
|
|
|
# Set to the file name where the generated config fragment should be written to. Only used if _diffconfig is active.
|
|
_diffconfig_name=""
|
|
|
|
#### KERNEL OPTIONS ####
|
|
|
|
# Name of the default config file to use for the kernel
|
|
# Default (empty):
|
|
# - Archlinux (PKGBUILD): "config.x86_64" from the linux-tkg-config/5.y folder.
|
|
# - install.sh: Picks the .config file from the currently running kernel.
|
|
# It is recommended to be running an official kernel before running this script, to pick off a correct .config file
|
|
# User provided:
|
|
# - Archlinux : use "config_hardened.x86_64" to get a hardened kernel. To get a complete hardened setup, you have to use "cfs" as _cpusched.
|
|
# - Any : custom user provided file, the given path should be relative to the PKGBUILD file. This enables for example to use a user stripped down .config file.
|
|
# If the .config file isn't up to date with the chosen kernel version, any extra CONFIG_XXXX is set to its default value.
|
|
# Note: the script copies the resulting .config file as "kernelconfig.new" next to the PKGBUILD as a convenience for an eventual re-use. It gets overwritten at each run.
|
|
# One can use "kernelconfig.new" here to always use the latest edited .config file. modprobed-db needs to be used only once for its changes to be picked up.
|
|
_configfile=""
|
|
|
|
# Disable some non-module debugging - See PKGBUILD for the list
|
|
_debugdisable="false"
|
|
|
|
# LEAVE AN EMPTY VALUE TO BE PROMPTED ABOUT FOLLOWING OPTIONS AT BUILD TIME
|
|
|
|
# CPU scheduler - Options are "upds" (TkG's Undead PDS), "pds", "bmq", "muqss" or "cfs"
|
|
# "upds" is the recommended option for gaming
|
|
_cpusched=""
|
|
|
|
# Compiler to use - Options are "gcc" or "llvm".
|
|
# For advanced users.
|
|
_compiler=""
|
|
|
|
# CPU sched_yield_type - Choose what sort of yield sched_yield will perform
|
|
# For PDS and MuQSS: 0: No yield. (Recommended option for gaming on PDS and MuQSS)
|
|
# 1: Yield only to better priority/deadline tasks. (Default - can be unstable with PDS on some platforms)
|
|
# 2: Expire timeslice and recalculate deadline. (Usually the slowest option for PDS and MuQSS, not recommended)
|
|
# For BMQ: 0: No yield.
|
|
# 1: Deboost and requeue task. (Default)
|
|
# 2: Set rq skip task.
|
|
_sched_yield_type=""
|
|
|
|
# Round Robin interval is the longest duration two tasks with the same nice level will be delayed for. When CPU time is requested by a task, it receives a time slice equal
|
|
# to the rr_interval in addition to a virtual deadline. When using yield_type 2, a low value can help offset the disadvantages of rescheduling a process that has yielded.
|
|
# MuQSS default: 6ms"
|
|
# PDS default: 4ms"
|
|
# BMQ default: 2ms"
|
|
# Set to "1" for 2ms, "2" for 4ms, "3" for 6ms, "4" for 8ms, or "default" to keep the chosen scheduler defaults.
|
|
_rr_interval=""
|
|
|
|
# Set to "true" to disable FUNCTION_TRACER/GRAPH_TRACER, lowering overhead but limiting debugging and analyzing of kernel functions - Kernel default is "false"
|
|
_ftracedisable="false"
|
|
|
|
# Set to "true" to disable NUMA, lowering overhead, but breaking CUDA/NvEnc on Nvidia equipped systems - Kernel default is "false"
|
|
_numadisable="false"
|
|
|
|
# Set to "true" to enable misc additions - May contain temporary fixes pending upstream or changes that can break on non-Arch - Kernel default is "true"
|
|
_misc_adds="true"
|
|
|
|
# Set to "1" to use CattaRappa mode (enabling full tickless), "2" for tickless idle only, or "0" for periodic ticks.
|
|
# Full tickless can give higher performances in various cases but, depending on hardware, lower consistency. Just tickless idle can perform better on some platforms (mostly AMD based).
|
|
_tickless=""
|
|
|
|
# Setting this to to "true" can improve latency on PDS (at the cost of throughput) and improve throughput on other schedulers (at the cost of latency) - Can improve VMs performance - Kernel default is "false"
|
|
_voluntary_preempt=""
|
|
|
|
# Set to "true" to enable Device Tree and Open Firmware support. If you don't know about it, you don't need it - Default is "false"
|
|
_OFenable="false"
|
|
|
|
# Set to "true" to use ACS override patch - https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Bypassing_the_IOMMU_groups_.28ACS_override_patch.29 - Kernel default is "false"
|
|
_acs_override=""
|
|
|
|
# Set to "true" to add Bcache filesystem support. You'll have to install bcachefs-tools-git from AUR for utilities - https://bcachefs.org/ - If in doubt, set to "false"
|
|
_bcachefs=""
|
|
|
|
# Set to "true" to add back missing symbol for AES-NI/AVX support on ZFS - https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch - Kernel default is "false"
|
|
_zfsfix=""
|
|
|
|
# Set to "true" to enable support for fsync, an experimental replacement for esync found in Valve Proton 4.11+ - https://steamcommunity.com/games/221410/announcements/detail/2957094910196249305
|
|
_fsync=""
|
|
|
|
# Set to "true" to enable support for futex2, an experimental interface that can be used by proton-tkg and proton 5.13 experimental through Fsync - Can be enabled alongside fsync to use it as a fallback
|
|
# https://gitlab.collabora.com/tonyk/linux/-/tree/futex2-dev
|
|
_futex2=""
|
|
|
|
# Set to "true" to enable support for winesync, an experimental replacement for esync - requires patched wine - https://repo.or.cz/linux/zf.git/shortlog/refs/heads/winesync
|
|
_winesync=""
|
|
|
|
# Set to "true" to enable the Binder and Ashmem, the kernel modules required to use the android emulator Anbox.
|
|
_anbox=""
|
|
|
|
# A selection of patches from Zen/Liquorix kernel and additional tweaks for a better gaming experience (ZENIFY) - Default is "true"
|
|
_zenify="true"
|
|
|
|
# compiler optimization level - 1. Optimize for performance (-O2); 2. Optimize harder (-O3); 3. Optimize for size (-Os) - Kernel default is "1"
|
|
_compileroptlevel="1"
|
|
|
|
# CPU compiler optimizations - Defaults to prompt at kernel config if left empty
|
|
# AMD CPUs : "k8" "k8sse3" "k10" "barcelona" "bobcat" "jaguar" "bulldozer" "piledriver" "steamroller" "excavator" "zen" "zen2" "zen3" (zen3 opt support depends on GCC11)
|
|
# Intel CPUs : "mpsc"(P4 & older Netburst based Xeon) "atom" "core2" "nehalem" "westmere" "silvermont" "sandybridge" "ivybridge" "haswell" "broadwell" "skylake" "skylakex" "cannonlake" "icelake" "goldmont" "goldmontplus" "cascadelake" "cooperlake" "tigerlake"
|
|
# Other options :
|
|
# - "native_amd" (use compiler autodetection - Selecting your arch manually in the list above is recommended instead of this option)
|
|
# - "native_intel" (use compiler autodetection and will prompt for P6_NOPS - Selecting your arch manually in the list above is recommended instead of this option)
|
|
# - "generic" (kernel's default - to share the package between machines with different CPU µarch as long as they are x86-64)
|
|
#
|
|
# https://en.wikipedia.org/wiki/X86-64#Microarchitecture_Levels)
|
|
# - "generic_v2" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v2
|
|
# - "generic_v3" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v3
|
|
# - "generic_v4" (depends on GCC11 - to share the package between machines with different CPU µarch supporting at least x86-64-v4
|
|
_processor_opt=""
|
|
|
|
# MuQSS only - Make IRQ threading compulsory (FORCE_IRQ_THREADING) - Default is "false"
|
|
_irq_threading="false"
|
|
|
|
# MuQSS and PDS only - SMT (Hyperthreading) aware nice priority and policy support (SMT_NICE) - Kernel default is "true" - You can disable this on non-SMT/HT CPUs for lower overhead
|
|
_smt_nice=""
|
|
|
|
# Trust the CPU manufacturer to initialize Linux's CRNG (RANDOM_TRUST_CPU) - Kernel default is "false"
|
|
_random_trust_cpu="false"
|
|
|
|
# MuQSS only - CPU scheduler runqueue sharing - No sharing (RQ_NONE), SMT (hyperthread) siblings (RQ_SMT), Multicore siblings (RQ_MC), Symmetric Multi-Processing (RQ_SMP), NUMA (RQ_ALL)
|
|
# Valid values are "none", "smt", "mc", "mc-llc"(for zen), "smp", "all" - Kernel default is "smt"
|
|
_runqueue_sharing=""
|
|
|
|
# Timer frequency - "100" "500", "750" or "1000" - More options available in kernel config prompt when left empty depending on selected cpusched - Kernel default is "500" - For MuQSS, 100Hz is recommended
|
|
_timer_freq=""
|
|
|
|
# Default CPU governor - "performance", "ondemand", "schedutil" or leave empty for default (schedutil)
|
|
_default_cpu_gov="ondemand"
|
|
|
|
# Use an aggressive ondemand governor instead of default ondemand to improve performance on low loads/high core count CPUs while keeping some power efficiency from frequency scaling.
|
|
# It still requires you to either set ondemand as default governor or to select it some way.
|
|
_aggressive_ondemand="true"
|
|
|
|
# On some platforms, an acpi_cpufreq bug affects performance negatively. Set to "true" to disable it as a workaround, but it will use more power.
|
|
# https://github.com/Tk-Glitch/PKGBUILDS/issues/263
|
|
_disable_acpi_cpufreq=""
|
|
|
|
# You can pass a default set of kernel command line options here - example: "intel_pstate=passive nowatchdog amdgpu.ppfeaturemask=0xfffd7fff mitigations=off"
|
|
_custom_commandline="intel_pstate=passive"
|
|
|
|
|
|
#### SPESHUL OPTION ####
|
|
|
|
# If you want to bypass the stock naming scheme and enforce something else (example : "linux") - Useful for some bootloaders requiring manual entry editing on each release.
|
|
# !!! It will also change pkgname - If you don't explicitely need this, don't use it !!!
|
|
_custom_pkgbase=""
|
|
|
|
# [non-Arch specific] Kernel localversion. Putting it to "Mario" will make for example the kernel version be 5.7.0-tkg-Mario (given by uname -r)
|
|
# If left empty, it will use -tkg-"${_cpusched}" where "${_cpusched}" will be replaced by the user chosen scheduler
|
|
_kernel_localversion=""
|
|
|
|
#### USER PATCHES ####
|
|
|
|
# community patches - add patches (separated by a space) of your choice by name from the community-patches dir
|
|
# example: _community_patches="clear_nack_in_tend_isr.myrevert ffb_regression_fix.mypatch 0008-drm-amd-powerplay-force-the-trim-of-the-mclk-dpm-levels-if-OD-is-enabled.mypatch"
|
|
_community_patches=""
|
|
|
|
# You can use your own patches by putting them in a subfolder called linux<version>-tkg-userpatches (e.g. linux510-tkg-userpatches) next to the PKGBUILD and giving them the .mypatch extension.
|
|
# You can also revert patches by putting them in that same folder and giving them the .myrevert extension.
|
|
|
|
# Also, userpatches variable below must be set to true for the above to work.
|
|
_user_patches="true"
|
|
|
|
# Apply all user patches without confirmation - !!! NOT RECOMMENDED !!!
|
|
_user_patches_no_confirm="false"
|
|
|
|
|
|
#### CONFIG FRAGMENTS ####
|
|
|
|
# You can use your own kernel config fragments by putting them in the same folder as the PKGBUILD and giving them the .myfrag extension.
|
|
|
|
# Also, the config fragments variable below must be set to true for the above to work.
|
|
_config_fragments="true"
|
|
|
|
# Apply all config fragments without confirmation - !!! NOT RECOMMENDED !!!
|
|
_config_fragments_no_confirm="false"
|