Linux kernel arch x86

Kernel

According to Wikipedia:

The Linux kernel is an open-source monolithic Unix-like computer operating system kernel.

Arch Linux is based on the Linux kernel. There are various alternative Linux kernels available for Arch Linux in addition to the latest stable kernel. This article lists some of the options available in the repositories with a brief description of each. There is also a description of patches that can be applied to the system’s kernel. The article ends with an overview of custom kernel compilation with links to various methods.

Kernel packages are installed onto the file system under /boot/ . To be able to boot into kernels, the boot loader has to be configured appropriately.

Contents

Officially supported kernels

Community support on forum and bug reporting is available for officially supported kernels.

  • Stable — Vanilla Linux kernel and modules, with a few patches applied.

https://www.kernel.org/ || linux

  • Hardened — A security-focused Linux kernel applying a set of hardening patches to mitigate kernel and userspace exploits. It also enables more upstream kernel hardening features than linux .

https://github.com/anthraxx/linux-hardened || linux-hardened

  • Longterm — Long-term support (LTS) Linux kernel and modules.

https://www.kernel.org/ || linux-lts

  • Zen Kernel — Result of a collaborative effort of kernel hackers to provide the best Linux kernel possible for everyday systems. Some more details can be found on https://liquorix.net (which provides kernel binaries based on Zen for Debian).

https://github.com/zen-kernel/zen-kernel || linux-zen

Compilation

Following methods can be used to compile your own kernel:

/Arch Build System Takes advantage of the high quality of existing linux PKGBUILD and the benefits of package management. /Traditional compilation Involves manually downloading a source tarball, and compiling in your home directory as a normal user.

Some of the listed packages may also be available as binary packages via Unofficial user repositories.

kernel.org kernels

  • Git — Linux kernel and modules built using sources from Linus Torvalds’ Git repository

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git || linux-gitAUR

  • Mainline — Kernels where all new features are introduced, released every 2-3 months.

https://www.kernel.org/ || linux-mainlineAUR

  • Next — Bleeding edge kernels with features pending to be merged into next mainline release.

https://www.kernel.org/doc/man-pages/linux-next.html || linux-next-gitAUR

  • Longterm 4.4 — Long-term support (LTS) Linux 4.4 kernel and modules.

https://www.kernel.org/ || linux-lts44AUR

  • Longterm 4.9 — Long-term support (LTS) Linux 4.9 kernel and modules.

https://www.kernel.org/ || linux-lts49AUR

  • Longterm 4.14 — Long-term support (LTS) Linux 4.14 kernel and modules.

https://www.kernel.org/ || linux-lts414AUR

  • Longterm 4.19 — Long-term support (LTS) Linux 4.19 kernel and modules.

https://www.kernel.org/ || linux-lts419AUR

  • Longterm 5.4 — Long-term support (LTS) Linux 5.4 kernel and modules.

https://www.kernel.org/ || linux-lts54AUR

Unofficial kernels

  • Aufs — The aufs-compatible linux kernel and modules, useful when using docker.

http://aufs.sourceforge.net/ || linux-aufsAUR

  • Ck — Contains patches by Con Kolivas (including the MuQSS scheduler) designed to improve system responsiveness with specific emphasis on the desktop, but they are suitable to any workload.
Читайте также:  Acer aspire m1470 драйвера для windows 10

http://ck.kolivas.org/ || linux-ckAUR

  • Clear — Patches from Intel’s Clear Linux project. Provides performance and security optimizations.

https://github.com/clearlinux-pkgs/linux || linux-clearAUR

  • GalliumOS — The Linux kernel and modules with GalliumOS patches for Chromebooks.

https://github.com/GalliumOS/linux || linux-galliumosAUR

  • Libre — Without propietary or obfuscated device drivers.

https://www.fsfla.org/ikiwiki/selibre/linux-libre/ || linux-libreAUR

  • Liquorix — Kernel replacement built using Debian-targeted configuration and the Zen kernel sources. Designed for desktop, multimedia, and gaming workloads, it is often used as a Debian Linux performance replacement kernel. Damentz, the maintainer of the Liquorix patchset, is a developer for the Zen patchset as well.

https://liquorix.net || linux-lqxAUR

  • MultiPath TCP — The Linux Kernel and modules with Multipath TCP support.

https://multipath-tcp.org/ || linux-mptcpAUR

  • pf-kernel — Provides a handful of awesome features which are not merged into a kernel mainline. Maintained by a kernel engineer. If the port for the included patch for new kernels was not released officially, the patchset provides and supports patch ports to new kernels. The current most prominent patches of linux-pf are PDS CPU scheduler and UKSM.

https://gitlab.com/post-factum/pf-kernel/wikis/README || Packages:

  • Repository by pf-kernel developer post-factum
  • Repository, linux-pfAUR , linux-pf-preset-defaultAUR by pf-kernel fork developer Thaodan
  • linux-pf-gitAUR by yurikoles
  • Realtime kernel — Maintained by a small group of core developers led by Ingo Molnar. This patch allows nearly all of the kernel to be preempted, with the exception of a few very small regions of code («raw_spinlock critical regions»). This is done by replacing most kernel spinlocks with mutexes that support priority inheritance, as well as moving all interrupt and software interrupts to kernel threads.

https://wiki.linuxfoundation.org/realtime/start || linux-rtAUR , linux-rt-ltsAUR

  • tkg — A highly customizable kernel build system that provides a selection of patches and tweaks aiming for better desktop and gaming performance. It is maintained by Etienne Juvigny. Amongst other patches, it offers various CPU schedulers: CFS, Project C PDS, Project C BMQ, MuQSS and CacULE.

https://github.com/Frogging-Family/linux-tkg || not packaged? search in AUR

  • VFIO — The Linux kernel and a few patches written by Alex Williamson (acs override and i915) to enable the ability to do PCI Passthrough with KVM on some machines.

https://lwn.net/Articles/499240/ || linux-vfioAUR , linux-vfio-ltsAUR

  • XanMod — Aiming to take full advantage in high-performance workstations, gaming desktops, media centers and others and built to provide a more rock-solid, responsive and smooth desktop experience. This kernel uses the MuQSS or CacULE scheduler, BFQ I/O scheduler, UKSM realtime memory data deduplication, TCP BBR congestion control, x86_64 advanced instruction set support, and other default changes.

https://xanmod.org/ || linux-xanmodAUR , linux-xanmod-caculeAUR

Debugging regressions

Try linux-mainline AUR to check if the issue is already fixed upstream. The stickied comment also mentions a repository which contains already built kernels, so it may not be necessary to build it manually, which can take some time.

It may also be worth considering trying the LTS kernel ( linux-lts ) to debug issues which did not appear recently. Older versions of the LTS kernel can be found in the Arch Linux Archive.

If the issue still persists, bisect linux-git AUR and report the bug on the kernel bugzilla. It is important to try the «vanilla» version without any patches to make sure it is not related to them. If a patch causes the issue, report it to the author of the patch.

Читайте также:  Photos windows 10 расположение

Источник

Arch Linux

linux 5.14.10.arch1-1

Package Actions

  • Source Files / View Changes
  • Bug Reports / Add New Bug
  • Search Wiki / Manual Pages
  • Security Issues
  • Flagged out-of-date on 2021-10-10
  • Version 5.14.11.arch1-1 in testing
  • Download From Mirror

Versions Elsewhere

Architecture: x86_64
Repository: Core
Split Packages: linux-docs, linux-headers
Description: The Linux kernel and modules
Upstream URL: https://github.com/archlinux/linux/commits/v5.14.10-arch1
License(s): GPL2
Provides: VIRTUALBOX-GUEST-MODULES, WIREGUARD-MODULE
Replaces: virtualbox-guest-modules-arch, wireguard-arch
Maintainers: Tobias Powalowski
Jan Alexander Steffens
David Runge
Package Size: 126.2 MB
Installed Size: 131.2 MB
Last Packager: Jan Alexander Steffens
Build Date: 2021-10-07 20:00 UTC
Signed By: Jan Alexander Steffens
Signature Date: 2021-10-07 20:33 UTC
Last Updated: 2021-10-10 00:01 UTC

Dependencies (19)

  • coreutils
  • initramfs (mkinitcpio, dracut, booster, booster)
  • kmod
  • crda (optional) — to set the correct wireless channels of your country
  • linux-firmware (optional) — firmware images needed for some devices
  • bc (make)
  • cpio (make)
  • git (make)
  • graphviz (make)
  • imagemagick (make)
  • kmod (make)
  • libelf (make)
  • pahole (make)
  • perl (make)
  • python-sphinx (make)
  • python-sphinx_rtd_theme (make)
  • tar (make)
  • xmlto (make)
  • xz (make)

Required By (17)

  • acpi_call
  • archboot
  • bbswitch
  • broadcom-wl
  • deepin-anything-arch
  • netfilter-fullconenat
  • nvidia
  • r8168
  • tp_smapi
  • vhba-module
  • virtualbox-guest-utils (requires VIRTUALBOX-GUEST-MODULES)
  • virtualbox-guest-utils-nox (requires VIRTUALBOX-GUEST-MODULES)
  • virtualbox-host-modules-arch
  • base (optional)
  • libratbag (optional)
  • archboot-linux-firmware (make)
  • libguestfs (check)

Package Contents

The Arch Linux name and logo are recognized trademarks. Some rights reserved.

The registered trademark Linux® is used pursuant to a sublicense from LMI, the exclusive licensee of Linus Torvalds, owner of the mark on a world-wide basis.

Источник

Kernel/Arch Build System

See Kernels for the main article.

The Arch Build System can be used to build a custom kernel based on the official linux package. This compilation method can automate the entire process, and is based on a very well tested package. You can edit the PKGBUILD to use a custom kernel configuration or add additional patches.

Contents

Getting the ingredients

Since you will be using makepkg, follow the best practices outlined there first. For example, you cannot run makepkg as root/sudo. Therefore, create a build directory in your user home first.

Install the asp package and the base-devel package group.

You need a clean kernel to start your customization from. Retrieve PKGBUILD source using Git and few other files into your build directory by running:

At this point, the directory tree looks like (there may be a few other files):

Then, get any other file you need (e.g. custom configuration files, patches, etc.) from the respective sources.

Modifying the PKGBUILD

Edit PKGBUILD and look for the pkgbase parameter. Change this to your custom package name, e.g.:

Avoid creating the doc

A large portion of the lengthy compiling effort is devoted to creating the documentation. As of June 16. 2021, the following patch to PKGBUILD avoids its creation:

This patch deletes line #63, and changes line #194. You might have to edit the PKGBUILD file manually if it does not apply cleanly.

Changing prepare()

In prepare() function, you can apply needed kernel patches or change kernel build configuration.

If you need to change a few config options you can edit config file in the source.

Or you can use a GUI tool to tweak the options. Comment make olddefconfig in the prepare() function of the PKGBUILD, and add your favorite tool:

Читайте также:  Как включить мое местоположение windows 10

Generate new checksums

#Changing prepare() suggests a possible modification to $_srcname/.config . Since this path is not where downloading the package files ended, its checksum was not checked by makepkg (which actually checked $_srcname/../../config ).

If you replaced the downloaded config with another config file before running makepkg, install the pacman-contrib package and generate new checksums by running:

Compiling

You can now proceed to compile your kernel by the usual command makepkg .

If you have chosen an interactive program for configuring the kernel parameters (like menuconfig), you need to be there during the compilation.

The -s parameter will download any additional dependencies used by recent kernels such as xml and docs.

Installing

The compile step will leave two packages in the

/build/linux folder, one for the kernel and one for the kernel headers. They might have names like:

Best practice is to install both packages together as they might be both needed (e.g. DKMS):

(substitute the actual names of the files you have in the folder)

Boot loader

If you have modified pkgbase in order to have your new kernel installed alongside the default kernel you will need to update your bootloader configuration file and add new entries (‘default’ and ‘fallback’) for your custom kernel and the associated initramfs images.

Updating

Assuming one has an arch kernel source that they want to update, one method to do that is with https://github.com/archlinux/linux. In what follows, the top kernel source directory is assumed at

In general, arch sets an arch kernel source with two local git repositories. The one at archlinux-linux/ is a local bare git repository pointing to https://github.com/archlinux/linux.git . The other one is at src/archlinux-linux/ , pulling from the bare repository. Possible local patches, and building, are expected at src/archlinux-linux/ .

For this example, the HEAD of the locally installed bare git repository source at archlinux-linux/ was initially pointing to

which is somewhere between v5.2.5-arch1 and v5.2.6-arch1.

One can see it fetched v5.2.7-arch1, which was the newest archlinux tag, because it prints what new tags were obtained. If no new tags were obtained then there is no newer archlinux source available.

Now the source can be updated where the actual build will take place.

You can verify you are on track with something like

This shows few specific archlinux patches between Arch Linux kernel v5.2.7-arch1 and Linux 5.2.7 .

The up to date PKGBUILD, as well archlinux kernel configuration file, can be pulled in by the asp command:

Now you should merge files located in

/build/linux/ . Merging can also done manually, or with specific utilities. Review #Changing prepare(), and run manually most, if not all, the shell commands of PKGBUILD::prepare().

At this point, makepkg —verifysource should succeed. While #Compiling, make sure to also add —noextract option to the makepkg command, since it should be able to build the packages as if the source was extracted by makepkg —nobuild . And you are back to #Installing.

Cleanup

One will probably want to remove

/build/linux/linux/ after merging. In addition,

/build/linux/src/archlinux will accumulate branches in the form of 5.2.7-arch1 if more recent updates are done in this fashion. These can be deleted with

Источник

Оцените статью