diff options
Diffstat (limited to 'index.md')
-rw-r--r-- | index.md | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/index.md b/index.md new file mode 100644 index 0000000..bd6fffb --- /dev/null +++ b/index.md | |||
@@ -0,0 +1,88 @@ | |||
1 | % WTF is Linux | ||
2 | |||
3 | > What I cannot create, I do not understand. | ||
4 | > | ||
5 | > --- <cite>Richard Feynman, 1988</cite> | ||
6 | |||
7 | TODO: add the LM fonts referenced in the CSS | ||
8 | |||
9 | TODO: reference a mono font in the CSS | ||
10 | |||
11 | TODO: fix TOC CSS | ||
12 | |||
13 | TODO: have a POSIX / UNIX / Linux section | ||
14 | |||
15 | TODO: have a QEMU section | ||
16 | |||
17 | TODO: specify dependencies | ||
18 | |||
19 | TODO: Add a plan checklist? | ||
20 | |||
21 | TODO: fix pandoc\'s vimwiki (syntax highlighting, quotes) | ||
22 | |||
23 | TODO: Link manpages | ||
24 | |||
25 | TODO: Add pretty pictures | ||
26 | |||
27 | The Linux Kernel | ||
28 | ---------------- | ||
29 | |||
30 | Main article: [kernel](kernel.md) | ||
31 | |||
32 | The Linux kernel is the glue between the hardware and the user space | ||
33 | programs. | ||
34 | |||
35 | Each time a user program needs to access the hardware (e.g. hard drives, | ||
36 | network card), it has to go through the kernel through system calls (e.g. | ||
37 | read/write on a file, `sendto`/`recvfrom` on a socket). | ||
38 | |||
39 | It also decides how processes are run, and is in charge of enforcing | ||
40 | security. | ||
41 | |||
42 | The filesystem | ||
43 | -------------- | ||
44 | |||
45 | TODO: link to main article | ||
46 | |||
47 | A filesystem is a way of organizing data in the form of files and | ||
48 | directories. Another way to see it is that since hard drives stores only | ||
49 | bytes, it is the responsibility of the filesystem to organize these | ||
50 | bytes such that the kernel can interpret them as files and directories | ||
51 | and present them to the user (TODO: link mount). | ||
52 | |||
53 | Init | ||
54 | ---- | ||
55 | |||
56 | TODO: link to main article | ||
57 | |||
58 | The init program is the first user-space program that the kernel | ||
59 | launches on boot. Every other program is launched either by init or a | ||
60 | child of init (direct child or transitive child). Since init is the | ||
61 | first program launched it always has a PID of 1. | ||
62 | |||
63 | TODO: link to first steps to "user-space booting" | ||
64 | |||
65 | The Shell | ||
66 | --------- | ||
67 | |||
68 | TODO: link to main article | ||
69 | |||
70 | A shell is a programming language whose main goal is to launch other | ||
71 | programs. | ||
72 | |||
73 | Special filesystems | ||
74 | ------------------- | ||
75 | |||
76 | Some filesystem aren't used to store data, but instead to communicate | ||
77 | with the kernel. This allows doing various things using only the | ||
78 | `read`, `write`, and other file-related system calls. | ||
79 | |||
80 | For example, you can list USB devices by listing the content of the | ||
81 | directory `/sys/bus/usb/devices/`. | ||
82 | |||
83 | TODO: add links to article with list of common special filesystems. | ||
84 | |||
85 | Networking | ||
86 | ---------- | ||
87 | |||
88 | TODO: quickly explain static IP vs DHCP, networking interfaces | ||