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


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.

| improve this answer | |

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.

| improve this answer | |

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.

| improve this answer | |
  • 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 Jan 24 '12 at 10:47

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

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy