See https://osp4diss.vlsm.org/osp-103.html for more details.
Fetch the latest STABLE kernel from https://kernel.org/.
# START =============================================================
STABLE=$(wget -O - -o /dev/null https://www.kernel.org/finger_banner | awk '/stable/ {print $NF; exit}')
MAJOR=$(echo $STABLE | cut -d. -f1)
URL="https://kernel.org/pub/linux/kernel/v$MAJOR.x"
KERNEL="linux-$STABLE.tar.xz"
TARBALL="linux-$STABLE.tar"
PGP="linux-$STABLE.tar.sign"
KURL="$URL/$KERNEL"
PURL="$URL/$PGP"
# ===================================================================
# Wget the latest kernel stable version
wget -c $KURL
# ===================================================================
# Wget the signature
wget -c $PURL
# ===================================================================
# Locate Keys
gpg --locate-keys torvalds@kernel.org gregkh@kernel.org
Sign Key (optional)
gpg --sign-key gregkh@kernel.org
Uncompress the file and verify
# ===================================================================
# Uncompress
unxz $KERNEL
# Verify
gpg --verify $PGP $TARBALL
Extract TAR file
# ===================================================================
tar xvf $TARBALL
# ===================================================================
cd linux-$STABLE
Overkilled/Bad Cleaning Habit
make distclean
make mrproper
make clean
Creating a SIMPLE SMALL “.config” file
make x86_64_defconfig
Menuconfig
make menuconfig
Menuconfig (e.g., for cbkadal)
General setup --->
(-cbkadal-10) Local version - append to kernel release
Kernel compression mode (XZ) --->
(cbkadal) Default hostname
<*> Kernel .config support
[*] Enable access to .config through /proc/config.gz
<*> Enable kernel headers through /sys/kernel/kheaders.tar.xz
Processor type and features --->
[ ] EFI runtime service support
File systems --->
<*> FUSE (Filesystem in Userspace) support
<*> Character device in Userspace support
<*> Virtio Filesystem
Security options --->
[ ] NSA SELinux Support
[*] AppArmor support
[*] Enable introspection of sha1 hashes for loaded profiles
[*] Enable policy hash introspection by default
First legacy 'major LSM' to be initialized
(X) AppArmor
Kernel hacking --->
Compile-time checks and compiler options --->
[*] Install uapi headers to usr/include
Compile (make)
time make
Install (root)
# USER: ROOT ============
make modules_install
make install
make headers_install INSTALL_HDR_PATH=/usr
Known Boot Errors
ata1.00: Read log 0x00 page 0x00 failed, Emask 0x1