I asked on Twitter today what Linux things they would like to know more about. I thought the replies were really cool so here’s a list (many of them could be discussed on any Unixy OS, some of them are Linux-specific)

tcp/ip & networking stuff

what is a port/socket?

seccomp

systemd

IPC (interprocess communication, pipes)

permissions, setuid, sticky bits, how does chown work

how the shell uses fork & exec

how can I make my computer a router?

process groups, session leaders, shell job control

memory allocation, how do heaps work, what does malloc do?

ttys, how do terminals work

process scheduling

drivers

what’s the difference between Linux and Unix

the kernel

modern X servers

how does X11 work?

Linux’s zero-copy API (sendfile, splice, tee)

what is dmesg even doing

how kernel modules work

embedded stuff: realtime, GPIO, etc

btrfs

QEMU/KVM

shell redirection

HAL

chroot

filesystems & inodes

what is RSS, how do I know how much memory my process is using

iptables

what is a network interface exactly?

what is syslog and how does it work?

how are logs usually organized?

virtual memory

BPF

bootloader, initrd, kernel parameters

the ip command

command what are all the files that are not file files (/dev, stdin, /proc, /sys)

dbus

sed and awk

namespaces, cgroups, docker, SELinux, AppArmor

debuggers

what’s the difference between threads and processes?

if unix is text-based, how do desktop environments like GNOME fit in?

how does the “man” system work.

kpatch, kgraph, kexec

more about the stack. Are C vars really stack slots? How tf do setjmp and longjmp work?

package management

mounts and vfs

this is great for so many reasons!

I need to draw 11 more drawings about Linux this month and these are such great ideas there are many things I don’t know on this list and it’s a cool reminder of how much interesting stuff there still is to learn! A few of these I barely even know what they are (dbus, SELinux) or only have a pretty sketchy notion (seccomp, how X11 works, many more) it’s also a cool reminder of how far I’ve come – I at least know where to start with most of the things on this list, even if I definitely could not explain a lot of them in detail without looking some stuff up.

Also I sometimes want to remind people that you too could write interesting blog posts / drawings on the internet – for instance “what is dmesg even doing” is an interesting topic, and totally possible to learn about! (I just read dmesg on Wikipedia and now I know more!)