Things to learn about Linux
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 - 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!)