You can play around with many options like kernel ​version and glibc etc.. however for building the kernel itself none of these matter. ​ The only option that may conceivably make a difference is the GCC version, particularly if you are building a particularly old kernel version which doesn'​t support later versions of GCC. For this demonstration we can just leave all defaults though. ​ Save the config and then:

+

To make the compiler we are about to build behave more like the Slackware one we want to use glibc instead of the default uClibc-ng (which is more suited to embedded applications):​

+

+

<​code>​Toolchain -> C library (glibc)</​code>​

+

+

If you don't do this you will need to disable stack protection in your kernel compile and we want to keep a standard Slackware config, because we're true Slackers heart-and-soul right? :).

+

+

You can play around with many other options like kernel ​header versions ​however for building the kernel itself none of these matter. ​ The only option that may conceivably make a difference is the GCC version, particularly if you are building a particularly old kernel version which doesn'​t support later versions of GCC. For this demonstration we can leave the defaults though. ​ Save the config and then:

You should now have a .config in /​usr/​src/​linux which says '​CONFIG_64BIT is not set' at the top.

+

You should now have a .config in /​usr/​src/​linux which says '​CONFIG_64BIT is not set' at the top. That will replace your old 64-bit kernel .config that you had before (included from the '​K'​ disk set). Obviously copy the kernel someplace else if you wanted to keep that!

==== Kernel compilation ====

==== Kernel compilation ====

Line 62:

Line 68:

<​code>​$ make bzImage CROSS_COMPILE=i486-linux- ARCH=i386</​code>​

<​code>​$ make bzImage CROSS_COMPILE=i486-linux- ARCH=i386</​code>​

-

Copy the built kernel to a 32-bit machine and it should boot. If you want to compile/​install the modules as well, just make sure you don't forget to use the same CROSS_COMPILE and ARCH variables every time you specify the make commands, everything should use the cross-compiler: ​'make modules', 'make modules_install' ​and so on. You will probably get away without these appended for some commands like 'make clean',​ but it's safest to just include them whenever you do anything ​on that kernel, they certainly won't hurt.

+

Copy the built kernel to a 32-bit machine and it should boot. If you want to compile/​install the modules as well, just make sure you don't forget to use the same CROSS_COMPILE and ARCH variables every time you specify the make commands, everything should use the cross-compiler:​

+

+

<​code>​$ ​make modules ​CROSS_COMPILE=i486-linux- ARCH=i386

+

$ make modules_install ​CROSS_COMPILE=i486-linux- ARCH=i386</​code>​

+

+

and so on. You will probably get away without these appended for some commands like 'make clean',​ but it's safest to just include them whenever you do any work on that kernel, they certainly won't hurt.