-   Slackware (
-   -   Cross-compile a kernel for Slackware from Slackware64 multilib (

piratesmack 07-02-2011 09:55 PM

Cross-compile a kernel for Slackware from Slackware64 multilib
I have a low power netbook running Slackware 13.37 and a much faster desktop running Slackware64 13.37.

The netbook takes about 30 minutes to build a minimal Linux kernel, while the desktop can build the same kernel in only a few minutes.
So I'd like to do my kernel builds on the faster desktop.

If I went multilib on the Slackware64 desktop, would I be able to build a kernel for Slackware32?
Or is a slack32 chroot/VM my only option?


sairum 07-03-2011 06:05 AM

This is amazing, but I was looking precisely for the same answer! I've got a 901 EEE-PC (ATOM 32bit) and slack 13.37 64bit in all my computers but this one (which, of course, is now running slack 13.37 32bit). So, seeing this post I decided to go ahead and try cross-compilation. After a few tries, this is how I got my 901 running a trimmed and 'tailor-made' kernel.

IMPORTANT NOTE: this worked in a multilib Slackware 64bit system. It may or may not work on pure Slackware 64 bit systems.

As root (obviously) do


and then

#make menuconfig ARCH=i386

The ARCH=1386 is important . Make sure that in the kernel's configuration menu "Executable file formats / Emulations --->" there is no option "IA32 Emulation (NEW)". This means that everything is OK. You probably know this already, but just go to "General setup --->" and fill something like "eee-pc" in "Local version - append to kernel release". This way the modules tree will not be overwritten in the host machine.

Now do (the -j 8 is optional, just to take advantage of a 4 core CPU)

#make all ARCH=i386 -j 8


#make modules_install ARCH=i386

Then just copy the image (called bzImage) in /usr/src/linux- to somewhere safe (mine goes to the USB Pen directly).

cp /usr/src/linux- /media/USB-DISK

To be sure that the image is a 32bit executable go to /usr/src/linux- and do

#file bzImage

The result should look like this (note the 'x86 boot executable')

bzImage: Linux kernel x86 boot executable bzImage, version (root@calypso) #8 SMP PREEMPT Sun Jul 3 10:33:16, RO-rootFS, root_dev 0x801, swap_dev 0x1, Normal VGA


#tar zcf eee-pc.tgz /lib/modules/

Copy that to the USB and proceed with the install. I suppose you know what to do on the Notebook!

Mine is now working flawlessly with a costumed kernel cross-compiled ina 64bit machine


piratesmack 07-03-2011 07:07 AM

Awesome! Thanks.

I'll install the multilib packages and give it a try now.

piratesmack 07-03-2011 08:18 AM

It works :)

I just did:

$ i386
$ uname -m # should output "i686" now
$ . /etc/profile.d/

And then built the kernel just like I normally would.

All times are GMT -5. The time now is 07:10 AM.