[PATCH] [RFC] Support cross-building armhf kernel packages with make-kpkg
Hello everybody,
I am rather new to the arm architecture and currently trying to
get a couple of things working on a Raspberry Pi.
Building kernel packages natively on a 700MHz single-core ARMv6
cpu takes ages, so I have been looking into possibilities for
cross-building kernel packages from faster architectures.
According to the make-kpkg manpage, the following command
$ make-kpkg --arch armhf --cross_compile arm-rpi-linux-gnueabi- \
--revision 20131002 --append_to_version -rpi --initrd \
--us --uc --rootcmd fakeroot kernel_image
should build an armhf kernel package on an amd64 host with an
arm-rpi-linux-gnueabi-crosstoolchain installed. With
kernel-package 12.036+nmu3 this fails with
debian/ruleset/misc/checks.mk:36: *** Error. I do not know
where the kernel image goes to [kimagedest undefined] The usual
case for this is that I could not determine which arch or
subarch this machine belongs to. Please specify a subarch, and
try again.. Stop.
It looks like there are just a few definitions for armhf missing,
which are only used in the case of cross-building - native builds
work fine. With the following patch, cross-building kernel
packages for armhf works for me, i.e. it results in working
kernel packages for the Raspberry Pi. I would appreciate very
much if somebody knowledgeable about the different armhf
systems/subarchitectures could take a look at the patch and tell
whether it is ok this way or whether there need to be changes
or special cases for other armhf systems/subarchitectures.
Regards,
Karsten
diff -Nur kernel-package-12.036+nmu3/kernel/ruleset/arches/armhf.mk kernel-package-12.036+nmu3.patched/kernel/ruleset/arches/armhf.mk
--- kernel-package-12.036+nmu3/kernel/ruleset/arches/armhf.mk 1970-01-01 01:00:00.000000000 +0100
+++ kernel-package-12.036+nmu3.patched/kernel/ruleset/arches/armhf.mk 2013-10-02 22:02:47.000000000 +0200
@@ -0,0 +1,34 @@
+######################### -*- Mode: Makefile-Gmake -*- ########################
+## armhf.mk ---
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+##
+###############################################################################
+
+### ARMHF
+ifeq ($(strip $(architecture)),armhf)
+ kimage := vmlinuz
+ target = zImage
+ NEED_DIRECT_GZIP_IMAGE=NO
+ kimagesrc = arch/$(KERNEL_ARCH)/boot/zImage
+ kimagedest = $(INT_IMAGE_DESTDIR)/vmlinuz-$(KERNELRELEASE)
+ DEBCONFIG = $(CONFDIR)/config.armhf
+ kelfimagesrc = vmlinux
+ kelfimagedest = $(INT_IMAGE_DESTDIR)/vmlinux-$(KERNELRELEASE)
+endif
+
+#Local variables:
+#mode: makefile
+#End:
diff -Nur kernel-package-12.036+nmu3/kernel/ruleset/architecture.mk kernel-package-12.036+nmu3.patched/kernel/ruleset/architecture.mk
--- kernel-package-12.036+nmu3/kernel/ruleset/architecture.mk 2012-03-04 02:22:23.000000000 +0100
+++ kernel-package-12.036+nmu3.patched/kernel/ruleset/architecture.mk 2013-10-02 22:01:08.000000000 +0200
@@ -59,6 +59,10 @@
ifeq ($(strip $(architecture)),armeb)
include $(DEBDIR)/ruleset/arches/armeb.mk
endif
+ifeq ($(strip $(architecture)),armhf)
+include $(DEBDIR)/ruleset/arches/armhf.mk
+endif
+
##### PowerPC and PowerPC architecture
ifneq ($(strip $(filter ppc powerpc ppc64 powerpc64,$(architecture))),)
diff -Nur kernel-package-12.036+nmu3/kernel/ruleset/misc/kernel_arch.mk kernel-package-12.036+nmu3.patched/kernel/ruleset/misc/kernel_arch.mk
--- kernel-package-12.036+nmu3/kernel/ruleset/misc/kernel_arch.mk 2012-03-04 02:39:27.000000000 +0100
+++ kernel-package-12.036+nmu3.patched/kernel/ruleset/misc/kernel_arch.mk 2013-10-02 21:55:54.000000000 +0200
@@ -56,6 +56,10 @@
KERNEL_ARCH := arm
endif
+ifeq ($(strip $(architecture)),armhf)
+ KERNEL_ARCH := arm
+endif
+
ifeq ($(strip $(architecture)),hppa)
KERNEL_ARCH := parisc
endif
--
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.
Reply to: