Default
How to compile Linux Kernel on Debian VirtualBox Guest (AMD64 and ARM64)
C. BinKadal --- Sendirian, Berhad


Debian Packages


Download Latest STABLE Kernel

# 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

Once in a while, some Bozo will ask about why not “make distclean,” or “make mrproper,” or “make clean.” Ok, this is the way!

make distclean; make mrproper; make clean;





AMD64 Option 1: Reusing “.config” files

yes "" | make oldconfig


ARM64 Option 1: Reusing “.config” files

yes "" | make oldconfig


AMD64 OPTION 2: A “.config” file from scratch

make x86_64_defconfig


ARM64 OPTION 2: A “.config” file from scratch

cp arch/arm64/configs/defconfig
yes "" | make oldconfig





make 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 
Device Drivers --->
  Firmware Drivers --->
    [*] Disable EFI runtime services support by default 
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

# 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


Linux Firmware

cp -r i915/ /lib/firmware/
cp -r tigon/ /lib/firmware/
cp -r e100/ /lib/firmware/
cp -r rtl_nic/ /lib/firmware/


Old Modules

cd /lib/modules/
ls -al
cd /boot/
ls -al


Table of Content



© 2021-2022 --- C. BinKadal --- About --- Revision: 0060a--03-Nov-2022.