commit 968dddfe71d7820a703cb3580029613846113df8 Author: Damien Broqua Date: Sat Jan 25 17:34:46 2025 +0100 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..e8611e9 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# pkgkernel + +Simple outils permettant de compiler le kernel sur GNU/Debian et Gentoo (ou autre). + +Based on https://debian-facile.org/doc:systeme:kernel:compiler + +* pkgkernel.sh : GNU/Debian +* mrgkernel.sh : Gentoo / Générique diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..5a19c94 --- /dev/null +++ b/TODO.md @@ -0,0 +1,7 @@ +# TODO + +## gcc 9 + +Dans le cas de gcc 9 appliquer le [patch](https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.6/0002-UBUNTU-SAUCE-kbuild-add-fcf-protection-none-when-usi.patch). + +Pour connaitre la version de gcc : `gcc -dumpversion` diff --git a/mrgkernel.sh b/mrgkernel.sh new file mode 100755 index 0000000..eabb748 --- /dev/null +++ b/mrgkernel.sh @@ -0,0 +1,90 @@ +#! /bin/bash + +# Gentoo version + +# Some colors +GREEN='\033[0;32m' +RED='\033[0;31m' +DEFAULT='\033[0m' + +# Defaults values +DIR="/usr/src/" +PREFIX='linux-' +EXTENSION='.tar.xz' +MAINLINE=1 +CURRENT_VERSION=`uname -r` + +# Function to script script if step fail +isPreviousStepOk () { + if [ $? -ne 0 ]; then + echo -e "${RED} Error!${DEFAULT}" + exit 1 + fi +} + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 1 +fi + +# Get last kernel version +INFO=`curl -Ls https://www.kernel.org/ | perl -lne 'BEGIN{$/=""} print "$1 $2" if \ + /latest_link.*?(.*?)(.*?): Use local kernel archive\n" + printf "* --extension : if not a archive extension is not tar.xz (tar.xz or tar.gz)\n" + printf "* --rc: Get RC version instead of mainline\n" + printf "****************************************************************************************************\n" + printf "Example with RC kernel: \n" + printf "pkgkernel-auto.sh --archive /home/dbroqua/Downloads/linux-5.7-rc4.tar.gz --extension tar.gz \n" + printf "****************************************************************************************************\n" + exit 1 + ;; + --menu) + SHOW_MENU_CONFIG=1 + ;; + --archive) + ARCHIVE=$2 + shift + ;; + --rc) + MAINLINE=0 + ;; + --extension) + EXTENSION=$2 + shift + ;; + *) + printf "***************************\n" + printf "* Error: Invalid argument.*\n" + printf "***************************\n" + exit 1 + esac + shift +done + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 1 +fi + +# Install build dependancies +apt install -y \ + build-essential \ + fakeroot \ + dpkg-dev \ + perl \ + libssl-dev \ + bc \ + gnupg \ + dirmngr \ + libelf-dev \ + flex \ + bison \ + libncurses-dev \ + rsync \ + git \ + curl + +if [ "${ARCHIVE}" != "" ] ; then + FILE=`basename "$ARCHIVE"` + KERNEL=`echo ${FILE}|sed 's/linux-//'|sed "s/\.${EXTENSION}//"` +else + if [ ${MAINLINE} -eq 1 ] ; then + # Get last kernel version + INFO=`curl -Ls https://www.kernel.org/ | perl -lne 'BEGIN{$/=""} print "$1 $2" if \ + /latest_link.*?(.*?)