PVE linux kernel for ThunderX CPU
Find a file
Fabian Mastenbroek 72a250dedc
Improve build process
This pull request attempts to improve the build process of the project.
These changes include:

1. Obtain kernel sources from kernel.org as opposed to the Ubuntu Mainline
   repository. The repository from kernel.org is much faster.
2. Build directly in-tree to reduce the amount of copies made
   (and in turn reduce the amount of IO)
3. Disable debug info from the kernel (since it is stripped afterwards and we
   do not provide debug symbols).
4. Build ZFS directly from upstream so that we are not tied to Proxmox's
   release scheme.
5. Derive version from kernel sources and changelog directly
6. Remove custom build profiles to reduce maintaining effort.
2021-04-19 14:47:18 +02:00
.github/workflows Do not build custom build profiles anymore 2021-04-19 14:47:02 +02:00
debian Support in-tree builds 2021-04-19 14:47:00 +02:00
linux@f40ddce885 Use Git bundle from Ubuntu Mainline for better performance 2021-03-28 20:47:19 +02:00
scripts Use Git bundle from Ubuntu Mainline for better performance 2021-03-28 20:47:19 +02:00
zfs@6150fbe67f Build ZFS directly from upstream 2021-04-18 13:34:08 +02:00
.gitignore Ignore build artifacts 2020-09-17 17:11:23 +02:00
.gitmodules Build ZFS directly from upstream 2021-04-18 13:34:08 +02:00
crack.bundle Use Git bundle from Ubuntu Mainline for better performance 2021-03-28 20:47:19 +02:00
README.md Do not build custom build profiles anymore 2021-04-19 14:47:02 +02:00

Proxmox Edge kernels

Custom Linux kernels for Promox VE 6.

Versions

  1. Linux 5.11 (Stable)
  2. Linux 5.10 (Long-term)

Flavors

  1. Proxmox
  2. Navi Reset

Installation

Select from the Releases page the kernel version you want to install and download the appropriate Debian package. Then, you can install the package as follows:

apt install ./pve-kernel-VERSION-MARCH_VERSION_amd64.deb

AppArmor issues

When using these kernels, Proxmox's AppArmor profiles may fail to load since it uses an older AppArmor feature set which is not supported by these kernels anymore. This issue also appears when launching LXC containers. To fix this, tell AppArmor to use the stock features file as opposed to Proxmox's features file, which is done by updating /etc/apparmor/parser.conf as follows:

## Pin feature set (avoid regressions when policy is lagging behind
## the kernel)
# lxc-pve diverts to old feature file that is incompatible with kernel
# features-file=/usr/share/apparmor-features/features
features-file=/usr/share/apparmor-features/features.stock

Building manually

You may also choose to manually build one of these kernels yourself.

Prerequisites

Make sure you have at least 10GB of free space available and have the following packages installed:

apt install devscripts debuild equivs

In case you are building a kernel version >= 5.8, make sure you have installed at least dwarves >= 1.16.0. Unfortunately, this version is currently only available in the Debian Testing and Debian Unstable repositories. To work around this issue, we describe two options:

  1. You may add the Debian Testing repository to your APT sources as described here and install the newer dwarves package as follows:
    apt install -t testing dwarves
    
  2. Alternatively, you may download the newer dwarves (>= 1.16) package from the Debian website and install the package manually, for example:
    wget http://ftp.us.debian.org/debian/pool/main/d/dwarves-dfsg/dwarves_1.17-1_amd64.deb
    apt install ./dwarves_1.17-1_amd64.deb
    

Obtaining the source

Obtain the source code as follows:

git clone https://github.com/fabianishere/pve-edge-kernel
cd pve-edge-kernel

Then, select the branch of your likings (e.g. v5.10.x) and update the submodules:

git checkout v5.10.x
git submodule update --init --depth=1 --recursive linux
git submodule update --init --recursive

Building

First, create the control file for your kernel:

debian/rules debian/control

Before we build, make sure you have installed the build dependencies:

sudo mk-build-deps --install debian/control

Invoking the following command will build the kernel and its associated packages:

debuild --jobs=auto -ePVE* -b -uc -us

The Makefile provides several environmental variables to control:

  1. PVE_BUILD_FLAVOR
    The name of the kernel flavor which represents a selection of kernel functionality (e.g. hardened or zen). This name is part of the kernel version and package name, which means that you can have multiple flavors of the same kernel installed alongside each other. Note that the name itself does not control the selection of kernel functionality.
  2. PVE_BUILD_PROFILE (default generic)
    The name of the kernel build type which represents the compilation options of the kernel (e.g. optimization level or micro architecture). This name is appended as suffix to the Debian package version in case it is not the default value.
  3. PVE_KERNEL_CC
    The compiler to use for the kernel build.
  4. PVE_KERNEL_CFLAGS
    The compilation options to use for the kernel build. Use this variable to specify the optimization level or micro architecture to build for.

Kernel options may be controlled from debian/config/config.pve. To build with additional patches, you may add them to the debian/patches/pve directory and update the series file accordingly.

Contributing

Questions, suggestions and contributions are welcome and appreciated! You can contribute in various meaningful ways:

  • Report a bug through Github issues.
  • Propose new patches and flavors for the project.
  • Contribute improvements to the documentation.
  • Provide feedback about how we can improve the project.