Skip to content

Commit 95d5374

Browse files
authored
Merge pull request #67 from dalehamel/generic-header-install
feat(init): support installing headers on generic linux distributions
2 parents e3df37d + f24c7bb commit 95d5374

File tree

1 file changed

+35
-5
lines changed

1 file changed

+35
-5
lines changed

init/fetch-linux-headers.sh

+35-5
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ generate_headers()
1414
zcat /proc/config.gz > .config
1515
make ARCH=x86 oldconfig > /dev/null
1616
make ARCH=x86 prepare > /dev/null
17+
18+
# Clean up abundant non-header files to speed-up copying
19+
find ${BUILD_DIR} -regex '.*\.c\|.*\.txt\|.*Makefile\|.*Build\|.*Kconfig' -type f -delete
1720
}
1821

1922
fetch_cos_linux_sources()
@@ -23,6 +26,16 @@ fetch_cos_linux_sources()
2326
curl -s "https://storage.googleapis.com/cos-tools/${BUILD_ID}/kernel-src.tar.gz" | tar -xzf - -C ${BUILD_DIR}
2427
}
2528

29+
fetch_generic_linux_sources()
30+
{
31+
kernel_version=$(uname -r | tr -d '+')
32+
major_version=$(echo ${kernel_version} | cut -d . -f 1)
33+
echo "Fetching upstream kernel sources for ${kernel_version}."
34+
mkdir -p ${BUILD_DIR}
35+
curl -sL https://www.kernel.org/pub/linux/kernel/v${major_version}.x/linux-$kernel_version.tar.gz | tar --strip-components=1 -xzf - -C ${BUILD_DIR}
36+
37+
}
38+
2639
install_cos_linux_headers()
2740
{
2841
if grep -q CHROMEOS_RELEASE_VERSION ${LSB_FILE};then
@@ -31,15 +44,29 @@ install_cos_linux_headers()
3144
SOURCES_DIR="${TARGET_DIR}/linux-lakitu-${BUILD_ID}"
3245

3346
if [ ! -e "${SOURCES_DIR}/.installed" ];then
34-
echo "Installing kernel headers for for COS build ${BUILD_ID}"
35-
fetch_cos_linux_sources
36-
generate_headers
37-
mv ${BUILD_DIR} ${TARGET_DIR}
47+
echo "Installing kernel headers for COS build ${BUILD_ID}"
48+
time fetch_cos_linux_sources
49+
time generate_headers
50+
time mv ${BUILD_DIR} ${TARGET_DIR}
3851
touch "${SOURCES_DIR}/.installed"
3952
fi
4053
fi
4154
}
4255

56+
install_generic_linux_headers()
57+
{
58+
BUILD_DIR="/linux-generic-$(uname -r)"
59+
SOURCES_DIR="${TARGET_DIR}/linux-generic-$(uname -r)"
60+
61+
if [ ! -e "${SOURCES_DIR}/.installed" ];then
62+
echo "Installing kernel headers for generic kernel"
63+
time fetch_generic_linux_sources
64+
time generate_headers
65+
time mv ${BUILD_DIR} ${TARGET_DIR}
66+
touch "${SOURCES_DIR}/.installed"
67+
fi
68+
}
69+
4370
install_headers()
4471
{
4572
distro=$(grep ^NAME ${OS_RELEASE_FILE} | cut -d = -f 2)
@@ -50,7 +77,10 @@ install_headers()
5077
HEADERS_TARGET=${SOURCES_DIR}
5178
;;
5279
*)
53-
echo "WARNING: ${distro} is not a supported distro, cannot install headers, ensure they are installed to /lib/modules"
80+
echo "WARNING: Cannot find distro-specific headers for ${distro}. Fetching generic headers."
81+
install_generic_linux_headers
82+
HEADERS_TARGET=${SOURCES_DIR}
83+
;;
5484
esac
5585
}
5686

0 commit comments

Comments
 (0)