this sounds very involved initially but hands off after the fact.
Script
#!/bin/bash
cd ~/ || exit
LATEST_KERNEL=$(curl -s https://www.kernel.org | grep -Po 'linux-\d+\.\d+\.\d+\.tar\.xz' | head -1)
echo "Latest Kernel: $LATEST_KERNEL"
KERNEL_URL="https://cdn.kernel.org/pub/linux/kernel/v6.x/$LATEST_KERNEL"
echo "Kernel URL: $KERNEL_URL"
DIR_NAME=$(echo $LATEST_KERNEL | sed 's/\.tar\.xz//')
mkdir -p ./$DIR_NAME
wget -O ./$DIR_NAME/$LATEST_KERNEL "$KERNEL_URL" || exit
tar -xf ./$DIR_NAME/$LATEST_KERNEL -C ./$DIR_NAME || exit
EXTRACTED_DIR=$(tar -tf ./$DIR_NAME/$LATEST_KERNEL | head -1 | cut -f1 -d"/")
cd ./$DIR_NAME/$EXTRACTED_DIR || exit
zcat /proc/config.gz > .config
echo "Kernel config copied."
if [ -f "drivers/gpu/drm/amd/display/dc/link/link_dpms.c" ] && [ -f "drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c" ]; then
echo "Files found, proceeding with modifications..."
sed -i 's/#define LINK_TRAINING_RETRY_DELAY 50 \/\* ms \*\//#include <linux\/module.h>\nstatic int link_training_retry_delay = 50;\nmodule_param(link_training_retry_delay, int, 0644);\nMODULE_PARM_DESC(link_training_retry_delay, "Delay between link training retries (ms)");\n#define LINK_TRAINING_RETRY_DELAY link_training_retry_delay/' drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c
sed -i 's/#define LINK_TRAINING_ATTEMPTS 4/#include <linux\/module.h>\nstatic int link_training_attempts = 4;\nmodule_param(link_training_attempts, int, 0644);\nMODULE_PARM_DESC(link_training_attempts, "Number of link training attempts");\n#define LINK_TRAINING_ATTEMPTS link_training_attempts/' drivers/gpu/drm/amd/display/dc/link/link_dpms.c
else
echo "One or both files not found in the kernel source directory."
fi
echo "Kernel modifications complete."
make olddefconfig || exit
#make || exit
echo "Compiling the kernel..."
make -j16 || exit
echo "Building modules..."
sudo make modules_install || exit
echo "Installing the kernel..."
sudo make install || exit
echo "Backing up existing kernel files..."
sudo cp /boot/vmlinuz-linux /boot/vmlinuz-linux.bak
sudo cp /boot/initramfs-linux.img /boot/initramfs-linux.img.bak
echo "Moving new kernel files to /boot..."
sudo cp ./arch/x86/boot/bzImage /boot/vmlinuz-fix
sudo mkinitcpio -k $(make kernelrelease) -c /etc/mkinitcpio.conf -g /boot/initramfs-fix.img
if [ -f /boot/vmlinuz-fix ] && [ -f /boot/initramfs-fix.img ]; then
echo "Kernel and initramfs moved to /boot successfully."
else
echo "Failed to move kernel or initramfs files to /boot."
exit 1
fi
echo "Kernel compilation, installation, and file replacement completed successfully."
Dot files on github, an HHD for storing photos, downloads, documents as well as my not in use games. I also sync keepass files across all network devices.