Linux start_kernel
The function a machine passes through on its way to userspace.
Linus Torvalds and others
In August 1991 Linus Torvalds told a Minix newsgroup that he was making a free operating system for 386 machines. He described it as a hobby, and he did not promise a professional product. The post is famous because the hobby became the kernel inside a great share of the world's servers, phones, and appliances. The code that post pointed toward was GPL, and the kernel has stayed GPL version 2 only. The "only" is a decision, not a leftover. Version 2 does not automatically become version 3. A later, different bargain with users and manufacturers was declined. The license file says so, and the notice on this product page says so.
Booting that kernel is a relay. Firmware, BIOS or UEFI, finds a bootloader. The bootloader finds a compressed image. The image decompresses itself into memory and jumps at architecture-specific code, the part that knows this particular machine's registers and memory map. That code does the least it can and then calls start_kernel. The function lives in init/main.c. It is the handoff from the part of the boot that is allowed to be strange, because hardware is strange, to the part that is common C.
At the moment of the call, the system is not a system yet. Interrupts are still off. The command line the user or the bootloader supplied has not been fully parsed. The scheduler is not running, so there is no pretense of multitasking. Memory management is not finished. start_kernel is a long stair of calls that builds those services in an order the rest of the kernel can survive. Architecture setup. The command line. Interrupts, once it is safe. The memory allocator. The scheduler. Only then does rest_init spawn the first kernel threads and, eventually, the path to userspace, where init becomes a process and the machine starts to look like Unix.
The bars are not the short function from 1991. They are the opening of the current one. Decades of architecture hooks, security initialization, and memory setup have lengthened it. A modern start_kernel has to speak to hardware the hobby kernel never saw, and it has to refuse states the hobby kernel never feared. The silhouette is still a stack of calls, one after another, before the system is allowed to breathe. In the picture that stack is a tall run of names and comments. Comments are gray. Calls are the color of names. The letters are gone. What remains is the order, which is the only part of a boot a mug can honestly show. You cannot print a boot.
GPL-2.0 asks a distributed work to carry the license. The license is a long text, longer than a cup, and it includes obligations about source that a ceramic object cannot meet by itself. A mug cannot carry that text, so the notice stays on the product page: the kernel is GPL version 2 only, the copyright is Linus Torvalds and others, and a lawyer cleared the listing on the condition that the notice stays put. This essay is not a substitute for the license. It is the reason the function was chosen. The function is the throat of the boot. Everything before it is firmware and assembly. Everything after it is a machine with processes.
People meet Linux as a distribution, with a package manager and a desktop, or as a cloud image that already booted. start_kernel is the last place where the romance of "it is just a program" is still visibly true. It is a C function. It calls other C functions. It has a file. The file is maintained by a crowd, which is why the credit says Torvalds and others, not Torvalds alone. The first release was his. The opening lines of today's function are a collaboration that never stopped accepting patches. The bars record a moment in that collaboration, the current opening, not a museum copy of the first week's source. The license on the page is what makes the recording allowed.
The opening is enough of a portrait because a boot is an order. Show the first calls and you have shown the promise: nothing fancy happens until the plain things have happened. The rest of main.c is the same promise kept at greater length. The mug stops where the shape is already unmistakable, a column of work done before userspace exists.