Package Details: linux-xanmod 6.12.12-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: 132
Popularity: 1.14
First Submitted: 2017-02-14 09:40 (UTC)
Last Updated: 2025-02-02 13:59 (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 .. 27 28 29 30 31 32 33 34 35 36 37 .. 52 Next › Last »

rayzorben commented on 2020-10-12 18:27 (UTC)

Can the logic for myconfig be changed to be a 'full config' if there are more than 1000 lines AND it does not contain scripts/config

I want to be able to have more than 1000 lines, and it seems that the determining factor is if myconfig contains text string('scripts/config') then partial else full

  # This is intended for the people that want to build this package with their own config
  # Put the file "myconfig" at the package folder to use this feature
  # If it's a full config, will be replaced
  # If not, you should use scripts/config commands, one by line
  if [ -f "${startdir}/myconfig" ]; then
    if [ $(wc -l < "${startdir}/myconfig") -gt 1000 ]; then
      # myconfig is a full config file. Replace it
      msg2 "Using user CUSTOM config..."
      cp -f "${startdir}"/myconfig .config
    else
      # myconfig is a partial file. Applying every line
      msg2 "Applying configs..."
      cat "${startdir}"/myconfig | while read -r _linec ; do
        if echo "$_linec" | grep "scripts/config" ; then
          set -- $_linec
          "$@"
        else
          warning "Line format incorrect, ignoring..."
        fi
      done
    fi
    echo
  fi

parovoz commented on 2020-10-11 12:58 (UTC) (edited on 2020-10-11 12:59 (UTC) by parovoz)

Please change the choose-gcc-optimisation.sh On my computer in the output of gcc -c -Q -march=native --help=target I can see this:

  Known valid arguments for -march= option:
    i386 i486 i586 pentium lakemont pentium-mmx winchip-c6 winchip2 c3 samuel-2
c3-2 nehemiah c7 esther i686 pentiumpro pentium2 pentium3 pentium3m pentium-m
pentium4 pentium4m prescott nocona core2 nehalem corei7 westmere sandybridge
corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512
cannonlake icelake-client icelake-server cascadelake tigerlake cooperlake bonnell
atom silvermont slm goldmont goldmont-plus tremont knl knm intel geode k6 k6-2 k6-3
athlon athlon-tbird athlon-4 athlon-xp athlon-mp x86-64 eden-x2 nano nano-1000
nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64
athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2
btver1 btver2 generic native

so microarchitecture of my ryzen 3 1300x is named as znver1

nTia89 commented on 2020-10-11 11:10 (UTC)

Why do we have so many makedeps? python-sphinx firstly.

figue commented on 2020-10-01 18:05 (UTC)

Probably pamac don't maintain the environment, so variables are not passed to makepkg. You have to build it manually for now.

IsNoGood commented on 2020-10-01 14:34 (UTC)

i previosly installed it with pamac, if clone repo and manualy build it works.

figue commented on 2020-10-01 08:50 (UTC)

@IsNoGood mmm I'm not sure what's is going on...

In my current laptop I have this:

figue@pluto ~ % uname -a
Linux pluto 5.8.12-xanmod1-1 #1 SMP PREEMPT Mon, 28 Sep 2020 06:12:21 +0000 x86_64 GNU/Linux

figue@pluto ~ % zgrep USER_NS /proc/config.gz
CONFIG_USER_NS=y
CONFIG_USER_NS_UNPRIVILEGED=y

figue@pluto ~ % cat packages-figue/linux-xanmod/build.sh 
#!/usr/bin/env bash
export LANG=C
_microarchitecture=42 use_numa=n use_tracers=n use_ns=y _localmodcfg=y use_cachy=y makepkg $*

@Sourav I'm not using custom flags actually, only flags provided by Xanmod in GCC optimization (see https://github.com/xanmod/linux/commit/bafdc4b2d355ff81814678ba221d538763b497a0). In PKGBUILD I don't change or ignore CC flags... Should be another thing.

IsNoGood commented on 2020-10-01 05:38 (UTC)

how to correctly apply following settings?

 env _microarchitecture=42 use_numa=n use_tracers=n use_pds=n use_ns=y use_cachy=y makepkg -si

Even if i type "env _microarchitecture=42 use_numa=n use_tracers=n use_pds=n use_ns=y use_cachy=y" in console it shows that settings added to env but after compile i get error


cannot clone: Operation not permitted
user namespaces are not enabled in /proc/sys/kernel/unprivileged_userns_clone
Error: cannot re-exec process

Sourav commented on 2020-09-30 20:24 (UTC) (edited on 2020-09-30 21:07 (UTC) by Sourav)

See, the CC, and CFLAGS inside /etc/makepkg.conf are completely ignored by the makepkg -si inside linux-xanmod. But flags like: MAKEFLAGS="-j$(( `nproc` * 2 + 1 ))" is working flawlessly.

It used to work till the 5.8.8 which I compiled last.

In this version, I was trying to use clang, but it kept using gcc. It's ignoring clang and the optimization flags in this version. Even env variable isn't working, perhaps something overriding those inside PKGBUILD? I have to thus modify the make all line inside PKGBUILD, which also works just fine.

figue commented on 2020-09-30 18:55 (UTC) (edited on 2020-09-30 18:55 (UTC) by figue)

What do you add exactly? Why not modifying /etc/makepkg.conf or use a custom with "makepkg --config /etc/makepkg.conf_O3" for instance...