Author: nick
Date: 2010-06-21 14:34:07 +0100 (Mon, 21 Jun 2010)
New Revision: 1173
Modified:
balloon/branches/menuconfig/kernel/Makefile
balloon/branches/menuconfig/package/kernel/kernel.mk
Log:
add option to add kernel modules to initramfs when building initrd kernel
Modified: balloon/branches/menuconfig/kernel/Makefile
===================================================================
--- balloon/branches/menuconfig/kernel/Makefile 2010-06-19 13:30:39 UTC (rev 1172)
+++ balloon/branches/menuconfig/kernel/Makefile 2010-06-21 13:34:07 UTC (rev 1173)
@@ -11,7 +11,6 @@
#Actual kernel source dir in which build commands are run
BUILD:=$(RES)/linux-$(KERNVER)
-
all: kernel-tools kernel installer modules
#check build environment (buildenv target)
@@ -25,6 +24,10 @@
CROSSOPTS:=CROSS_COMPILE=$(CROSSNAME)
+DEFCONFIGFILE:=arch/arm/configs/balloon3_defconfig
+MODULESDIR=lib/modules/$(KERNVER)-pxa270/kernel
+DEPMODVER:=$(shell /sbin/depmod --version | cut -d" " -f 2)
+
# CONFIG_OABI_COMPAT=yes is needed for buildroot r18662 to work -
# should be able to drop it at some point
ifeq ($(CROSSNAME), arm-linux-gnueabi-)
@@ -35,8 +38,6 @@
OABICONFIG:=\# CONFIG_OABI_COMPAT is not set
endif
-DEFCONFIGFILE:=arch/arm/configs/balloon3_defconfig
-
$(BUILD)/.config: $(KERNSOURCES) $(RES)/unpacked-$(KERNVER).stamp $(RES)/quilt.stamp
(cd $(BUILD) && $(CROSSOPTS) $(MAKE) $(MAKEOPTS) balloon3_defconfig)
@@ -49,11 +50,45 @@
(cd $(BUILD) && $(CROSSOPTS) $(MAKE) $(MAKEOPTS) $(NOINITRAMFSOPTS)zImage)
cp $(BUILD)/arch/arm/boot/zImage $(RES)/zImageBoot
-#installer version of kernel (including initrd)
-#$(RES)/zImageInitrd: $(KERNSOURCES) $(RES)/zImageBoot $(BUILDDIR)/initrd/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio
-# cp -f $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio $(BUILD)/usr/initramfs_data.cpio && \
-$(RES)/zImageInitrd: $(RES)/zImageBoot $(RES)/rootfs.arm.cpio
+$(RES)/zImageInitrd: $(RES)/zImageBoot $(RES)/modules.tgz $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio
+ rm -rf $(RES)/rootfs.arm.cpio;
+ifeq ($(INITRD_MODULES),y)
+ rm -rf fakeme
+ rm -rf temp
+ mkdir temp
+ echo "\
+ cd temp; \
+ cpio -i -d -H newc -F $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio --no-absolute-filenames; \
+ if [ -f $(CHECKOUT)/initrd/initrdmodules-$(KERNVER)$(VARIANT).list ]; then \
+ MODULES_LIST=$(CHECKOUT)/initrd/initrdmodules-$(KERNVER)$(VARIANT).list; \
+ else \
+ MODULES_LIST=$(CHECKOUT)/initrd/initrdmodules-$(KERNVER).list; \
+ fi; \
+ cat "\$$MODULES_LIST" | while read module; do \
+ echo \"Copying \$$module\"; \
+ mkdir -p $(MODULESDIR)/\$$module && \
+ rmdir $(MODULESDIR)/\$$module && \
+ cp -f $(RES)/modules/$(MODULESDIR)/\$$module $(MODULESDIR)/\$$module; \
+ done; " > fakeme
+ echo "/sbin/depmod -ae -b $(CHECKOUT)/kernel/temp -F $(BUILDDIR)/kernel/linux-$(KERNVER)/System.map $(KERNVER)-pxa270;" >> fakeme
+ echo "case $(DEPMODVER) in 3.*)" >> fakeme
+ echo " if expr `echo $(DEPMODVER) | sed -e"s/3.//;s/[-~\.].*$$//"` \> 4 ;then" >> fakeme
+ echo " sed -i -e"s_kernel_/lib/modules/$(KERNVER)-pxa270/kernel_g" lib/modules/$(KERNVER)-pxa270/modules.dep " >> fakeme
+ echo " fi ;\
+ ;; \
+ 4.*) " >> fakeme
+ echo " sed -i -e"s_kernel_/lib/modules/$(KERNVER)-pxa270/kernel_g" $(BUILDDIR)/kernel/linux-$(KERNVER)/modules.dep " >> fakeme
+ echo "esac " >> fakeme
+ echo "chown -R root:root lib" >> fakeme
+ echo "find . | cpio -o -H newc > $(RES)/rootfs.arm.cpio" >> fakeme
+ chmod +x fakeme
+ fakeroot ./fakeme
+ rm -rf temp
+ rm -rf fakeme
+else
+ cp -f $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio $(RES)/rootfs.arm.cpio
+endif
cp -f $(RES)/rootfs.arm.cpio $(BUILD)/usr/initramfs_data.cpio && \
cp $(BUILD)/usr/initramfs_data.cpio $(BUILD)/usr/initramfs.cpio && \
gzip -f $(BUILD)/usr/initramfs_data.cpio && \
@@ -61,9 +96,24 @@
(cd $(BUILD) && $(CROSSOPTS) $(MAKE) $(MAKEOPTS) $(INITRAMFSOPTS) zImage)
cp $(BUILD)/arch/arm/boot/zImage $(RES)/zImageInitrd
-$(RES)/rootfs.arm.cpio:
+$(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio:
$(MAKE) -C $(CHECKOUT) initramfs
+
+$(RES)/rootfs.arm.cpiox: $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio
cp -f $(BUILDINITRDDIR)/$(BUILDROOTIMAGEPATH)rootfs.arm.cpio $(RES)/rootfs.arm.cpio
+ifeq ($(INITRD_MODULES),y)
+ echo "making initramfs with modules"
+ echo "rm -rf fakeme" > fakeme
+ echo "rm -rf temp" >> fakeme
+ echo "mkdir temp" >> fakeme
+ echo "cd temp" >> fakeme
+ echo "cpio -i -d -H newc -F $(RES)/rootfs.arm.cpio --no-absolute-filenames" >> fakeme
+ echo "rm -rf $(RES)/rootfs.arm.cpio" >> fakeme
+ echo "rm -rf lib/modules; tar -xvzf $(RES)/modules.tgz ; chown -R root:root lib/modules" >> fakeme
+ echo "find . | cpio -o -H newc > $(RES)/rootfs.arm.cpio" >> fakeme
+ chmod +x fakeme
+# fakeroot fakeme
+endif
# we could make another tarball as below, but currently direct copy of list in initrd build.
Modified: balloon/branches/menuconfig/package/kernel/kernel.mk
===================================================================
--- balloon/branches/menuconfig/package/kernel/kernel.mk 2010-06-19 13:30:39 UTC (rev 1172)
+++ balloon/branches/menuconfig/package/kernel/kernel.mk 2010-06-21 13:34:07 UTC (rev 1173)
@@ -20,7 +20,12 @@
endif
zImageInitrd:
+ifeq ($(BR2_INITRD_MODULES),y)
+ echo "make kernel initrd package with modules"
+ ($(MAKE) INITRD_MODULES=y $(MAKEOPTS) -C $(CHECKOUT)/kernel installer)
+else
($(MAKE) $(MAKEOPTS) -C $(CHECKOUT)/kernel installer)
+endif
zImageInitrd-clean: kernel-clean