summaryrefslogtreecommitdiff
path: root/rushmore-linux/rl-build-kernel.sh
blob: b7b38ceb03f58f75153e12a77cf61189f80e6801 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env bash
set -euo pipefail

DIR="$(cd "$(dirname "$0")" && pwd)"

KERNEL_VER="6.19"
KERNEL_URL="https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-$KERNEL_VER.tar.xz"
KERNEL_TAR="linux-$KERNEL_VER.tar.xz"
KERNEL_SRC="$DIR/linux-$KERNEL_VER"
KERNEL_OUT="$DIR/out/kernel"
KERNEL_CFG="$KERNEL_SRC/scripts/config"

mkdir -p "$KERNEL_OUT"

# If no kernel sources are found, grab the release tarball
if [ ! -d "$KERNEL_SRC" ]; then
    echo "Kernel sources not found. Downloading a release tarball in 3 seconds..."
    sleep 3
    echo "Downloading $KERNEL_URL..."
    curl -L -o "$DIR/$KERNEL_TAR" "$KERNEL_URL"
    echo "Extracting - this can take a little bit..."
    tar -xf "$KERNEL_TAR" -C "$DIR"
    rm "$DIR/$KERNEL_TAR"

    echo "Generating default kernel config..."
    make -C "$KERNEL_SRC" O="$KERNEL_OUT" defconfig
fi

echo "Setting kernel config options..."

kenable() { "$KERNEL_CFG" --file "$KERNEL_OUT/.config" --enable "$1"; }

kenable DRM
kenable DRM_FBDEV_EMULATION
kenable DRM_VIRTIO_GPU

kenable FB
kenable FB_VESA

kenable FRAMEBUFFER_CONSOLE

echo "Resolving config dependencies..."
make -C "$KERNEL_SRC" O="$KERNEL_OUT" olddefconfig

echo "Building with $(nproc) threads in 3 seconds..."
sleep 3
make -C "$KERNEL_SRC" O="$KERNEL_OUT" -j "$(nproc)"

echo "Exporting kernel headers..."
make -C "$KERNEL_SRC" O="$KERNEL_OUT" -j "$(nproc)" \
    headers_install INSTALL_HDR_PATH="$DIR/out/sysroot/usr"