Booting Linux in QEMU and Writing PID 1 in Go to Illustrate Kernel as Program
9 days ago
- #Operating Systems
- #System Programming
- #Linux Kernel
- The Linux kernel is a binary that can be built and run, not just a mysterious black box.
- A kernel provides an abstraction layer for hardware, managing resources and providing APIs for secure and convenient hardware interaction.
- The kernel is typically located in the `/boot` directory, with files like `vmlinuz` representing the compressed kernel image.
- Experiments can be conducted using QEMU to run the kernel in a virtual environment, demonstrating its functionality without affecting the host system.
- The kernel requires an init process to start after booting; without it, the kernel panics as it cannot mount a root filesystem.
- A simple init process can be written in Go, demonstrating how the kernel transitions from kernel space to user space.
- Creating an initramfs (Initial RAM filesystem) is necessary for the kernel to have access to a filesystem before disk access is fully initialized.
- Key concepts learned include the kernel's role, process IDs (PIDs), the init process, and the distinction between kernel space and user space.