Search notes:

Linux Kernel

The kernel is responsible for
The kernel itself is loaded as an image file: zImage or bzImage.
The functionality of the kernel can be extended with modules.
Log messages go to /var/log/kern.log.

Kconfig files

A directory within the source tree usually contains (among others) the two files Kconfig and Makefile.
The Kconfig files define configuration symbols. The values might be changed with make menuconfig (or other make targets). The actual values are stored in the .config file which is used to build the kernel.

Rust

Miguel Ojeda leads the Rust for Linux project whose goal is to add support for Rust to the Kernel.
The Kernel is Rust enabled with the config option CONFIG_RUST=y
In June 2022, Linux announced that the Rust branch(?) might be merged already in Version 5.20.

Mailing lists

Mailing lists are the primary form of communication between developers, maintainers and other stakeholders in the kernel.
The mailing list for a given subsystem is found in the MAINTAINERS file (lines starting with L:) - but not every subsystem has a defined mailing list.
Two interesting mailing lists, imho, are:
However… LKML has way too much traffic for anybody to really follow the messages in it.
Archives are found at

TODO

Linux cross reference. Kernel map (graphical front end to cross reference)

UserMode Linux (UML)

Somehow, it is possible to run the kernel as a usermode application, this being referred to as UserMode Linux (UML).

CPU

At any given time, a CPU is in one of the following states:
  • not associated with any process, serving a hardware interrupt;
  • not associated with any process, serving a softirq or tasklet;
  • running in kernel space, associated with a process (user context);
  • running a process in user space.
See also struct cpu

Kernel Mode Setting (KMS)

Modern open source video drivers rely on KMS being enabled.
KMS provides
  • an improved graphical boot with less flickering,
  • faster user switching,
  • a built-in framebuffer console,
  • seamother features.less switching from the console to Xorg, and
  • etc…
KMS conflicts with legacy framebuffer drivers.

Memory

General purpose memory allocation functions are: kmalloc(), kzalloc(), kmalloc_array(), kcalloc(), vmalloc() and vzalloc().
The preferred coding style when allocating memory is:
p = kmalloc(sizeof(*p), …);
q = kmalloc_array(n, sizeof(…), …);
r = kcalloc(n, sizeof(…), …);

See also

Linux kernel compilation
lwn.net summarizes current and planned changes to the kernel.
lwn.net/Kernel/Index covers articles published in the LWN.net Kernel Page (starting in 2004).
With Windows Subsystem for Linux, Version 2, a Linux Kernel is available in Windows.
kernel-ranchu-64, found under Androids SDK's AVD system directory

Links

Linux Data Structures (which I believe is of version 2.0.33).

Index