Package Base Details: linux-xanmod

Git Clone URL: https://aur.archlinux.org/linux-xanmod.git (read-only, click to copy)
Submitter: Yoshi2889
Maintainer: figue (figuepluto, jfigueras)
Last Packager: figue
Votes: 127
Popularity: 1.29
First Submitted: 2017-02-14 09:40 (UTC)
Last Updated: 2024-05-04 08:02 (UTC)

Pinned Comments

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 .. 17 18 19 20 21 22 23 24 25 26 27 .. 51 Next › Last »

dmshimself commented on 2021-03-07 22:19 (UTC)

thanks @figue that is what I have in myconfig already, so great minds think alike :-)

and thanks @Aethanjf - I'll try that on my next build if I get the same issue with error in prepare

Aethanjf commented on 2021-03-07 22:12 (UTC)

@dmshimself This error is because there is src in you folder, if you remove this before compiling it won't error.

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

@dmshimself as you post, your myconfig is executing this:

scripts/config --enable CONFIG_SATA_AHCI

so the final .config should have it. I'm not an expert, but in my case I have CONFIG_SATA_AHCI as module, maybe this is the issue here, and you need to put in your myconfig scripts/config --module CONFIG_SATA_AHCI

dmshimself commented on 2021-03-07 20:45 (UTC)

It must be me then :-) In order to simpify, I've deleted the old directory as suggested (many thanks), done a fresh git clone and then moved a myconfig file into the folder. I need to have SATA_AHCI enabled.

I've then run:

env _microarchitecture=30 use_numa=n use_tracers=n use_ns=y _localmodcfg=y makepkg -sri

It's building now. I note that the first part shows the following if it's of any interest .....

patching file tools/testing/selftests/seccomp/seccomp_bpf.c patching file tools/testing/selftests/wireguard/netns.sh patching file virt/kvm/kvm_main.c -> Setting version... -> Applying patch sphinx-workaround.patch... patching file Documentation/conf.py -> Disabling FUNCTION_TRACER/GRAPH_TRACER... -> Disabling NUMA... ==> Detected CPU architecture: silvermont

I then see ....

==> Building this package for microarchitecture: CONFIG_MSILVERMONT

-> Applying myconfig... + scripts/config --enable CONFIG_SATA_AHCI

HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o

and it's off and running. As this is a clean build, I expect it to work. Perhaps when the next version of this kernel is issued, I'll revisit and report back.

figue commented on 2021-03-07 19:54 (UTC)

@dmshimself seems you are patching tools/testing/selftests/wireguard/netns.sh but I don't merge any patch right now. Are you sure you are compiling linux-xanmod package? Why don't you erase the entire local repo and download it again? This package is working fine.

dmshimself commented on 2021-03-07 19:41 (UTC)

Advice on building

For a while now I've failed to get a makepkg to work with the following:

env XDG_CONFIG_HOME=/mnt/data/AUR/linux-xanmod _microarchitecture=30 use_numa=n use_tracers=n use_ns=y _localmodcfg=y makepkg -sri

I get an error after the patches are applied:

patching file tools/testing/selftests/wireguard/netns.sh patching file virt/kvm/kvm_main.c ==> ERROR: A failure occurred in prepare(). Aborting...

I've tried many combinations of flags to makepkg, but the only one I've found tht works is to do a clean build with a makepkg -C

Now there sn't anything wrong with that, but it takes a long time on my machine to do the build from scratch and I wondered if there might be a way to avoid this failure in prepare?

figue commented on 2021-03-03 07:35 (UTC)

@simona linux-xanmod-anbox is not maintained by me. Please, leave a comment in its web.

simona commented on 2021-03-03 00:14 (UTC)

linux-xanmod-anbox is more slow? someone can explain me why '-anbox' is not the standard default config for kernel?

figue commented on 2021-03-02 23:24 (UTC)

@xuanruiqi solved in 3de884c332a5

xuanruiqi commented on 2021-03-02 19:54 (UTC)

FWIW, my config is also quite small.

xuanrui@xuanrui-desktop:~ % zgrep '=y' /proc/config.gz| wc -l
1682
xuanrui@xuanrui-desktop:~ % zgrep '=m' /proc/config.gz| wc -l
303

My vmlinuz is smaller than the Arch default one as well, but still:

xuanrui@xuanrui-desktop:~ % du -sh /usr/lib/modules/*                           
805M    /usr/lib/modules/5.11.1-xanmod2-cacule-2-cacule
272M    /usr/lib/modules/5.11.2-arch1-1

Again this is all due to build/vmlinux. Could you do du -sh /usr/lib/modules/* as well?

I don't think this is a bug or problem, but I'd be interested to know why. I also opened an issue on GitHub and hope the maintainers have some insight.