- #!/usr/bin/ksh93
- #
- # Build Debian RT kernel from source,
- # and retain the kernel build including source and *.o
- # files so we can build custom kernel modules from
- # that
- #
- compound bconfig=(
- # config
- typeset kernel_maj_min='5.10'
- typeset kernel_config_name='config.amd64_rt_amd64'
- typeset igb_avb_src_gitbundle='/home/test001/work/dev_current/dev026/elbe/igb_avb/rovema_igb_avb_git20220302_001.bundle'
- typeset simatic_src_gitbundle='/home/test001/work/dev_current/dev026/elbe/simatickernelmodules/rovema_simatickernelmodules_git20220304_001.bundle'
- # calculated values
- typeset kernel_build_path
- )
- function build_debian_kernel_from_src
- {
- set -o xtrace
- set -o errexit
- set -o nounset
- integer res
- integer num_cpus=$(getconf '_NPROCESSORS_CONF')
- tar xf "/usr/src/linux-source-${bconfig.kernel_maj_min}.tar.xz"
- cd "linux-source-${bconfig.kernel_maj_min}"
- unxz <"/usr/src/linux-patch-${bconfig.kernel_maj_min}-rt.patch.xz" | patch -p1
- cp "/usr/src/linux-config-${bconfig.kernel_maj_min}/${bconfig.kernel_config_name}.xz" .
- unxz "${bconfig.kernel_config_name}.xz"
- # copy config and make kernel build accept it without
- # jumping to the $ make menu # menu
- cp "${bconfig.kernel_config_name}" '.config'
- make oldconfig <'/dev/null'
- # show any modifications $ make oldconfig # did to the kernel config
- print '--------------------------------------'
- diff -u "${bconfig.kernel_config_name}" '.config' || true
- print '--------------------------------------'
- make clean
- time nice -n 19 make -j$((num_cpus*4)) deb-pkg 2>&1 | tee -a buildlog.log
- (( res=$? ))
- printf '#### Kernel build finished, return code = %d\n' res
- if (( res == 0 )) ; then
- # remember the path to the kernel build, but only if we were successful
- bconfig.kernel_build_path="$PWD/"
- fi
- return $res
- }
- function build_simatic_kernel_modules
- {
- set -o xtrace
- set -o errexit
- set -o nounset
- # dummy for now
- #simatic-ipc-modules-lsp-v1.2.0RC1$ make -C /home/test001/work/kernel_test001/linux-5.10.52/ M=$PWD
- rm -Rf simatic_build
- mkdir simatic_build
- cd simatic_build
- cp "${bconfig.simatic_src_gitbundle}" .
- git clone rovema_simatickernelmodules_git20220304_001.bundle
- cd rovema_simatickernelmodules_git20220304_001/simatic-ipc-modules-lsp-v1.2.0RC1/
- make -C "${bconfig.kernel_build_path}" KSRC="${bconfig.kernel_build_path}" M=$PWD
- #
- # ToDo: Install in root/ dir, and turn that filesystem hieracy into a
- # Debian package
- # see https://unix.stackexchange.com/questions/30303/how-to-create-a-deb-file-manually
- #
- return 1
- }
- function build_igb_avb_kernel_module
- {
- set -o xtrace
- set -o errexit
- set -o nounset
- rm -Rf igb_avb_build
- mkdir igb_avb_build
- cd igb_avb_build
- cp "${bconfig.igb_avb_src_gitbundle}" .
- git clone rovema_igb_avb_git20220302_001.bundle
- cd rovema_igb_avb_git20220302_001/kmod
- make -C "${bconfig.kernel_build_path}" KSRC="${bconfig.kernel_build_path}" M=$PWD clean
- make -C ${bconfig.kernel_build_path} KSRC="${bconfig.kernel_build_path}" M=$PWD
- cd ../lib
- make
- #
- # ToDo: Install in root/ dir, and turn that filesystem hieracy into a
- # Debian package
- #
- # dummy for now
- # see https://unix.stackexchange.com/questions/30303/how-to-create-a-deb-file-manually
- return 1
- }
- function main
- {
- set -o xtrace
- set -o errexit
- if (( 0 )) ; then
- build_debian_kernel_from_src
- else
- bconfig.kernel_build_path="$PWD/linux-source-${bconfig.kernel_maj_min}/"
- fi
- build_simatic_kernel_modules || true
- build_igb_avb_kernel_module
- }
- #
- # main
- #
- builtin getconf
- main "$@"
- # EOF.
Build Debian kernel manually from source
Posted by Anonymous on Wed 23rd Mar 2022 12:34
raw | new post
view followups (newest first): Build Debian kernel manually from source by Anonymous
modification of post by Anonymous (view diff)
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.