packaging: move modules from /boot/lib/modules to /boot/modules.img
authorChanho Park <chanho61.park@samsung.com>
Tue, 5 Aug 2014 08:12:00 +0000 (17:12 +0900)
committerChanho Park <chanho61.park@samsung.com>
Thu, 7 Aug 2014 06:17:59 +0000 (15:17 +0900)
The latest e2fsprogs have a functionality to make ext2/3/4 image from directory.
It acts like genext2fs or mkext4fs of android tools. I took some patches for it
from e2fsprogs next branch and it will be merged in next release.

A mobile device tend to locate kernel image and modules in the same partition
because it should be easily recovered when the partition was broken. Thus, I
also located the modules image in the /boot partition instead of /lib/modules
directory. This patch supports making the modules.img from obs/gbs build.

Change-Id: I480837378e07bc327ac2379211893799bb452402
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
packaging/linux-kernel.spec

index 75afafb..5604324 100644 (file)
@@ -28,6 +28,7 @@ BuildRequires: flex
 BuildRequires: bison
 BuildRequires: libdw-devel
 BuildRequires: python-devel
+BuildRequires: e2fsprogs >= 1.42.11
 
 Provides: kernel = %{version}-%{release}
 Provides: kernel-uname-r = %{fullVersion}
@@ -48,6 +49,15 @@ header files define structures and constants that are needed for
 building most standard programs and are also needed for rebuilding the
 glibc package.
 
+%package modules
+Summary: Kernel modules
+Group: System/Kernel
+Provides: kernel-modules = %{fullVersion}
+Provides: kernel-modules-uname-r = %{fullVersion}
+
+%description modules
+Kernel-modules includes the loadable kernel modules(.ko files).
+
 %package devel
 Summary: Prebuilt linux kernel for out-of-tree modules
 Group: Development/System
@@ -95,7 +105,7 @@ QA_SKIP_BUILD_ROOT="DO_NOT_WANT"; export QA_SKIP_BUILD_ROOT
 # 1. Destynation directories
 mkdir -p %{buildroot}/usr/src/linux-kernel-build-%{fullVersion}
 mkdir -p %{buildroot}/boot/
-mkdir -p %{buildroot}/boot/lib/modules/%{fullVersion}
+mkdir -p %{buildroot}/lib/modules/%{fullVersion}
 
 # 2. Install uImage, System.map, ...
 install -m 755 arch/arm/boot/uImage %{buildroot}/boot/
@@ -105,7 +115,7 @@ install -m 644 System.map %{buildroot}/boot/System.map-%{fullVersion}
 install -m 644 .config %{buildroot}/boot/config-%{fullVersion}
 
 # 3. Install modules
-make INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=%{buildroot}/boot/ modules_install
+make INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=%{buildroot} modules_install
 
 # 4. Install kernel headers
 make INSTALL_PATH=%{buildroot} INSTALL_MOD_PATH=%{buildroot} INSTALL_HDR_PATH=%{buildroot}/usr headers_install
@@ -159,12 +169,21 @@ rm -rf %{buildroot}/vmlinux*
 find %{buildroot}/usr/src/linux-kernel-build-%{fullVersion}/tools/perf/scripts/ -type f %{excluded_files} -exec chmod 755 {} \;
 find %{buildroot}/usr/src/linux-kernel-build-%{fullVersion}/scripts/            -type f %{excluded_files} -exec chmod 755 {} \;
 find %{buildroot}/usr                                                           -type f ! -name "check-perf-tracei.pl" -name "*.sh" -name "*.pl" -exec chmod 755 {} \;
-find %{buildroot}/boot/lib/modules/ -name "*.ko"                                     -type f -exec chmod 755 {} \;
+find %{buildroot}/lib/modules/ -name "*.ko"                                     -type f -exec chmod 755 {} \;
 
 # 8. Create symbolic links
-rm -f %{buildroot}/boot/lib/modules/%{fullVersion}/build
-rm -f %{buildroot}/boot/lib/modules/%{fullVersion}/source
-ln -sf /usr/src/linux-kernel-build-%{fullVersion} %{buildroot}/boot/lib/modules/%{fullVersion}/build
+rm -f %{buildroot}/lib/modules/%{fullVersion}/build
+rm -f %{buildroot}/lib/modules/%{fullVersion}/source
+ln -sf /usr/src/linux-kernel-build-%{fullVersion} %{buildroot}/lib/modules/%{fullVersion}/build
+
+# 9. Calculate modules.img size
+BIN_SIZE=`du -s %{buildroot}/lib/modules | awk {'printf $1;'}`
+let BIN_SIZE=${BIN_SIZE}+1024+512
+
+dd if=/dev/zero of=%{buildroot}/boot/modules.img count=${BIN_SIZE} bs=1024
+/usr/sbin/mke2fs -t ext4 -F -d %{buildroot}/lib/modules/ %{buildroot}/boot/modules.img
+
+rm -rf %{buildroot}/lib/modules/%{fullVersion}/kernel
 
 %clean
 rm -rf %{buildroot}
@@ -173,11 +192,14 @@ rm -rf %{buildroot}
 %defattr (-, root, root)
 /usr/include
 
+%files modules
+/boot/modules.img
+
 %files devel
 %defattr (-, root, root)
 /usr/src/linux-kernel-build-%{fullVersion}
-/boot/lib/modules/%{fullVersion}/modules.*
-/boot/lib/modules/%{fullVersion}/build
+/lib/modules/%{fullVersion}/modules.*
+/lib/modules/%{fullVersion}/build
 
 %files
 %license COPYING
@@ -185,8 +207,6 @@ rm -rf %{buildroot}
 /boot/*.dtb
 /boot/System.map*
 /boot/config*
-/boot/lib/modules/%{fullVersion}/kernel
-/boot/lib/modules/%{fullVersion}/modules.*
 
 %files -n perf
 %license COPYING