Skip to content

Commit 42b2313

Browse files
committed
kernel/makefile: improved blobby kernel support
1 parent e12f99f commit 42b2313

File tree

4 files changed

+75
-24
lines changed

4 files changed

+75
-24
lines changed

kernel/makefile

Lines changed: 70 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,28 @@ KERNEL_PATCHES := $(PRAWNOS_KERNEL)/patches/$(TARGET)
1616

1717
KERNEL_BUILD_LOG := $(PRAWNOS_BUILD_LOGS)/kernel-log-$(TARGET).txt
1818

19-
### UNIVERSAL VARS ###
20-
KERNEL_TAR := $(PRAWNOS_BUILD_SOURCES)/linux-libre-$(KVER)-gnu.tar.xz
21-
KERNEL_BLOBBY_TAR := $(PRAWNOS_BUILD_SOURCES)/blobby-linux-$(KVER)-gnu.tar.xz
22-
KERNEL_TAR_SIGNATURE := $(KERNEL_TAR).sign
23-
KERNEL_LINUX_LIBRE_PUB := $(KERNEL_SHARED_RESOURCES)/linux-libre-signing-key.gpg
19+
KERNEL_LIBRE_CONFIG := $(KERNEL_RESOURCES)/libre-config
20+
KERNEL_LIBRE_URL := https://www.linux-libre.fsfla.org/pub/linux-libre/releases/$(KVER)-gnu/
21+
KERNEL_LIBRE_BASENAME := linux-libre-$(KVER)-gnu.tar.xz
22+
KERNEL_LIBRE_TAR := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_BASENAME)
23+
KERNEL_LIBRE_TAR_SIGNATURE := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_TAR).sign
24+
KERNEL_LIBRE_TAR_SIGNATURE_BASENAME := $(KERNEL_LIBRE_BASENAME).sign
25+
KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_LIBRE_BASENAME)
26+
KERNEL_LIBRE_TAR_SIGNATURE_TARGET := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME)
27+
KERNEL_LIBRE_PUBKEY := $(KERNEL_SHARED_RESOURCES)/linux-libre-signing-key.gpg
28+
29+
30+
# Default to a libre kernel. blobby_kernel target will override if needed:
31+
BLOBBY_BUILD := 0
32+
KERNEL_BLOBBY_CONFIG := $(KERNEL_RESOURCES)/blobby-config
33+
KERNEL_BLOBBY_URL := https://cdn.kernel.org/pub/linux/kernel/v5.x/
34+
KERNEL_BLOBBY_BASENAME := linux-$(KVER).tar.xz
35+
KERNEL_BLOBBY_TAR := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_BASENAME)
36+
KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME := linux-$(KVER).tar
37+
KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME).sign
38+
KERNEL_BLOBBY_TAR_SIGNATURE := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME)
39+
KERNEL_BLOBBY_TAR_SIGNATURE_TARGET := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME)
40+
KERNEL_BLOBBY_PUBKEY := $(KERNEL_SHARED_RESOURCES)/blobby-linux-signing-key.gpg
2441

2542
ATH9K_EXTRACTED := $(PRAWNOS_ATH9K_BUILD)/.ath9k_extracted
2643
ATH9K_TAR := $(KERNEL_SHARED_RESOURCES)/open-ath9k-htc-firmware.tar.gz
@@ -84,12 +101,7 @@ update_ath9k_tar:
84101

85102
.PHONY: blobby_kernel
86103
blobby_kernel:
87-
rm -rf $(PRAWNOS_KERNEL_BUILD)
88-
mkdir -p $(PRAWNOS_BUILD_SOURCES)
89-
wget $(WGET_OPTS) https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-$(KVER).tar.xz -O $(KERNEL_BLOBBY_TAR)
90-
tar -Jxf $(KERNEL_BLOBBY_TAR) -C $(PRAWNOS_BUILD)
91-
touch $(KERNEL_EXTRACTED)
92-
touch $(KERNEL_PATCHED)
104+
$(MAKE) BLOBBY_BUILD=1 kernel
93105

94106

95107
#TODO: package perf/linux-tools
@@ -99,20 +111,56 @@ perf: $(PRAWNOS_KERNEL_BUILT)
99111

100112
### REAL RULES
101113

114+
ifeq ($(BLOBBY_BUILD),0)
115+
KERNEL_CONFIG := $(KERNEL_LIBRE_CONFIG)
116+
KERNEL_URL := $(KERNEL_LIBRE_URL)
117+
KERNEL_BASENAME := $(KERNEL_LIBRE_BASENAME)
118+
KERNEL_TAR := $(KERNEL_LIBRE_TAR)
119+
KERNEL_TAR_SIGNATURE := $(KERNEL_LIBRE_TAR_SIGNATURE_BASENAME)
120+
KERNEL_TAR_SIGNATURE_BASENAME := $(KERNEL_LIBRE_TAR_SIGNATURE_BASENAME)
121+
KERNEL_TAR_SIGNATURE_TARGET := $(KERNEL_LIBRE_TAR_SIGNATURE_TARGET)
122+
KERNEL_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME)
123+
KERNEL_PUBKEY := $(KERNEL_LIBRE_PUBKEY)
124+
else
125+
KERNEL_CONFIG := $(KERNEL_BLOBBY_CONFIG)
126+
KERNEL_URL := $(KERNEL_BLOBBY_URL)
127+
KERNEL_BASENAME := $(KERNEL_BLOBBY_BASENAME)
128+
KERNEL_TAR := $(KERNEL_BLOBBY_TAR)
129+
KERNEL_TAR_SIGNATURE := $(KERNEL_BLOBBY_TAR_SIGNATURE)
130+
KERNEL_TAR_SIGNATURE_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME)
131+
KERNEL_TAR_SIGNATURE_TARGET := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET)
132+
KERNEL_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME)
133+
KERNEL_PUBKEY := $(KERNEL_BLOBBY_PUBKEY)
134+
endif
135+
102136
$(KERNEL_ATH9K_FIRMWARES):
103137
mkdir -p $(KERNEL_ATH9K_FIRMWARES)
104138

105139
$(KERNEL_TAR_SIGNATURE): | $(PRAWNOS_BUILD_SOURCES)
106-
wget $(WGET_OPTS) https://www.linux-libre.fsfla.org/pub/linux-libre/releases/$(KVER)-gnu/linux-libre-$(KVER)-gnu.tar.xz.sign -O $(KERNEL_TAR_SIGNATURE)
107-
108-
$(KERNEL_TAR): $(KERNEL_TAR_SIGNATURE) | $(PRAWNOS_BUILD_LOGS) $(PRAWNOS_BUILD_SOURCES)
109-
wget $(WGET_OPTS) https://www.linux-libre.fsfla.org/pub/linux-libre/releases/$(KVER)-gnu/linux-libre-$(KVER)-gnu.tar.xz -O $(KERNEL_TAR)
110-
gpg --import $(KERNEL_LINUX_LIBRE_PUB)
111-
gpg --verify $(KERNEL_TAR_SIGNATURE) $(KERNEL_TAR)
112-
113-
$(KERNEL_EXTRACTED): $(KERNEL_TAR)
114-
tar -xvf $(KERNEL_TAR) -C $(PRAWNOS_BUILD)
115-
touch $(KERNEL_EXTRACTED)
140+
wget $(WGET_OPTS) $(KERNEL_URL)/$(KERNEL_TAR_SIGNATURE_BASENAME) -O $(KERNEL_TAR_SIGNATURE)
141+
142+
$(KERNEL_EXTRACTED): $(KERNEL_TAR) $(KERNEL_TAR_SIGNATURE)
143+
gpg --import $(KERNEL_PUBKEY)
144+
case $(BLOBBY_BUILD) in \
145+
0) \
146+
gpg --verify $(KERNEL_TAR_SIGNATURE) $(KERNEL_TAR_SIGNATURE_TARGET) && \
147+
tar -xvf $(KERNEL_TAR) -C $(PRAWNOS_BUILD) && \
148+
touch $(KERNEL_EXTRACTED) \
149+
;; \
150+
1) \
151+
if [ ! -f $(KERNEL_TAR_SIGNATURE_TARGET) ]; then xz --decompress --keep $(KERNEL_TAR) ; fi ; \
152+
gpg --verify $(KERNEL_TAR_SIGNATURE) $(KERNEL_TAR_SIGNATURE_TARGET) && \
153+
tar -xvf $(KERNEL_TAR_SIGNATURE_TARGET) -C $(PRAWNOS_BUILD) && \
154+
touch $(KERNEL_EXTRACTED) \
155+
;; \
156+
*) \
157+
@echo "Unknown kernel type"; \
158+
exit 1 \
159+
;; \
160+
esac
161+
162+
$(KERNEL_TAR): $(PRAWNOS_BUILD_LOGS) $(PRAWNOS_BUILD_SOURCES)
163+
wget $(WGET_OPTS) $(KERNEL_URL)/$(KERNEL_BASENAME) -O $(KERNEL_TAR)
116164

117165
$(KERNEL_PATCHED): $(KERNEL_EXTRACTED)
118166
@echo $(PRAWNOS_KERNEL_BUILD)
@@ -133,6 +181,6 @@ $(KERNEL_ATH9K_INSTALLED): $(KERNEL_PATCHED) $(ATH9K_BUILT) | $(KERNEL_ATH9K_FIR
133181

134182
$(PRAWNOS_KERNEL_BUILT): $(KERNEL_ATH9K_INSTALLED) $(PRAWNOS_INITRAMFS_IMAGE)
135183
rm -rf $(KERNEL_BUILD_LOG)
136-
$(PRAWNOS_KERNEL_SCRIPTS_BUILD) $(KVER) $(KERNEL_RESOURCES) $(PRAWNOS_KERNEL_BUILD) $(PRAWNOS_INITRAMFS_IMAGE) $(TARGET) 2>&1 | tee $(KERNEL_BUILD_LOG)
184+
$(PRAWNOS_KERNEL_SCRIPTS_BUILD) $(KVER) $(KERNEL_RESOURCES) $(PRAWNOS_KERNEL_BUILD) $(PRAWNOS_INITRAMFS_IMAGE) $(TARGET) $(KERNEL_CONFIG) 2>&1 | tee $(KERNEL_BUILD_LOG)
137185

138186
endif
File renamed without changes.
File renamed without changes.

scripts/BuildScripts/KernelScripts/buildKernel.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,17 @@ elif [ -z "$4" ]; then
3636
elif [ -z "$5" ]; then
3737
echo "No PrawnOS target arch supplied"
3838
exit 1
39+
elif [ -z "$6" ]; then
40+
echo "No PrawnOS kernel config supplied"
41+
exit 1
3942
fi
4043

4144
KVER=$1
4245
RESOURCES=$2
4346
BUILD_DIR=$3
4447
INITRAMFS=$4
4548
TARGET=$5
46-
49+
KERNEL_CONFIG=$6
4750

4851
ARCH_ARMHF=armhf
4952
ARCH_ARM64=arm64
@@ -75,7 +78,7 @@ fi
7578

7679
#copy in the resources, initramfs
7780
cp $INITRAMFS .
78-
cp $RESOURCES/config .config
81+
cp "$KERNEL_CONFIG" .config
7982
cp $RESOURCES/kernel.its .
8083
make -j $(($(nproc) +1)) CROSS_COMPILE=$CROSS_COMPILER ARCH=$KERNEL_ARCH $IMAGE
8184
make -j $(($(nproc) +1)) CROSS_COMPILE=$CROSS_COMPILER ARCH=$KERNEL_ARCH DTC_FLAGS="-@" dtbs

0 commit comments

Comments
 (0)