Package Details: linux-xanmod 6.13.11-1

Git Clone URL: https://aur.archlinux.org/linux-xanmod.git (read-only, click to copy)
Package Base: linux-xanmod
Description: The Linux kernel and modules with Xanmod patches
Upstream URL: http://www.xanmod.org/
Licenses: GPL2
Provides: KSMBD-MODULE, NTFS3-MODULE, VIRTUALBOX-GUEST-MODULES, WIREGUARD-MODULE
Replaces: virtualbox-guest-modules-arch, wireguard-arch
Submitter: Yoshi2889
Maintainer: figue (figuepluto, jfigueras)
Last Packager: figue
Votes: 133
Popularity: 1.60
First Submitted: 2017-02-14 09:40 (UTC)
Last Updated: 2025-04-15 16:58 (UTC)

Dependencies (15)

Required by (6)

Sources (4)

Pinned Comments

anlorsp commented on 2024-07-13 17:07 (UTC) (edited on 2024-07-15 04:53 (UTC) by anlorsp)

Adding

scripts/config --disable CONFIG_IMA_ARCH_POLICY

to myconfig does solve the "Failed to insert module 'nvidia': Key was rejected by service" problem.

Anyone who configured secure boot using sbctl and want to load dkms modules can try this solution.

figue commented on 2018-12-14 00:50 (UTC) (edited on 2023-02-27 20:00 (UTC) by figue)

This package have several variables to enable/disable features.

##
## The following variables can be customized at build time. Use env or export to change at your wish
##
##   Example: env _microarchitecture=98 use_numa=n use_tracers=n makepkg -sc
##
## Look inside 'choose-gcc-optimization.sh' to choose your microarchitecture
## Valid numbers between: 0 to 99
## Default is: 0 => generic
## Good option if your package is for one machine: 98 (Intel native) or 99 (AMD native)
if [ -z ${_microarchitecture+x} ]; then
  _microarchitecture=0
fi

## Disable NUMA since most users do not have multiple processors. Breaks CUDA/NvEnc.
## Archlinux and Xanmod enable it by default.
## Set variable "use_numa" to: n to disable (possibly increase performance)
##                             y to enable  (stock default)
if [ -z ${use_numa+x} ]; then
  use_numa=y
fi

## Since upstream disabled CONFIG_STACK_TRACER (limits debugging and analyzing of the kernel)
## you can enable them setting this option. Caution, because they have an impact in performance.
## Stock Archlinux has this enabled. 
## Set variable "use_tracers" to: n to disable (possibly increase performance, XanMod default)
##                                y to enable  (Archlinux default)
if [ -z ${use_tracers+x} ]; then
  use_tracers=n
fi

# Unique compiler supported upstream is GCC
## Choose between GCC and CLANG config (default is GCC)
## Use the environment variable "_compiler=clang"
if [ "${_compiler}" = "clang" ]; then
  _compiler_flags="CC=clang HOSTCC=clang LLVM=1 LLVM_IAS=1"
fi

# Choose between the 4 main configs for stable branch. Default x86-64-v1 which use CONFIG_GENERIC_CPU2:
# Possible values: config_x86-64-v1 (default) / config_x86-64-v2 / config_x86-64-v3 / config_x86-64-v4
# This will be overwritten by selecting any option in microarchitecture script
# Source files: https://github.com/xanmod/linux/tree/5.17/CONFIGS/xanmod/gcc
if [ -z ${_config+x} ]; then
  _config=config_x86-64-v1
fi

# Compress modules with ZSTD (to save disk space)
if [ -z ${_compress_modules+x} ]; then
  _compress_modules=n
fi

# Compile ONLY used modules to VASTLY reduce the number of modules built
# and the build time.
#
# To keep track of which modules are needed for your specific system/hardware,
# give module_db script a try: https://aur.archlinux.org/packages/modprobed-db
# This PKGBUILD read the database kept if it exists
#
# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db
if [ -z ${_localmodcfg} ]; then
  _localmodcfg=n
fi

# Tweak kernel options prior to a build via nconfig
if [ -z ${_makenconfig} ]; then
  _makenconfig=n
fi

Personally I'm running now xanmod kernel compiled with this:

env _microarchitecture=98 use_tracers=n use_numa=n _localmodcfg=y _compress_modules=y makepkg -sic

Also, you can now create the file myconfig in your local repo to build this package with a custom config or use ${XDG_CONFIG_HOME}/linux-xanmod/myconfig. This file can be a full kernel config or be a script with several entries to add/remove options (you have several examples in PKGBUILD by using scripts/config):

Code involved:

  for _myconfig in "${SRCDEST}/myconfig" "${HOME}/.config/linux-xanmod/myconfig" "${XDG_CONFIG_HOME}/linux-xanmod/myconfig" ; do
    if [ -f "${_myconfig}" ] && [ "$(wc -l <"${_myconfig}")" -gt "0" ]; then
      if grep -q 'scripts/config' "${_myconfig}"; then
        # myconfig is a partial file. Executing as a script
        msg2 "Applying myconfig..."
        bash -x "${_myconfig}"
      else
        # myconfig is a full config file. Replacing default .config
        msg2 "Using user CUSTOM config..."
        cp -f "${_myconfig}" .config
      fi
      echo
      break
    fi
  done

Latest Comments

« First ‹ Previous 1 .. 15 16 17 18 19 20 21 22 23 24 25 .. 52 Next › Last »

redsolja commented on 2021-05-23 11:58 (UTC)

@figue you were right, thanks!

figue commented on 2021-05-21 16:10 (UTC)

Thanks @arglebargle. Looks good. Will add it in the next release.

arglebargle commented on 2021-05-21 09:18 (UTC) (edited on 2021-05-21 09:21 (UTC) by arglebargle)

Here's a small patch to support the new GCC 11 x86_64 microarchitecture feature level targets. Support for these choices is already upstream in the GCC patch Xanmod is applying, this just lets you pick them with the included gcc script.

92, 93, 94 select x86-64-v2, -v3 and -v4 respectively, you need GCC >= 11 for these to do anything useful. Feel free to modify however you like if 92, 93 and 94 aren't what you'd choose for this.

commit 4a477efde9fa24138733bc6b3eca7bd468e5528b
Author: Scott B <28817345+foundObjects@users.noreply.github.com>
Date:   Mon May 17 10:02:32 2021 -0700

    add new GCC-11 feature targets; require GCC>=11

diff --git a/choose-gcc-optimization.sh b/choose-gcc-optimization.sh
index e45a210..f10eec5 100755
--- a/choose-gcc-optimization.sh
+++ b/choose-gcc-optimization.sh
@@ -59,6 +59,10 @@ cat << EOF
    46) Intel Rocket Lake
    47) Intel Alder Lake

+   92) Generic-x86-64-v2 (Nehalem and newer)
+   93) Generic-x86-64-v3 (Haswell and newer)
+   94) Generic-x86-64-v4 (AVX512 CPUs)
+
    98) Intel-Native optimizations autodetected by GCC
    99) AMD-Native optimizations autodetected by GCC

@@ -117,6 +121,9 @@ case $answer in
    45) Microarchitecture=CONFIG_MSAPPHIRERAPIDS ;;
    46) Microarchitecture=CONFIG_MROCKETLAKE ;;
    47) Microarchitecture=CONFIG_MALDERLAKE ;;
+   92) Microarchitecture=CONFIG_GENERIC_CPU2 ;;
+   93) Microarchitecture=CONFIG_GENERIC_CPU3 ;;
+   94) Microarchitecture=CONFIG_GENERIC_CPU4 ;;
    98) Microarchitecture=CONFIG_MNATIVE_INTEL ;;
    99) Microarchitecture=CONFIG_MNATIVE_AMD ;;
     *) default=CONFIG_GENERIC_CPU ;;

figue commented on 2021-05-20 22:03 (UTC)

@redsolja please clean your src (makepkg -C), patches are ok.

redsolja commented on 2021-05-20 21:28 (UTC)

Cannot build.

patching file virt/kvm/kvm_main.c
==> ERROR: A failure occurred in prepare().
    Aborting...

figue commented on 2021-05-08 11:50 (UTC)

@tam1m done! Thanks.

cartesius commented on 2021-05-08 08:08 (UTC)

I'd also vote for a non-colliding _microarchitecture value.

tam1m commented on 2021-05-08 00:30 (UTC) (edited on 2021-05-08 00:31 (UTC) by tam1m)

@figue

Since 781eefb2ce30

_microarchitecture=98 sets CONFIG_MNATIVE_INTEL

and

_microarchitecture=99 sets CONFIG_MNATIVE_AMD

You should probably update the comments in the PKGBUILD since a lot of people might build for the wrong architecture by settings _microarchitecture=99 as suggested

figue commented on 2021-05-05 10:37 (UTC) (edited on 2021-05-05 10:37 (UTC) by figue)

@arglebargle I was reading about $startdir but it looks like is deprecated and will be removed some day soon. So I have changed it to $SRCDEST...

If I list all variables that points to $startdir I see all these:

BUILDDIR=/home/figue/packages/test
BUILDFILE=/home/figue/packages/test/PKGBUILD
LOGDEST=/home/figue/packages/test
OLDPWD=/home/figue/packages/test
PWD=/home/figue/packages/test/src
SRCPKGDEST=/home/figue/packages/test
pkgdir=/home/figue/packages/test/pkg/test
pkgdirbase=/home/figue/packages/test/pkg
srcdir=/home/figue/packages/test/src
startdir=/home/figue/packages/test

Perhaps we can use $(dirname $BUILDFILE)?

arglebargle commented on 2021-05-05 03:50 (UTC)

It looks like there's a small error in the PKGBUILD re: user config (myconfig) handling. The way it's written right now 'myconfig' will never be pulled in from the PKGBUILD directory.

See here:

  # This is intended for the people that want to build this package with their own config
  # Put the file "myconfig" at the package folder (this will take preference) or "${XDG_CONFIG_HOME}/linux-xanmod/myconfig"
  # If we detect partial file with scripts/config commands, we execute as a script
  # If not, it's a full config, will be replaced
  for _myconfig in "${SRCDEST}/myconfig" "${XDG_CONFIG_HOME}/linux-xanmod/myconfig" ; do
    if [ -f "${_myconfig}" ]; then
      if grep -q 'scripts/config' "${_myconfig}"; then

'myconfig' is never included in the sources list, so it won't be picked up by makepkg and copied into $SRCDEST (meaning this will only ever pluck the file from the users homedir.)

You probably want "${startdir}/myconfig" here instead.