Build Kernel

26.02.2018

Ich im Beitrag Kernel Bauen geschrieben, wie man sich einen Linux Kernel für Debian bzw. Ubuntu selbst bauen kann. Da ich in der letzten Zeit öfter Kernel baue, habe ich mir ein Skript geschrieben, welches alle Schritte automatisiert.

Das Skript befindet sich unten.

build-kernel.sh

#!/bin/bash
set -e

VERSION=
KERNEL_KEY=38DBBDC86092693E

function usage()
{
    echo ''
    echo "$(basename "$0") --kernel=4.15.6"
    echo 'Build linux kernel'
    printf '\t-h --help\n'
    printf '\t--kernel=<kernel version>\n'
    echo ''
}

while [ "$1" != "" ]; do
    PARAM=$(echo "$1" | awk -F= '{print $1}')
    VALUE=$(echo "$1" | awk -F= '{print $2}')
    case $PARAM in
        -h | --help)
            usage
            exit
            ;;
        --kernel)
            VERSION=$VALUE
            ;;
        *)
            echo "ERROR: unknown parameter \"$PARAM\""
            usage
            exit 1
            ;;
    esac
    shift
done

if [ -z "$VERSION" ]
then
    echo "Parameter --kernel is missing"
    usage
    exit 1
fi

base_url=https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${VERSION}

if [ ! -f "linux-${VERSION}.tar" ] && [ ! -f "linux-${VERSION}.tar.xz" ]
then
    echo "download $base_url".tar.xz
    curl "$base_url".tar.xz > "linux-${VERSION}.tar.xz"
    curl "$base_url".tar.sign > "linux-${VERSION}.tar.sign"
fi

if [ ! -f "linux-${VERSION}.tar" ]
then
    unxz "linux-${VERSION}.tar.xz"
fi

if ! gpg2 -k "$KERNEL_KEY" > /dev/null 2>&1
then
    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys "$KERNEL_KEY"
fi

gpg2 --verify "linux-${VERSION}.tar.sign"

[ -d "linux-${VERSION}" ] && rm -rf "linux-${VERSION}"
tar xf "linux-${VERSION}.tar"

cd "linux-${VERSION}"
cp "/boot/config-$(uname -r)" .config
yes '' | make oldconfig
make -j "$(nproc)" deb-pkg LOCALVERSION=-custom
Kategorien: Linux
Tags: #Ubuntu #Debian