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

figue commented on 2021-02-27 09:05 (UTC)

@xuanruiqi probably is an addition of some optimizations and some additional options enabled in XanMod that are not in Arch. Also XanMod bzImage is compressed with lz4 and Arch with zstd. In my case I compile XanMod with modprobed-db and the result is less than Arch:

figue on pluto /tmp ➜  ls -lh vmlinuz-linux.uncompressed vmlinuz-linux-xanmod.uncompressed
-rw-r--r-- 1 figue users 45M feb 27 09:54 vmlinuz-linux-xanmod.uncompressed
-rw-r--r-- 1 figue users 49M feb 27 09:55 vmlinuz-linux.uncompressed

Of course, my configs and modules enabled are less than Arch:

figue on pluto /tmp ✗  zgrep '=y' /proc/config.gz | wc -l
1941
figue on pluto /tmp ➜  zgrep '=m' /proc/config.gz | wc -l
242
figue on pluto /tmp ➜  grep '=y' arch.config | wc -l
2522
figue on pluto /tmp ➜  grep '=m' arch.config | wc -l 
5167

If we compare it with XanMod's default config:

figue on pluto /tmp ➜  grep '=y' xanmod.config | wc -l 
2637
figue on pluto /tmp ➜  grep '=m' xanmod.config | wc -l 
5618

Cheers

xuanruiqi commented on 2021-02-26 10:20 (UTC) (edited on 2021-02-26 10:21 (UTC) by xuanruiqi)

Xanmod kernel is very large for me as well. It's not a problem, but I'm curious why:

$ du -sh /usr/lib/modules/5.11.1-arch1-1 
272M    /usr/lib/modules/5.11.1-arch1-1

$ du -sh /usr/lib/modules/5.11.1-xanmod2-cacule-2-cacule 
805M    /usr/lib/modules/5.11.1-xanmod2-cacule-2-cacule

It seems that build/vmlinux (the uncompressed kernel image) is the one guilty. (I'm on the cacule branch but same follows for the main branch)

At first I thought it was related to using -O3 because it performs function inlining, but -O2 didn't make it any better either. I was wondering if some XanMod patch causes this.

cartesius commented on 2021-02-23 16:17 (UTC)

@vpont same here... ~181 modules modprobed and size ~13 M. It's OK.

9,0M vmlinuz-linux
8,9M vmlinuz-linux-lts
 13M vmlinuz-linux-xanmod-lts
9,5M vmlinuz-linux-zen

figue commented on 2021-02-08 17:52 (UTC)

@vpont I think it's because XanMod config includes less modules than arch's config.

vpont commented on 2021-02-08 16:59 (UTC) (edited on 2021-02-08 17:00 (UTC) by vpont)

How's it possible that, even with modprobed' compiled kernel, the final xanmod kernel is bigger than the generic one?

9,0M   /boot/vmlinuz-linux
6,2M   /boot/vmlinuz-linux-lts
13M    /boot/vmlinuz-linux-xanmod

figue commented on 2021-02-06 16:07 (UTC)

@sahilbest999 please follow the official wiki page to configure modprobed-db:

https://wiki.archlinux.org/index.php/Modprobed-db

Probably your database is not generated properly.

frostwork commented on 2021-02-06 11:51 (UTC)

@sahilbest999 Probably not a xanmod problem as well. Have you checked if the new initramfs was properly created when you installed the new kernel?

sahilbest999 commented on 2021-02-06 11:08 (UTC)

@frostwork yea, sry didn't read documentation properly

But I've ran into another issue, I've built it and also installed it, so when I try to boot it shows me a error saying -

mount: /new_root: can't find UUID=<SOME UUID CODE> You are now being dropped into an emergency shell. sh: can't access tty;job control turned off

And thank you for quick reply

frostwork commented on 2021-02-06 09:07 (UTC)

@sahilbest999 It is an optional package which you need to setup first: https://wiki.archlinux.org/index.php/Modprobed-db