Probably the easiest way to start kernel programming is to write a module – a piece of code that can be dynamically loaded into the kernel and removed from it. There are limits to what modules can do – for example, they can’t add or remove fields to common data structures like process descriptors. But in all other ways they are full-fledged kernel-level code, and they can always be compiled into the kernel (thus removing all the restrictions) if needed. It is fully possible to develop and compile a module outside the Linux source tree (this is unsurprisingly called an out-of-tree build), which is very convenient if you just want to play a bit and do not wish to submit your changes for inclusion into the mainline kernel.
While Scratch may seem like a very simplistic programming language that’s just for kids, you’d be wrong to overlook it as an excellent first step into coding for all age levels. One aspect of learning to code is understanding the underlying logic that makes up all programs; comparing two systems, learning to work with loops and general decision-making within the code.
A precursory glance at the above screenshot might give the impression that this is yet another Ubuntu Linux review. However, a closer look at the logo in the bottom left corner reveals that nothing could be farther from the truth. Today we’ll be taking a quick look at the Unity desktop environment on Arch Linux.