Mark Eschbach

Software Developer && System Analyst

Linux

Linux is a *nix kernel using a monolithic architecture with dynamic module loading/linking. The system was originally loosely based off fo the MINIX style system targeting the IA32 architecture (at the time 80386). Originally released in 1993, Linux has since become the dominate player in the *nix arena, surpassing it's open source siblings FreeBSD and OpenBSD.

KB Articles

  • Encrypted Virtual Volumes
  • SystemD - General over of the SystemD orchestration and maanagement system.
  • Docker - A kernel-level virtualization technology utilizing a jailed user land and associated tooling to make it easy to move the containers around.

Notes

  • /proc/filesystems contains a list of file system drivers supported by the currently running kernel.
  • OverlayFS (a potential file system used by Docker) was first added in v3.18 of the linux kernel.
  • There are two types of RAM backed file systems in Linux. The earliest is ramfs which is backed by the file system cache and is otherwise unbound. The tmpfs appeared later, swapped backed, and may be limited in size. Reference

Distributions

Linux is technically just the kernel and core libraries required to interface with the kernel. Despite being a monolithic kernel it must be mated with a userland to execute your applications, called distributions in the Linux parlance. One major dimension of classifying userland environments is which C library is used to interface with the kernel. Another is the package management system utilized to deal with dependencies.

LibC implementations

Generally a progrma compiled against one flavor of libc will not be binary compatible with another.

  • glibc is most common is server and desktop environments. This a fully featured libc provided by GNU providing most of the functionality you would expect from a modern C runtime environment. Many distributions use this library in a dynamic linking configuration.
  • musl-libc is common in lightweight or embedded environments such as Alpine Linux or DD-WRT. Generally the library is statically linked and supports a large array of hardware architectures.

To be organized later.

  • CoreOS is a Linux distribution originally intending to provide a bare bones fault tolerant operating system. It was meant to be a building block to deploy the likes of Kubernetes and other systems on top of.
  • Sockets in TIME-WAIT state can be viewed via ss(2) using the options set: -tan. Pipe this through grep TIME-WAIT with wc -l to get the count of sockets in wait. Source: Coping with the TCP TIME-WAIT state on busy Linux servers
  • The Definitive Guide to Linux System Calls - Great article on the System call interface; although it leaves some gaps around segment descriptors and memory management.