Linux kernel is one of the worlds largest open source project. So to play with it, We would be first able to customize and then build(compile) it to our will and wish. Because of its sheer volume, The end developers or kernel hackers mandates an automated tool to ease the customization and build process. This is where Linux kernel build system comes into picture and our today’s topic of discussion. The following video will kick start this article by giving excellent perspective with mind boggling numbers about Linux kernel.
Fundamental to any kind of development are compilers and the underlying platform. Compiler transforms our code into underlying platform and the platform itself is to run the compiled executables. This is also true in case of embedded development. But unlike normal desktop environment we cannot develop a program on an embedded development device because of various limitations of the device. Instead, What we do is write the program on our desktop(X86) and cross compile it for the required target platform. This effectively accomplishes the job of first component, But to run the cross compiled binary we do need the second component, that is, the target platform itself. Earlier, embedded developers had no choice other than using the real developement devices to test their cross compiled binaries. But with the help of QEMU, now we can emulate, most of todays popular target platforms. The main theme of this post is to set up the above said components for ARM developement.
This article is mainly helpful for kernel developers who would like to access Linux (guest) kernel logs using some tool from windows(host) PC. This is one way to see what is happening to the guest OS when the kernel is booting. Usually this information is passed to and from guest and host via a RS232 serial port. This is most commonly seen in linux embedded systems. So, In real world, guest could be an embedded platform like Beaglebone or Raspberry Pi.
Read on →