diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c6137d --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ + + +# Build kernel release archives for use in building RancherOS + +**Fill me in** + +## packaging your own kernel builds + +Assuming you have some kernel source you have built in `/usr/src/linux-4.8`, you can +package up the result by running + +``` +./scripts/package-kernel --srcdir /usr/src/linux-4.8 +``` + +You may need to adjust the expected module list files. + +## Notes + +``` ++: ${KERNEL_URL:="https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.1.tar.xz"} ++: ${KERNEL_SHA1:="af418cf983819e99fb4bd0c200a10d9568a2ac52"} +``` diff --git a/build.sh b/build.sh deleted file mode 100755 index a4fdb79..0000000 --- a/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -set -e - -cd $(dirname $0) - -dapper ./scripts/ci - -ls -lh dist/kernel diff --git a/scripts/build-common b/scripts/build-common index 3bb2082..449f0eb 100644 --- a/scripts/build-common +++ b/scripts/build-common @@ -39,7 +39,7 @@ create_firmware_tar() { echo Found $i echo $i >> files else - echo Not found $i + echo WARNING: Firmware listed in $list Not found $i fi fi done @@ -91,7 +91,7 @@ split_tar() { mkdir -p tar/{build,main,extra} echo Extracting $archive tar xf $archive -C tar/build - depmod -b tar/build $(basename tar/build/lib/modules/*) + /sbin/depmod -b tar/build $(basename tar/build/lib/modules/*) cd tar/build/lib/modules/*/kernel/.. @@ -102,8 +102,12 @@ split_tar() { move_files $module_extra_list extra if [ $(find kernel -type f | wc -l) -gt 0 ]; then - echo Invalid files + echo Invalid files in $(pwd) find kernel -type f + echo + echo ERROR: Extra files in $(pwd) + echo ERROR: You may need to either remove some modules from your kernel .config, or + echo ERROR: add these files to $module_list or $module_extra_list exit 1 fi diff --git a/scripts/build-kernel b/scripts/build-kernel index 2039125..355e29e 100755 --- a/scripts/build-kernel +++ b/scripts/build-kernel @@ -19,19 +19,3 @@ cd ${BUILD}/${DIR} make oldconfig make -j$(nproc) tar-pkg - -create_firmware_tar $FIRMWARE - -mkdir -p ${DIST}/kernel - -FILE=$(echo linux*.tar) - -( - split_tar $FILE $MODULE_LIST $MODULE_EXTRA_LIST -) - -tar --concatenate --file=base.tar firmware.tar -tar --concatenate --file=extra.tar firmware-extra.tar -cat base.tar | gzip -c > ${DIST}/kernel/${FILE}.gz -cat extra.tar | gzip -c > ${DIST}/kernel/extra.tar.gz -list_build_files | tar -czf ${DIST}/kernel/build.tar.gz -T /dev/stdin diff --git a/scripts/ci b/scripts/ci index a4ff0b8..4be07e0 100755 --- a/scripts/ci +++ b/scripts/ci @@ -6,3 +6,4 @@ cd $(dirname $0)/.. ./scripts/download ./scripts/extract ./scripts/build-kernel +./scripts/package-kernel diff --git a/scripts/package-kernel b/scripts/package-kernel new file mode 100755 index 0000000..827c42a --- /dev/null +++ b/scripts/package-kernel @@ -0,0 +1,49 @@ +#!/bin/bash +set -e + +cd $(dirname $0)/.. + +source scripts/build-common +source scripts/version + +SOURCEDIR=${BUILD}/${VERSION} +while [ "$#" -gt 0 ]; do + case $1 in + --srcdir) + shift 1 + SOURCEDIR="$1" + ;; + *) + break + ;; + esac + shift 1 +done + + + +export CCACHE_DIR="${HOME}/.kernel-ccache" +export CC="ccache gcc" +export PATH="/usr/lib/ccache:$PATH" +KERNEL=$(basename ${KERNEL_URL}) +FIRMWARE=$(readlink -f scripts/firmware) +MODULE_LIST=$(readlink -f modules.list) +MODULE_EXTRA_LIST=$(readlink -f modules-extra.list) + +cd ${SOURCEDIR} + +create_firmware_tar $FIRMWARE + +mkdir -p ${DIST}/kernel + +FILE=$(echo linux*.tar) + +( + split_tar $FILE $MODULE_LIST $MODULE_EXTRA_LIST +) + +tar --concatenate --file=base.tar firmware.tar +tar --concatenate --file=extra.tar firmware-extra.tar +cat base.tar | gzip -c > ${DIST}/kernel/${FILE}.gz +cat extra.tar | gzip -c > ${DIST}/kernel/extra.tar.gz +list_build_files | tar -czf ${DIST}/kernel/build.tar.gz -T /dev/stdin