How to safely compile kernel myself install and use it

Hi i I am Rupesh from India and I have brought a new system with AMD Ryzen zen3 5500GT and Asus prime b450 motherboard. I installed Linux Operating System five months back updating, and using it without any problem. I thought to compile kernel source code optimized for my hardware and succeeded but I have some doubts.

I want to compile kernel source code to remove unnecessary blotware in the kernel and to improve performance.

I have read a number of tutorials and tried or experimented to compile kernel and learnt a number of lessons.

I tried to compile kernel according to what I learnt but still there may be any mistakes. As you are experts can you try to examine the steps I followed and give suggestions.

The main steps I followed are as follows

  1. Downloaded and installed kernel source code package.

  2. Extracted the source code to my home directory.

  3. Changed the ownership of the extracted directory recursively through the following command.

chown -R $USER:$USER linux
  1. Entered the source directory and issued the following command to clean any existing configuration.
make mrproper
  1. I entered the following lines to my bash profile so that I need not enter again and again in terminal emulator.
export KCPFLAGS=" -march=znver3 -O2 pipe"
export KCLAGS=" -march=znver3 -O2 pipe"
export CFLAGS=" -march=znver3 -O2 pipe"
export CPFLAGS=" -march=znver3 -O2 pipe"
  1. After that I have created a configuration file which consists of only the modules loaded by old kernel through the following command.
make localmodconfig
  1. After that I entered the following command.
make xconfig
  1. In this gui configuration I done the following changes.
    *I selected amdgpu option to compile as module.
    *I have added the string Rupesh to LocalVersion
    *I have selected append Local_Version to version to yes
    *I have disabled support for other processors like intel etc except AMD.
    *I have saved and exited the configuration.

  2. After that I issued the following command to make the kernel and modules.

make bzImage modules 
  1. After that I issued the following command to install modules
make modules_install 
  1. After that I have tried to install kernel to /boot through the following command.
make install.
  1. After that I have updated my grub configuration through the following command.
grub-mkconfig -o /boot/grub/grub.cfg
  1. After that I have installed the grub boot loader through the following command.
grub install /dev/nvmen101

I think that there is nothing better than "make localmodconfig" to create configuration file.

Previously I tried to compile mainline kernel which is downloaded from kernel.org but I thought distribution kernel source code is more efficient so I tried to compile distribution kernel.

Finally I am asking is it safe to compile kernel myself or it is recommended to use default kernel provided by distribution.

Kindly try to clarify my doubts.

Regards,
Rupesh.

It is recommended to use default kernel with your distribution.

Compiling your own kernel is not worth the hassle, and will yield small performance gain, unless tuned heavily.

Most of distros such as arch, ubuntu and even new debian are running 6.x kernels which should suffice, and even in case you need bleeding edge, there are repositories which offer newer ones using package manager.

Hope that helps.
Regards
Peasant.

Is there any configuration related to the following in kernel.

OpenCL
OpenGL
VAAPI
Vulkan

I want to pass my CPU type which is znver3 to the c compiler, c++ compiler, rust compiler etc., and I want to use GCC as the default compiler instead of llvm.

How to pass znver3 to kernel build process.

I found a number of variables which are as follows

  1. KCPPFLAGS
  2. KCFLAGS
  3. CPFLAGS
  4. HOSTCFLAGS
  5. HOSTCXXFLAGS
  6. USERCFLAGS

MY intention is I want to use GCC as default and pass "znver3 -O2 pipe" to all compilers and every time I mean it may be while compiling kernel or other software like ffmpeg.

Is there any single export command to do this.