Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What parts of Linux kernel can I read for fun? [closed]

People also ask

How do you read a kernel?

To check Linux Kernel version, try the following commands: uname -r : Find Linux kernel version. cat /proc/version : Show Linux kernel version with help of a special file. hostnamectl | grep Kernel : For systemd based Linux distro you can use hotnamectl to display hostname and running Linux kernel version.

What contains the Linux kernel?

The kernel file, in Ubuntu, is stored in your /boot folder and is called vmlinuz-version.

What are two types of Linux kernels?

Two main types of kernels exist - monolithic kernels and microkernels. Linux is a monolithic kernel and Hurd is a microkernel. Microkernels offer the bare essentials to get a system operating.


I would recommend looking at LXR. It makes it easier to follow the flow of the code (you do not have to search for each function that is called — well, you have, but the site does it for you).

Some starting points, for the current version (2.6.30):

  • start_kernel() — think of it as the kernel equivalent of main(). This function initializes almost all the kernel subsystems; follow it to see in code what you see scrolling on the screen during the boot.
  • entry_32.S — system calls and interrupts (x86-32 version, which should be nearer what you know; note the use of the AT&T assembly dialect instead of the Intel dialect you might be more used to).
  • head_32.S — the kernel entry point. This is where the kernel starts after switching to protected mode; in the end, it will call start_kernel().
  • arch/x86/boot — the real-mode bootstrap code. It starts in assembly (boot/header.S), but quickly jumps into C code (starting at boot/main.c). Does the real-mode initialization (mostly BIOS calls which have to be done before switching to protected mode); it is compiled using a weird GCC trick (.code16gcc), which allows the generation of 32-bit real-mode code.
  • arch/x86/boot/compressed — if you ever wondered where does the "Decompressing Linux..." message comes from, it is from here.

Myself, I've always found the task scheduling code a bit of a hoot :-/

Methinks you need to get yourself a hobby outside the industry. Or a life :-)


The comments in the kernel can be pretty funny. There's some tips on where to find the best ones on kerneltrap.

arch/sparc/lib/checksum.S- /* Sun, you just can't beat me, you just can't. Stop trying, arch/sparc/lib/checksum.S: * give up. I'm serious, I am going to kick the living shit arch/sparc/lib/checksum.S- * out of you, game over, lights out.*/


linux-0.01.tar.gz is Historic Kernel and good for start
it is simple and tiny and better for start reading
(also it have void main(void) Instead of start_kernel() lol :D )