diff --git a/README.md b/README.md index c7e53ed..7fe3dc2 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ sudo grub-mkconfig -o /boot/grub/grub.cfg - If you only want the script to patch the sources in `linux-src-git`, you can use `./install.sh config` - `${kernel_flavor}` is a default naming scheme but can be customized with the variable `_kernel_localversion` in `customization.cfg`. - `_dracut_options` is a variable that can be changed in `customization.cfg`. +- `_libunwind_replace` is a variable that can be changed in `customization.cfg` for replacing `libunwind` with `llvm-libunwind`. - The script uses Arch's `.config` file as a base. A custom one can be provided through `_configfile` in `customization.cfg`. - The installed files will not be tracked by your package manager and uninstalling requires manual intervention. `./install.sh uninstall-help` can help with useful information if your install procedure follows the `Generic` approach. @@ -125,8 +126,4 @@ cd linux-tkg # Optional: edit the "customization.cfg" file ./install.sh install ``` -**Notes:** -- If you're running openrc, you'll want to set `_configfile="running-kernel"` to use your current kernel's defconfig instead of Arch's. Else the resulting kernel won't boot. -- The script will prompt for using `llvm-libunwind`, it can only work with the `llvm-libunwind` `USE` flag in `sys-devel/clang` but it is experimental: - - Manual intervention is needed on the `net-fs/samba` EBUILD, see [here](https://bugs.gentoo.org/791349) - - The `-unwind` `USE` flag is needed in `app-emulation/wine*` EBUILDs +**Note:** If you're running openrc, you'll want to set `_configfile="running-kernel"` to use your current kernel's defconfig instead of Arch's. Else the resulting kernel won't boot. diff --git a/customization.cfg b/customization.cfg index 780645f..22ce772 100644 --- a/customization.cfg +++ b/customization.cfg @@ -74,7 +74,7 @@ _diffconfig="" # Set to the file name where the generated config fragment should be written to. Only used if _diffconfig is active. _diffconfig_name="" -# [install.sh: Generic and Gentoo specific] Dracut options when generating initramfs +# [Generic and Gentoo specific] Dracut options when generating initramfs _dracut_options="--lz4" #### KERNEL OPTIONS #### @@ -102,7 +102,7 @@ _STRIP="true" # LEAVE AN EMPTY VALUE TO BE PROMPTED ABOUT FOLLOWING OPTIONS AT BUILD TIME -# CPU scheduler - Options are "pds", "bmq", "cacule", "tt", "bore", "bore-eevdf", "cfs" (linux 6.5-) or "eevdf" (kernel's default, 6.6+) +# CPU scheduler - Options are "pds", "bmq", "cacule", "tt", "bore", "bore-eevdf", "echo", "cfs" (linux 6.5-) or "eevdf" (kernel's default, 6.6+) # "upds" (TkG's Undead PDS) and "muqss" are also available on legacy kernel revisions _cpusched="" @@ -110,9 +110,15 @@ _cpusched="" # For advanced users. _compiler="" -# Force the use of the LLVM Integrated Assembler whether using LLVM, LTO or not. -# Set to "1" to enable. -_llvm_ias="" +# [Generic and Gentoo specific] Replace `libunwind` with `llvm-libunwind`. +# ! This is currently experimental. +# ! It can only work with the `llvm-libunwind` `USE` flag in `sys-devel/clang-common` for Gentoo. +# Set to "true" to enable. +_libunwind_replace="" + +# Use the LLVM Integrated Assembler for a complete LLVM toolchain built kernel. Default is "1" when using LLVM. +# Set to "0" to disable if desired, otherwise stick to the default behavior. +_llvm_ias="1" # Clang LTO mode, only available with the "llvm" compiler - options are "no", "full" or "thin". # ! This is currently experimental and might result in an unbootable kernel - Not recommended ! @@ -196,7 +202,7 @@ _compileroptlevel="1" # 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" "sapphirerapids" "rocketlake" "alderlake" "raptorlake" "meteorlake" (raptorlake and meteorlake opt support require GCC13) # 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) +# - "native_intel" (use compiler autodetection - 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) @@ -221,7 +227,7 @@ _smt_nice="" # Trust the CPU manufacturer to initialize Linux's CRNG (RANDOM_TRUST_CPU) - Kernel default is "false" _random_trust_cpu="true" -# Timer frequency - "100" "250" "300" "500" "750" "1000" ("2000" is available for cacule cpusched only) - More options available in kernel config prompt when left empty depending on selected cpusched with the default option pointed with a ">" (2000 for cacule, 100 for muqss and 1000 for other cpu schedulers) +# Timer frequency - "100" "250" "300" "500" "750" "1000" ("2000" is available for cacule cpusched only, "625" is available for echo cpusched only) - More options available in kernel config prompt when left empty depending on selected cpusched with the default option pointed with a ">" (2000 for cacule, 100 for muqss, 625 for echo and 1000 for other cpu schedulers) _timer_freq="" # Default CPU governor - "performance", "ondemand", "schedutil" or leave empty for default (schedutil) diff --git a/install.sh b/install.sh index 28fe18b..8468363 100755 --- a/install.sh +++ b/install.sh @@ -112,9 +112,7 @@ if [ "$1" = "install" ] || [ "$1" = "config" ]; then # Run init script that is also run in PKGBUILD, it will define some env vars that we will use _tkg_initscript - if [[ "${_compiler}" = "llvm" && "${_distro}" =~ ^(Generic|Gentoo)$ ]]; then - read -p "Replace \"libunwind\" with \"llvm-libunwind\" ? Y/[n]:" _libunwind_replace - if [[ "${_libunwind_replace}" =~ ^(y|yes|Yes|Y)$ ]]; then + if [[ "${_compiler}" = "llvm" && "${_distro}" =~ ^(Generic|Gentoo)$ && "${_libunwind_replace}" = "true" ]]; then export LDFLAGS_MODULE="-unwindlib=libunwind" export HOSTLDFLAGS="-unwindlib=libunwind" fi @@ -399,7 +397,7 @@ if [ "$1" = "install" ]; then sudo rm -rf "/usr/src/$_headers_folder_name" fi sudo cp -R . "/usr/src/$_headers_folder_name" - sudo rm -rf "/usr/src/$_headers_folder_name/.git" + sudo rm -rf "/usr/src/$_headers_folder_name"/.git* cd "/usr/src/$_headers_folder_name" msg2 "Installing modules" diff --git a/linux-tkg-config/prepare b/linux-tkg-config/prepare index e69164a..f92f4bb 100644 --- a/linux-tkg-config/prepare +++ b/linux-tkg-config/prepare @@ -43,44 +43,46 @@ done # PREEMPT_RT's supported kernel subversion typeset -Ag _rt_subver_map _rt_subver_map=( - ["5.4"]="264" + ["5.4"]="271" ["5.9"]="1" - ["5.10"]="210" + ["5.10"]="213" ["5.11"]="4" ["5.14"]="2" - ["5.15"]="148" + ["5.15"]="153" ["5.16"]="2" ["5.17"]="1" ["6.0"]="5" - ["6.1"]="80" + ["6.1"]="83" ["6.3"]="3" ["6.4"]="6" ["6.5"]="2" - ["6.6"]="20" + ["6.6"]="23" ["6.7"]="0" - ["6.8"]="rc7" + ["6.8"]="2" + ["6.9"]="rc2" ) # PREEMPT_RT's patch revision for the kernel # We separated this to allow for forcing the application of the patch when _preempt_rt_force=1 on version mismatch typeset -Ag _rt_rev_map _rt_rev_map=( - ["5.4"]="88" + ["5.4"]="89" ["5.9"]="20" - ["5.10"]="102" + ["5.10"]="105" ["5.11"]="11" ["5.14"]="21" - ["5.15"]="74" + ["5.15"]="75" ["5.16"]="19" ["5.17"]="17" ["6.0"]="14" - ["6.1"]="26" + ["6.1"]="28" ["6.3"]="15" ["6.4"]="8" ["6.5"]="8" - ["6.6"]="25" + ["6.6"]="28" ["6.7"]="6" - ["6.8"]="6" + ["6.8"]="11" + ["6.9"]="1" ) _undefine() {