On Tue, May 06, 2014 at 01:02:24PM -0400, Kyle McMartin wrote:
Pretty grody, but it seems to be working... it has to happen after
module signing (obviously) and after find-debuginfo.sh runs as well, so
tacking it onto the end seems sensible, and then just fixing up the file
lists as we go. Provides a nice tidy savings to the disk footprint:
kyle@dreadnought:~% for i in kernel-core-3.15.0-0.rc3.git4.1.fc21.x86_64.rpm \
kernel-core-3.15.0-0.rc3.git4.1.fc21.x86_64.rpm.1; do \
rpm -qip $i | grep '^Size'; done
Size : 43011603
Size : 81106737
Nice!
kmod has handed .xz and .gz modules for a long time now, and can
cope.
I was thinking we might also %ghost the .ko, and have a %post install
script that un-xz the modules in /proc/modules, but none of them are big
enough for that to be worthwhile I think (maybe XFS, but I doubt it.)
Sounds reasonable.
I'll play around with this a bit tomorrow, but I like the idea. Out of
curiosity, do you know if this has noticable impacts on boot times? I
wouldn't think it would be drastic.
--Kyle
--- a/kernel.spec
+++ b/kernel.spec
@@ -12,8 +12,14 @@ Summary: The Linux kernel
# architectures are added.
%ifarch %{ix86} x86_64
%global signmodules 1
+%global zipmodules 1
%else
%global signmodules 0
+%global zipmodules 0
+%endif
No armv7hl? Curious if those boards would benefit from the size savings
as well.
+
+%if %{zipmodules}
+%global zipsed -e 's/\.ko$/\.ko.xz/'
%endif
# % define buildid .local
@@ -1713,9 +1719,9 @@ BuildKernel() {
# Make sure the files lists start with absolute paths or rpmbuild fails.
# Also add in the dir entries
- sed -e 's/^lib*/\/lib/' $RPM_BUILD_ROOT/k-d.list >
../kernel${Flavour:+-${Flavour}}-modules.list
- sed -e 's/^lib*/%dir \/lib/' $RPM_BUILD_ROOT/module-dirs.list >
../kernel${Flavour:+-${Flavour}}-core.list
- sed -e 's/^lib*/\/lib/' $RPM_BUILD_ROOT/modules.list >>
../kernel${Flavour:+-${Flavour}}-core.list
+ sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/k-d.list >
../kernel${Flavour:+-${Flavour}}-modules.list
+ sed -e 's/^lib*/%dir \/lib/' %{?zipsed} $RPM_BUILD_ROOT/module-dirs.list
> ../kernel${Flavour:+-${Flavour}}-core.list
+ sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/modules.list >>
../kernel${Flavour:+-${Flavour}}-core.list
Hm. This makes me wonder if the auto-module-Provides thing we're
working through now will be impacted. I'll have to go look at what you
did in RPM to see what it's looking for to create those, and when.
josh
# Cleanup
rm -f $RPM_BUILD_ROOT/k-d.list
@@ -1836,6 +1842,9 @@ popd
%{modsign_cmd} signing_key.priv.sign signing_key.x509.sign
$RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ \
fi \
fi \
+ if [ "%{zipmodules}" -eq "1" ]; then \
+ find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs xz; \
+ fi \
%{nil}
###
_______________________________________________
kernel mailing list
kernel(a)lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel