Building the Ubuntu kernel: fakeroot debian/rules¶
Before submitting any patch, make sure it builds inside the devel chroot (e.g. Lunar):
$ schroot -c lunar-amd64
(lunar-amd64)$ fakeroot debian/rules clean
(lunar-amd64)$ debian/rules build
# building takes some time, be patient
(lunar-amd64)$ fakeroot debian/rules binary
Depending on your build box resources (cpus, memory, disk, etc) the process could take minutes or hours, be patient.
If the build is successful, a set of .deb binary packages will be present in the parent directory: you can install these (sudo dpkg -i linux-generic-...deb linux-modules-...deb) to test the resulting kernel.
Cross compilation¶
Cross compiling is a matter of setting the target dpkg-architecture before starting the build (e.g. to cross-compile an arm64 kernel):
$ schroot -c lunar-amd64
(lunar-amd64)$ export $(dpkg-architecture -aarm64)
(lunar-amd64)$ fakeroot debian/rules clean
(lunar-amd64)$ debian/rules build
# build time...
(lunar-amd64)$ fakeroot debian/rules binary
These are the available dpkg-architecture targets, and the corresponding
Kbuild vars:
| Target architecture | ARCH | CROSS_COMPILE | dpkg-architecture | 
|---|---|---|---|
| arm64 | arm64 | aarch64-linux-gnu- | arm64 | 
| armhf | arm | aarch64-linux-gnu- | armhf | 
| ppc64el | powerpc | aarch64-linux-gnu- | ppc64el | 
| riscv64 | riscv | aarch64-linux-gnu- | riscv64 | 
| s390x | s390x | aarch64-linux-gnu- | s390x |