Re: [PATCH] kernel.spec: xz compress modules on i686 and x86_64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxxxxxx
> https://admin.fedoraproject.org/mailman/listinfo/kernel
_______________________________________________
kernel mailing list
kernel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/kernel





[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux