How can Linux run on different microprocessors? Is the Linux kernel being compiled at installation each time?

4 Answers 4


Each compiled/installed kernel image is built for one specific microprocessor (or microprocessor family usually).

The source code is partly hardware-independent (= many drivers, schedulers, ...) and partly platform specific (= low-level interaction with hardware, ...), but the resulting binary is always specific for one architecture.


Linux kernel is, as each compiled program, platform dependent.

Kernel hackers are very skilled coders, so a huge part of the kernel code is written in a platform-aware way (by the use ho pre-processor macro for example), the remaining part has to be architecture dependent either for performance issues or because is is bounded to some hardware feature not present on other archs, and so on.

This is not generally a limit in the ability of compiling a kernel on arch A and produce a kernel that will run on arch B, this process is known as cross-compilation, and is made by means of a cross-compiler

So the answer is that it has not to be compiled at installation time, because it can be compiled or cross-compiled by your distro vendor. You could re-compile it on your own machine if you need to customize it, of couse.


Usual steps to get linux working on particular platform:

  • Download kernel sources
  • Download specific platform patches (for example, for Atmel's AT91RM9200 ARM CPU)
  • Apply official/non-official/your patches
  • Download crosstool-ng or similar tool & build your crosscompiler/libraries
  • Build your kernel
  • Assembly/update/build your root manually or using scripts/toolies
  • Transfer your kernel & root FS to your platform using either bootloader/JTAG/copying/other methods.
  • Done

Repeat for each platform.

  • Clarification: this isn't something that would be done by the end user, but by someone porting Linux to a new kind of system.
    – pjc50
    Commented Jan 24, 2012 at 10:47

It is normally compiled before installing. But yes it's compiled for each platform separately.

  • Actually, it's always compiled before installing. How would you install it without compiling it ;-) ?
    – sleske
    Commented Sep 30, 2009 at 11:03

You must log in to answer this question.