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

Building .ko from from SRPM, what reduces .ko file size between 'make' and RPM?

Hello. I'm attempting a newbie skill building exercise rather than
solving a particular problem, but I'm missing something obvious.
Searching hasnt helped me on this specific point.

I imagine that 'make' of the entire kernel source RPM (at the exact
version as my Fedora 9 precompiled kernels) should closely duplicate
my precompiled kernel modules, for example my ALSA driver module

However as shown by 'ls' at the last paragraph of this email, I notice
that the snd-intel8x0.ko I build using 'make' is 230265 bytes but the
precompiled operational one is *much* smaller at 39592 bytes.

I am afraid to proceed to 'make install' until these files look

Also I notice that if I build the kernel.rpm and then 'rpm -qp --dump'
it, then these file sizes *are* identical.

So I am wondering what affects the size of the .ko file between 'make'
and the built RPM. As a newbie in this area I am far from
comprehending the entire kernel.spec or Makefiles system. So it would
greatly assist me if someone could give me a pointer what to look at

Please note that my aim is not to build an rpm. My aim is to become
knowledgable enough extract a kernel source tree from a srpm, to be
able to 'make' it, and ultimately to be able to 'make' subsections of
it, in particular make and install an individual module, without
building an rpm. I understand the consequences for my rpm database.

Using diff on the output from 'modinfo' on each file gives only these
< filename:
> filename:       /lib/modules/2.6.25-14.fc9.i686/kernel/sound/pci/snd-intel8x0.ko
< vermagic:       2.6.25 SMP mod_unload 686 4KSTACKS
> vermagic:       2.6.25-14.fc9.i686 SMP mod_unload 686 4KSTACKS

I'm using the reference
http://www.tldp.org/LDP/lkmpg/2.6/html/x380.html ("Linux Kernel Module
Programming Guide: Building modules for a precompiled kernel").

My complete approach is reproduced below. Probably you can skip the
first 3 paragraphs that just show my rpmbuild targets. ~/rpmbuild is a
symlink due to insufficient free space on my home drive.

By the way, I live in a remote location with poor quality dialup
internet so sadly I cannot possibly keep my installation at the latest
update of all packages between DVD releases.

I'll be really grateful for any tips on the above, thanks. David


[~]$ uname -a
Linux kablamm.localdomain 2.6.25-14.fc9.i686 #1 SMP Thu May 1 06:28:41
EDT 2008 i686 i686 i386 GNU/Linux

[~]$ ln -v -s -f -T "/BIG/HOME/david/rpmbuild" "/home/david/rpmbuild"
`/home/david/rpmbuild' -> `/BIG/HOME/david/rpmbuild'

[~]$ cat .rpmmacros
%_topdir      %(echo $HOME)/rpmbuild
%_smp_mflags  -j3
%__arch_install_post   /usr/lib/rpm/check-rpaths   /usr/lib/rpm/check-buildroot
%packager	David
%distribution	Fedora %(tr -dc [0-9] </etc/fedora-release)
%vendor		David
%_home		%(echo $HOME)
%_signature	gpg
%_gpg_path	%{_home}/.gnupg
%_gpgbin	/usr/bin/gpg
%_gpg_name	%( gpg --list-keys | sed -n "s/^uid *//p" | head -1 )
%_rpmdir	%{_topdir}/RPM
%_srcrpmdir	%{_topdir}/RPM
%_rpmtopdir	%{_topdir}/%{name}-%{version}-%{release}
%_specdir	%{_rpmtopdir}
%_sourcedir	%{_rpmtopdir}
%_tmppath	%{_topdir}/TMP
%_builddir	%{_topdir}/BUILD

[~]$                          rpm -Uvh kernel-2.6.25-14.fc9.src.rpm

[~]$                          cd ~/rpmbuild/kernel-2.6.25-14.fc9

[kernel-2.6.25-14.fc9]$       rpmbuild -bp "--target=$(uname -m)" kernel.spec

[kernel-2.6.25-14.fc9]$       cd

[linux-2.6.25.i686]$          cp /boot/config-2.6.25-14.fc9.i686 .config

[linux-2.6.25.i686]$          make

[linux-2.6.25.i686]$          find ~/rpmbuild/BUILD/kernel-2.6.25/
-name snd-intel8x0.ko

[linux-2.6.25.i686]$          ls -l
-rw-rw---- 1 david david 230265 2009-02-26 20:24
-rwxr--r-- 1 root  root   39592 2008-05-01 20:49

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