The following is the striaght-to-the point of steps needed in order to manually build the upstream linux kernel. I used them several times with success.
cd /dir/to/linux-src-root
Go to linux source root directory
cp /boot/config-$(uname -r) .config
Copy current config file to start off in menuconfig later
make menuconfig
If don’t care about newer configurations, or don’t want to hand-tune the configurations, then just hit Save
follows by Exit
. This is to make sure we get all the configurations available in new kernel version, and to avoid unknown configurations.
make -j$(nproc)
Or change $(nproc)
to the specific number of threads to be used in compiling and building the kernel.
sudo make modules_install
or
sudo make INSTALL_MOD_STRIP=1 modules_install
Use the former to not strip out debugging info from all modules, otherwise use the latter. Most of the time, use the latter. If not then your initrd
image or init-ramdisk which will be loaded first after grub will be too big and grub won’t be able to load and boot the linux itself. Size can be bigger like 10 times from stripped size of ~70 MB.
sudo make install
Install the linux kernel. It will also rebuild kernel modules located in /usr/src
against this new linux kernel version again automatically, then output result accordingly.
sudo update-initramfs -c -k <version-string>
Create a new initrd
image file in /boot
for our newly built, and installed linux kernel version. <version-string>
can be grabbed and easily seen while we do step 6.
sudo update-grub
Update grub’s entries so we will update the default entry to boot into, as well as update its entries in case we want to specifically select which linux kernel version to boot into from the grub menu.
reboot
We can now reboot the system, and it will automatically boot into our new linux kernel version we just built and installed with all steps above. We then can check the version after booting with uname -r
.
First published on October, 15, 2021
Written by Wasin Thonkaew
In case of reprinting, comments, suggestions
or to do anything with the article in which you are unsure of, please
write e-mail to wasin[add]wasin[dot]io
Copyright © 2019-2021 Wasin Thonkaew. All Rights Reserved.