====== Kernel ====== The kernel kernel is stored in boot: * /boot/vmlinuz - kernel image * /boot/config - configuration * /boot/system.map - symbols table The kernel modules are stored in /lib/modules: * /lib/modules/ Every distribution includes the LInux Kernel. Linux Components * Kernel * executable * kernel modules * User space * coreutils package contains GNU software, things like mv, ls, rm, etc * Desktop environment * not needed for servers * optional for workstations * gnome, kde, etc The kernel source code lives in the linux repository at github owned by Linus Torvalds. https://github.com/torvalds Official releases are hosted at https://www.kernel.org/ There are four different levels of release * longterm - once a year, last one 5.4 on 2019-11-24, EOL Dec 2025 * stable * mainline * prepatch Each distribution vendor maintains its own set of releases. The kernel release number has two parts, before and after the dash. The part after the dash is added by the distribution vendor. $ uname -r # show distribution kernel release number 5.4.0-45-generic If kernel release number is 5.4.0-45-generic, then * 5.4.0-45-generic is the release per Ubuntu * 5.4.0 is the release per the kernel developers used as starting point by Ubuntu 5.4.63 is the latest longterm maintenance release from the developers as of 2020 Sep 5 ===== Hardware to Software ===== The purpose of the kernel is to make the bridge between hardware and software. Resources, devices, virtual devices * CPU * memory * disk I/O * network ===== Interface ===== kernel API https://www.kernel.org/doc/htmldocs/kernel-api/index.html System Calls The Linux API cross over from user space to kernel space using software interrupts or traps userspace programs call kernel functions Library Calls glibc - the GNU C library Commands Programs the a human user can execute. reverse, graphic, top level command, bottom level kernel api exec, read, kill, cp, ls, sh