Compare commits

...

2 commits

Author SHA1 Message Date
668d612b03 Download kernel sources from kernel.org
Add dependencies (curl, gpg, dirmngr)

anf check gpg signature
2021-04-28 01:01:17 +02:00
4a0f6e99e9 create a folder named with kernel version
Fot putting compiled kernel and dtb files
2021-04-27 17:45:42 +02:00
3 changed files with 79 additions and 12 deletions

View file

@ -12,10 +12,13 @@ RUN apt update \
bash \
git \
ca-certificates \
curl \
gpg \
dirmngr
libssl-dev
COPY docker/entrypoint.sh /tmp
COPY src/ /tmp
WORKDIR /tmp
CMD /tmp/entrypoint.sh
#CMD bash
CMD bash

View file

@ -1,8 +1,11 @@
#!/bin/bash
# Entrypoint for reform-build-kernel docker image
OUTPUT="/output/$KERNEL_VERSION"
if [ -f /output/Image ]
[[ -d "$OUTPUT" ]] || mkdir "$OUTPUT"
if [ -f "$OUTPUT/Image" ]
then
printf "Kernel image exist in destination aborting compilation.\n"
exit 0
@ -10,9 +13,9 @@ fi
if ./make_kernel.sh
then
cp linux/arch/arm64/boot/Image /output/
cp linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dtb /output/imx8mq-mnt-reform2-single-display.dtb
cp linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2-hdmi.dtb /output/imx8mq-mnt-reform2-dual-display.dtb
cp linux/arch/arm64/boot/Image "$OUTPUT"
cp linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2.dtb "$OUTPUT/imx8mq-mnt-reform2-single-display.dtb"
cp linux/arch/arm64/boot/dts/freescale/imx8mq-mnt-reform2-hdmi.dtb "$OUTPUT/imx8mq-mnt-reform2-dual-display.dtb"
else
printf "Error when building Kernel\n" 1>&2
exit 10

View file

@ -23,10 +23,42 @@ function error {
>&2 printf "\e[31mE\e[0m %s\n" "$1"
}
function download {
local filename url http_response
filename="$1"
url="$2"
printf "Downloading %s: " "$filename"
http_response=$(curl -o /dev/null -s -L -I -w "%{http_code}\n" "$url")
if [ "$http_response" -eq 200 ]
then
if curl -o "$filename" "$url" -s >/dev/null 2>&1
then
printf " done\n"
else
printf "unknown error\n"
return 1
fi
else
printf "error 404\n"
return 1
fi
return 0
}
export ARCH=arm64
#export LOADADDR=0x40480000
export CROSS_COMPILE=aarch64-linux-gnu-
GIT_URL="https://github.com/torvalds/linux/"
for c in curl gunzip tar gpg git
do
if ! command -v "$c" >/dev/null
then
error "This script need $c to work properly"
exit 5
fi
done
if [ ! -z $1 ]
then
@ -37,20 +69,49 @@ if [ -z "$KERNEL_VERSION" ]
then
error "You need to define KERNEL_VERSION env variable"
usage
exit 10
exit 1
fi
major_version=$(echo "$KERNEL_VERSION" | awk -F "." '{print $1}')
url="https://cdn.kernel.org/pub/linux/kernel/v${major_version}.x/linux-${KERNEL_VERSION}.tar.xz"
url_sign="https://cdn.kernel.org/pub/linux/kernel/v${major_version}.x/linux-${KERNEL_VERSION}.tar.sign"
if [ ! -d linux ]
then
printf "Cloning Linux...\n"
# temporary linux 5.11rc7 commit
if ! git clone --depth 1 --branch=v${KERNEL_VERSION} $GIT_URL
printf "Get Linux source file for version %s\n" "${KERNEL_VERSION}"
if ! gpg --locate-keys torvalds@kernel.org gregkh@kernel.org >/dev/null
then
error "Can't clone Linux, check version"
error "Can't get gpg pubkey for Linux Torvald and Greg Kroah-Hartman"
exit 10
fi
if ! download linux.tar.xz "$url"
then
error "Can't get linux tarball, check version"
exit 11
fi
fi
if ! download linux.tar.sign "$url_sign"
then
error "Can't get linux tarball, check version"
exit 11
fi
# verify signature
if ! xz -cd linux.tar.xz | gpg --trust-model tofu --verify linux.tar.sign - >/dev/null
then
error "problem with signature"
exit 12
fi
if ! xz -cd linux.tar.xz | tar -x
then
error "Cant extract linux tarball"
exit 13
fi
mv "linux-${KERNEL_VERSION}" linux
fi
exit 0
cp ./dts/*.dts ./linux/arch/arm64/boot/dts/freescale/
cp ./kernel-config ./linux/.config