Differences between revisions 22 and 23
Revision 22 as of 2018-04-19 23:53:17
Size: 3941
Editor: RogerShimizu
Comment:
Revision 23 as of 2018-09-25 20:06:56
Size: 3959
Editor: BenHutchings
Comment: Update kernel-handbook URL
Deletions are marked like this. Additions are marked like this.
Line 44: Line 44:
 https://kernel-handbook.debian.net/ch-common-tasks.html#s-gen-orig  https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-gen-orig


Simple steps to cross-build Debian Kernel package. The following steps were confirmed working under Stretch and buster (as of 2018-03-23).

Install Cross-Build Dependency

apt install fakeroot git kernel-wedge quilt ccache flex bison libssl-dev crossbuild-essential-<ARCH>

BTW. The following ARCH support cross-build explained here.

# apt-cache search crossbuild-essential-
crossbuild-essential-arm64 - Informational list of cross-build-essential packages
crossbuild-essential-armel - Informational list of cross-build-essential packages
crossbuild-essential-armhf - Informational list of cross-build-essential packages
crossbuild-essential-mipsel - Informational list of cross-build-essential packages
crossbuild-essential-powerpc - Informational list of cross-build-essential packages
crossbuild-essential-ppc64el - Informational list of cross-build-essential packages

Clone Git Repo of Debian Kernel

git clone -n https://salsa.debian.org/kernel-team/linux.git debian-kernel
cd debian-kernel
# list all tags
git tag -l
# starting from a stable release is a good idea
git checkout stretch

Get DFSG tarball of Kernel

Simple way if it already reached archive:

wget https://deb.debian.org/debian/pool/main/l/linux/linux_4.9.82.orig.tar.xz

Other a few ways to get the pristine tarball of upstream linux kernel:

Example:

# get whole git repo from internet, more than 1GB and may need hours to finish
git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable ../linux-stable
# generate DFSG compatible kernel source
debian/bin/genorig.py ../linux-stable

Cross Build

Take ARM/armel, flavour marvell as example.

# This triplet is defined in
#   https://salsa.debian.org/kernel-team/linux/tree/master/debian/config/<ARCH>/
# and its sub-directories.
# Here is just an example
ARCH=armel
FEATURESET=none
FLAVOUR=marvell

export $(dpkg-architecture -a$ARCH)
export PATH=/usr/lib/ccache:$PATH
# Build profiles is from: https://salsa.debian.org/kernel-team/linux/blob/master/debian/README.source
export DEB_BUILD_PROFILES="cross nopython nodoc pkg.linux.notools"
# Enable build in parallel
export MAKEFLAGS="-j$(($(nproc)*2))"
# Disable -dbg (debug) package is only possible when distribution="UNRELEASED" in debian/changelog
export DEBIAN_KERNEL_DISABLE_DEBUG=
[ "$(dpkg-parsechangelog --show-field Distribution)" = "UNRELEASED" ] &&
  export DEBIAN_KERNEL_DISABLE_DEBUG=yes

fakeroot make -f debian/rules clean
fakeroot make -f debian/rules orig
fakeroot make -f debian/rules source
fakeroot make -f debian/rules.gen setup_${ARCH}_${FEATURESET}_${FLAVOUR}
fakeroot make -f debian/rules.gen binary-arch_${ARCH}_${FEATURESET}_${FLAVOUR}

The last two lines can also be simplified, but with a "sed" hack to debian/rules.gen below. In this way, udeb packages will be also built.

fakeroot make -f debian/rules.gen setup_${ARCH}
sed -i 's/binary-arch_armel:: binary-arch_armel_extra binary-arch_armel_none binary-arch_armel_real/binary-arch_armel:: binary-arch_armel_extra binary-arch_armel_none/' debian/rules.gen
fakeroot make -f debian/rules.gen binary-arch_${ARCH}

Speed up the build

From d-kernel thread: https://lists.debian.org/debian-kernel/2018/03/msg00195.html

You should be able to save time and disk space by disabling debug info, as that won't make any difference to the eventual kernel size. You can do that by adding "debug-info: false" to the [build] section in debian/config/armel/defines.

ccache can also be useful, though it doesn't help if you change a config symbol that affects some widely used header file.


CategoryKernel