linux-tkg/linux58-tkg/install.sh
iWeaker4you cdbf5273ad
Fix certificate issue on Debian (#55)
* Fix certificate issue on Debian 

I only applied it in version 5.8 so that first you can see if it applies to all, or if my solution is viable.

The problem is that every time it does the verification, it downloads the original configuration from github and does not maintain its own manual configuration that solves the certificate problem in Debian, it does not finish compiling for that reason.

And when you give Install.sh the CONFIG_SYSTEM_TRUSTED_KEYS = "debian / certs / test-signing-certs.pem" is reset, regardless of whether you edited it.

* Solution to certificate problem in Debian [Fixed]

* Add Debian only support

* Add Debian custom support

* Oop! OR Conditional

* Replace AND for OR Condition

* OR ......

* Regression with OR..
2020-08-27 13:44:41 +02:00

209 lines
6.5 KiB
Bash
Executable File

#!/bin/bash
msg2() {
echo -e " \033[1;34m->\033[1;0m \033[1;1m$1\033[1;0m" >&2
}
error() {
echo -e " \033[1;31m==> ERROR: $1\033[1;0m" >&2
}
warning() {
echo -e " \033[1;33m==> WARNING: $1\033[1;0m" >&2
}
plain() {
echo "$1" >&2
}
# alias plain=echo
set -e
_where=`pwd`
srcdir="$_where"
_cpu_opt_patch_link="https://raw.githubusercontent.com/graysky2/kernel_gcc_patch/master/enable_additional_cpu_optimizations_for_gcc_v10.1%2B_kernel_v5.8%2B.patch"
source customization.cfg
if [ "$1" != "install" ] && [ "$1" != "config" ] && [ "$1" != "uninstall" ]; then
echo "Command not recognised, options are:
- config : shallow clones the linux 5.8.x git tree into the folder linux-5.8, then applies on it the extra patches and prepares the .config file by copying the one from the current linux system in /boot/config-`uname -r` and updates it.
- install : [Debian-like only (Debian, Ubuntu, Pop_os!...)], does the config step, proceeds to compile, then prompts to install
- uninstall : [Debian-like only (Debian, Ubuntu, Pop_os!...)], lists the installed custom kernels through this script, then prompts for which one to uninstall."
exit 0
fi
# Load external configuration file if present. Available variable values will overwrite customization.cfg ones.
if [ -e "$_EXT_CONFIG_PATH" ]; then
msg2 "External configuration file $_EXT_CONFIG_PATH will be used and will override customization.cfg values."
source "$_EXT_CONFIG_PATH"
fi
_misc_adds="false" # We currently don't want this enabled on non-Arch
if [ "$1" = "install" ] || [ "$1" = "config" ]; then
source linux*-tkg-config/prepare
if [ $1 = "install" ] && [[ "$_distro" != "Ubuntu" && "$_distro" != "Debian" ]]; then
msg2 "Variable \"_distro\" in \"customization.cfg\" hasn't been set to \"Debian\" or \"Ubuntu\""
msg2 "This script can only install custom kernels for Ubuntu and Debian derivatives. Exiting..."
exit 0
fi
if [ "$_distro" = "Debian" ] || [ "$_distro" = "Ubuntu" ]; then
msg2 "Installing dependencies"
sudo apt install git build-essential kernel-package fakeroot libncurses5-dev libssl-dev ccache bison flex
else
msg2 "Dependencies are unknown for the target linux distribution."
fi
# Force prepare script to avoid Arch specific commands if the user didn't change _distro from "Arch"
if [ "$1" = "config" ]; then
_distro=""
fi
if [ -d linux-${_basekernel}.orig ]; then
rm -rf linux-${_basekernel}.orig
fi
if [ -d linux-${_basekernel} ]; then
msg2 "Reseting files in linux-$_basekernel to their original state and getting latest updates"
cd "$_where"/linux-${_basekernel}
git checkout --force linux-$_basekernel.y
git clean -f -d -x
git pull
msg2 "Done"
cd "$_where"
else
msg2 "Shallow git cloning linux $_basekernel"
git clone --branch linux-$_basekernel.y --single-branch --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git linux-${_basekernel}
msg2 "Done"
fi
# Define current kernel subversion
if [ -z $_kernel_subver ]; then
cd "$_where"/linux-${_basekernel}
_kernelverstr=`git describe`
_kernel_subver=${_kernelverstr:5}
cd "$_where"
fi
# Run init script that is also run in PKGBUILD, it will define some env vars that we will use
_tkg_initscript
cd "$_where"
msg2 "Downloading Graysky2's CPU optimisations patch"
wget "$_cpu_opt_patch_link"
# Follow Ubuntu install isntructions in https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
# cd in linux folder, copy Ubuntu's current config file, update with new params
cd "$_where"/linux-${_basekernel}
msg2 "Copying current kernel's config and running make oldconfig..."
cp /boot/config-`uname -r` .config
if [ "$_distro" = "Debian" ]; then #Help Debian cert problem.
sed -i -e 's#CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/test-signing-certs.pem"#CONFIG_SYSTEM_TRUSTED_KEYS=""#g' .config
fi
yes '' | make oldconfig
msg2 "Done"
# apply linux-tkg patching script
_tkg_srcprep
msg2 "Configuration done."
fi
if [ "$1" = "install" ]; then
# Use custom compiler paths if defined
if [ -n "${CUSTOM_GCC_PATH}" ]; then
PATH=${CUSTOM_GCC_PATH}/bin:${CUSTOM_GCC_PATH}/lib:${CUSTOM_GCC_PATH}/include:${PATH}
fi
if [ "$_force_all_threads" = "true" ]; then
_thread_num=`nproc`
else
_thread_num=`expr \`nproc\` / 4`
if [ "$_thread_num" = "0" ]; then
_thread_num=1
fi
fi
# ccache
if [ "$_noccache" != "true" ]; then
if [[ "$_distro" = "Ubuntu" || "$_distro" = "Debian" ]] && dpkg -l ccache > /dev/null; then
export PATH="/usr/lib/ccache/bin/:$PATH"
export CCACHE_SLOPPINESS="file_macro,locale,time_macros"
export CCACHE_NOHASHDIR="true"
msg2 'ccache was found and will be used'
fi
fi
_kernel_flavor="${_kernel_localversion}"
if [ -z $_kernel_localversion ]; then
_kernel_flavor="tkg-${_cpusched}"
fi
if [ "$_distro" = "Ubuntu" ] || [ "$_distro" = "Debian" ]; then
if make -j ${_thread_num} deb-pkg LOCALVERSION=-${_kernel_flavor}; then
msg2 "Building successfully finished!"
read -p "Do you want to install the new Kernel ? y/[n]: " _install
if [[ $_install =~ [yY] ]] || [[ $_install =~ [yY] ]] || [ $_install = "yes" ] || [ $_install = "Yes" ]; then
cd "$_where"
_kernelname=$_basekernel.$_kernel_subver-$_kernel_flavor
_headers_deb=linux-headers-${_kernelname}*.deb
_image_deb=linux-image-${_kernelname}_*.deb
sudo dpkg -i $_headers_deb $_image_deb
# Add to the list of installed kernels, used for uninstall
if ! { [ -f installed-kernels ] && grep -Fxq "$_kernelname" installed-kernels; }; then
echo $_kernelname >> installed-kernels
fi
fi
fi
fi
fi
if [ "$1" = "uninstall" ]; then
cd "$_where"
if [ ! -f installed-kernels ] || [ ! -s installed-kernels ]; then
echo "No custom kernel has been installed yet"
exit 0
fi
i=1
declare -a _custom_kernels
msg2 "Installed custom kernel versions: "
while read p; do
echo " $i) $p"
_custom_kernels+=($p)
i=$((i+1))
done < installed-kernels
i=$((i-1))
_delete_index=0
read -p "Which one would you like to delete ? [1-$i]: " _delete_index
if [ $_delete_index -ge 1 ] && [ $_delete_index -le $i ]; then
_delete_index=$((_delete_index-1))
sudo dpkg -r linux-headers-${_custom_kernels[$_delete_index]} linux-image-${_custom_kernels[$_delete_index]}
fi
rm -f installed-kernels
i=0
for kernel in "${_custom_kernels[@]}"; do
if [ $_delete_index != $i ]; then
echo "$kernel" >> installed-kernels
fi
i=$((i+1))
done
fi