krata/hack/kernel/build.sh

57 lines
1.5 KiB
Bash
Raw Normal View History

2024-03-07 09:04:05 +00:00
#!/bin/sh
set -e
REAL_SCRIPT="$(realpath "${0}")"
cd "$(dirname "${REAL_SCRIPT}")/../.."
KRATA_DIR="${PWD}"
KERNEL_DIR="${KRATA_DIR}/kernel"
cd "${KRATA_DIR}"
2024-03-07 16:40:06 +00:00
# shellcheck source-path=SCRIPTDIR source=../../kernel/config.sh
2024-03-07 09:04:05 +00:00
. "${KERNEL_DIR}/config.sh"
KERNEL_SRC="${KERNEL_DIR}/linux-${KERNEL_VERSION}"
if [ ! -f "${KERNEL_SRC}/Makefile" ]
then
rm -rf "${KERNEL_SRC}"
curl --progress-bar -L -o "${KERNEL_SRC}.txz" "${KERNEL_SRC_URL}"
tar xf "${KERNEL_SRC}.txz" -C "${KERNEL_DIR}"
rm "${KERNEL_SRC}.txz"
fi
OUTPUT_DIR="${KRATA_DIR}/target/kernel"
mkdir -p "${OUTPUT_DIR}"
2024-03-07 16:40:06 +00:00
TARGET_ARCH="$(KRATA_ARCH_KERNEL_NAME=1 ./hack/build/arch.sh)"
2024-03-07 09:04:05 +00:00
KERNEL_CONFIG_FILE="${KERNEL_DIR}/krata-${TARGET_ARCH}.config"
if [ ! -f "${KERNEL_CONFIG_FILE}" ]
then
echo "ERROR: kernel config file not found for ${TARGET_ARCH}" > /dev/stderr
exit 1
fi
cp "${KERNEL_CONFIG_FILE}" "${KERNEL_SRC}/.config"
make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH}" "${@}" olddefconfig
if [ "${TARGET_ARCH}" = "x86_64" ]
then
make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH}" "${@}" bzImage
elif [ "${TARGET_ARCH}" = "arm64" ]
then
make -C "${KERNEL_SRC}" ARCH="${TARGET_ARCH}" "${@}" Image.gz
fi
if [ "${TARGET_ARCH}" = "x86_64" ]
then
cp "${KERNEL_SRC}/arch/x86/boot/bzImage" "${OUTPUT_DIR}/kernel"
elif [ "${TARGET_ARCH}" = "arm64" ]
then
cp "${KERNEL_SRC}/arch/arm64/boot/Image.gz" "${OUTPUT_DIR}/kernel"
else
echo "ERROR: unable to determine what file is the vmlinuz for ${TARGET_ARCH}" > /dev/stderr
exit 1
fi