A friend of mine is stuck with using SUSE for a work project, he needs to modify the stock kernel and so he followed the instructions from SUSE but the resulting kernel is, in his words, gargantuan.<div><br></div><div>Anyone got any ideas on what he has done wrong? Specifically, are there any alternate make targets he should be using instead/as well?</div>
<div><br></div><div>I&#39;ve attached his own description of the problem below.</div><div><br></div><div>Thanks in advance.</div><div><br></div><div>-Michael</div><div><br></div><div>-------------------------------------------------------</div>
<div><br></div><div><div>I have an installation of SLES 11.2 on the x86_64 platform updated to the 3.0.26-0.7 kernel.</div><div><br></div><div>As a part of a project, I need to tweak the kernel configuration and apply a minor patch to a few of the source files.</div>
<div><br></div><div>I did the following (based mostly on the /usr/src/linux/README.SUSE file):</div><div><br></div><div>Copy the source tree to my home directory:</div><div><br></div><div>$mkdir -p ~/builds/kernel/linux-3.0.26-0.7/src</div>
<div>$cd ~/builds/kernel/linux-3.0.26-0.7/src</div><div>$cp -R /usr/src/linux-3.0.26-0.7/* .</div><div><br></div><div>Clone the running system&#39;s configuration and then launch menuconfig to tweak that:</div><div><br></div>
<div>$make cloneconfig</div><div>$make menuconfig</div><div><br></div><div>Make the following changes to the configuration:</div><div>*Change the local version string</div><div>*Enable the TCP MD5 option</div><div>*Enable IPv6 multicast routing</div>
<div>*Eanble IPv6 multicast multi-table support</div><div>*Enable IPv6 PIM-SM</div><div><br></div><div>Make my changes to the sources</div><div>Build and install and make RPMs</div><div><br></div><div>$make</div><div>$make modules_install</div>
<div>$make install</div><div>$make rpm-pkg</div><div><br></div><div><br></div><div>When I do this, the kernel I get is gargantuan compared to the binaries provided by SUSE, even though I am supposedly using the same configuration they used.</div>
<div><br></div><div>For comparison:</div><div><br></div><div>Their /lib/modules directory is about 91M, while mine is 1.8G</div><div>Their /lib/modules/kernel/drivers directory is about 60M, while mine is 1.3G</div><div>Their /lib/modules directory contains 2167 files while mine has 3772</div>
<div>Individual module files are much larger. For example, their kernel/drivers/net/e1000/e1000.ko is 260K while mine is 2M.</div><div>Their initrd file is 7.1M while mine is 14M</div><div>Their vmlinuz...gz file is 4.3M while mine is 43M</div>
<div>The RPMs generated don&#39;t match. SUSE provided kernel-default, kernel-default-base, kernel-devel, and linux-kernel-headers. I got only two (kernel- and kernel-headers)</div><div>The sum total of the SUSE-provided kernel RPMs (kernel-default, kernel-default-base, kernel-devel and linux-kernel-headers) is about 38M. The sum of the two kernel RPMs I got is about 321M</div>
<div><br></div><div><br></div><div>I assume that my build is packed full of debug info and theirs isn&#39;t. Are there alternate make targets I should be using?</div><div><br></div><div>If there are no magic command line parameters to give make, then it would appear that the config file I extracted from /proc/config.gz is not the one SUSE used to compile their kernel. Or at least not for compiling all the modules.</div>
<div><br></div><div>What should I change in the configuration to bring my build down to a reasonable size? There are many symbol/debug options, but I don&#39;t want to just go randomly flipping switches trying to find the magic combination SUSE used.</div>
</div><div><br></div><div><br></div>