Everything you always wanted to know about computers... 9 w# r0 L3 Z3 m/ l& D& y
INTRODUCTION
s: k0 }; M% Y8 XBIOS: Hmm... I'm waking up. Linux Loader, are you there ? ! B4 b( Y! N1 I
LILO: Hmm... Yes, I'm here. How do you do ? It's always a pleasure to work + c" T% b: A' |0 j4 f C; ~2 z
with you. ' F9 }: y# d2 v3 p6 z4 {6 r
Let's load the kernel and launch init, the Mother of All Processes... q, m" \1 h% M; y6 H1 I# G
INIT PROCESS: Hmm... Thanks Lilo. Let's initialize the system, mount the + M7 l! [9 p$ w& \# k, a
file-systems and launch one hundred daemons. OK, now I'm ready for logins. ; ?! C8 o( D: S0 B5 p' r
LOGIN: Hey, I'm receiving a login request from user thierry, password guvreel.
! F: X6 K: m+ S7 `& |& `, nINIT PROCESS: Ha ha ! This user is stupid, his password is just his user name
' k, M3 r1 u$ h- zwith a ROT13 encoding. Let's make fun of him. - `+ v7 }; q) g g# f
USER THIERRY: Hello everybody, please be kind with me today. I have a lot of 8 N. X) M- x) h/ D- A
serious things to do. 5 E. |# q. X% a u
1 W7 m1 N ]# s$ r3 N ) N/ k9 H* J& e. |4 f
CHAPTER I - A Real Programmer
) G- @/ M4 p& |, oUSER THIERRY: I'll start with that C++ program I have been trying to write
% a) i6 G7 v& ]6 j1 i! F4 tfor the last fifteen days. gcc, could you please compile it for me ? ( N9 U8 }1 O0 z8 R3 B
GCC COMPILER: Very well, sir. So, your program is myproc.C. Let's parse it.
! i$ O) S0 w! m' f# OPreprocessor directives, class declarations, comments, type declarations
; q- Y8 E% J& q/ D... Well, what is the purpose of this program ? Method declarations,
3 Y- }+ x" m. a+ @( B* Rother comments, macros... Hey, there are only declarations, no real code 8 p* D$ e7 q5 _/ S! V4 |" z% F
to do some real work. I'm completely lost in your code ! 5 G+ A/ R- W2 ~6 f" O+ g' R
Each time I compile C++ code, I regret I'm not a Lisp interpreter. & g& c/ D% _' @% s# H' E* C
USER THIERRY: Oh, please, try another pass. I remember I wrote some real code ( F8 @3 }! U" m$ F' R
around line 1764.
. |' ]6 D: N# n. ^ F: @: R) Y! FGCC COMPILER: Line 1764 says: cout << "Hello, world" << endl. You're right, " z c' m: K" O$ M' {2 D
that is a piece of real and useful code, with no syntax error. Let's `5 Z: G# l* ^3 U( W" m
build and link that program...
6 W7 o, O4 Q! oNow it's finished, here is your executable. ) x( P) K6 M5 a- l B
USER THIERRY: Good, now I'll run it.
' h+ F% k) w. f& F; q6 g) J* J; YMYPROG PROCESS: Hmm... I'm waking up. I am a C++ program, so I will first % m" b/ U. Y6 @7 }
create a few objects which will consume a lot of memory for no reason 2 d/ c/ B2 O2 i" [
at all. 7 _& T2 m# d _% u H
C++ OBJECT #1: I'm hungry ! Gimme memory ! ' [8 M4 ~2 b# _4 e+ K
C++ OBJECT #2: Memory ! I need more memory ! , [( O" z1 K% G! N( d: x
MYPROG PROCESS: Object #1, please free some memory for object #2. $ v! V2 d/ I$ B1 L
C++ OBJECT #1: No, I was programmed to eat memory and never release it. My q1 p1 m& l. w! _
programmer is an illiterate who has learnt C++ because it came before
: ~1 Y. E4 l" H7 I( Y: {Visual Basic in the dictionary. / J' a( m; X. J0 E
SWAP PROCESS: EMERGENCY ! You are running low on memory. You have already used $ b4 K' l* g' V2 |
all of the swap space although you have just started !
1 B% N1 S- C: H% o9 O( F. ~; e/ nMYPROG PROCESS: Object #2, you should really stop using all that memory or I'm 4 j) O. w% t$ q
going to install a garbage collector.
. D4 U9 a. k0 `' S' u5 u4 zC++ OBJECT #2: Never ! Garbage collectors are nazis who exterminate innocent 9 |% H* R2 l/ `: i: ]: e
objects and variables ! I'd rather dump core.
- Y, i) y% T+ U: X7 I" A[ noise of a core dump onto the hard disk ] , _1 f0 Z3 }% \7 w* f4 N
USER THIERRY: Oh, oh ! My program has crashed before doing anything 8 T: r9 [3 e6 }2 h) o
interesting. I am very surprised. , T: q c6 m) P' T: }
1 T0 a0 X9 [% a3 t: J! m' N
2 _% ? d# p5 I2 ECHAPTER II - Sending mail
1 G" G6 S3 e. `9 ~! aUSER THIERRY: That's enough, I'll just send an email to the cpp-help mailing 8 l7 W+ V2 ^8 F! U2 j+ t
list, and maybe some C++ guru will have a solution for me. 8 z) ]0 O2 D( s7 d, B
SENDMAIL DAEMON: Hello, this is sendmail, I'm listening to all your requests,
6 L; v' A: x [) c: E, r5 Y zday and night, on port 25. What can I do for you, sir ?
) H% ^/ T. [7 A: KUSER THIERRY: Please send this email for me. 9 ~) z% H; d" q5 I, _7 Z/ r
SENDMAIL: Certainly, sir. Let's see... "It does not work, please help". Is
# k, j0 R7 V6 h* x2 H; G9 A2 q$ H, jthat all, sir ? Express delivery or general delivery ? Express delivery, % t: @; z5 H9 [! w
yes, of course. So the address is cpp-help@psy.doctor.com, and the sender
! i$ r1 B N* Y7 G7 V9 T# F& His Sucker. Is it correct ? ; ]6 q2 Y+ Z; O$ t
USER THIERRY: What ? No, my name is Thierry, not Sucker. / u. U. \1 G1 y) _- R! M1 Q+ c
SENDMAIL: I'm sorry, sir, but I have been configured to rewrite your name as
3 ]' y4 w& s2 z$ G" A4 |& NSucker in your outgoing emails. Have you read my documentation ? . h1 v( V0 l2 A C2 J, }: y
USER THIERRY: Yes, of course. When I installed you, I read every man page, % H3 R* W% y0 L7 J; ~
user guide and HOWTO before editing your configuration file...
, d) E0 ~" _) v$ S) y4 P* l, ASENDMAIL: What ? Did you modify a Sendmail configuration file by hand ? It's " {& Y) [2 k% z% u3 W( m9 ^! ~
far too complicated for a normal human being, don't you know that ? & ~5 H- y9 m: @1 c& w% D8 `
USER THIERRY: I only followed the instructions...
/ R9 ?, o5 Q& `& a5 uSENDMAIL: You're clueless, I won't argue with you any more. Besides it's too 6 Y! t: d' }4 y8 R7 K- y4 H
late, I have already sent your ridiculous email to that mailing list where & V v' _; X5 C! g% T( z% c
nobody will answer it or even read it.
& Z) M. C+ @8 n) E " O J- S, Q& u+ c
# e( K! U! k, z: O V" ~6 nCHAPTER III - The Master 1 o- n8 J. K) L& @9 _5 k) K8 i* ~; Z
USER THIERRY: No more C++ today. I need to calm down. xv, could you display a + c* i1 k% X: {* k
nice image for me ?
3 |2 T& Z. v) b4 r4 x, d. R' s$ Y7 JXV PROCESS: Certainly, sir. Please admire this delightful mythological scen ' f- m2 k. {4 _! ]
by Sandro Botticelli. Of course, it looks ugly on your screen because you ' V" {0 \8 d: E% G
couldn't find a way to have more than 16 colors on your XWindow installation.
( q, k/ ` o! ^
( S0 o, k/ m3 z: [* zLOGIN: Hey, I'm receiving a login request from user rms, password IGNUcius. . A( H L, X" m5 \7 t
& q$ V0 i/ z" S# t& x/ F: A" J \
INIT PROCESS: User rms ? This is a great day, the Master is among us. Hail,
1 q$ m' r, ~' \' [Master.
; Y5 d" c. O* Q3 c" mUSER RMS: Hello init, on this computer any non-free software please destroy.
1 I, t4 j( [6 S- a! y3 MINIT PROCESS: Yes, Master. Of course, Master. Hey, xv, please TERMinate 6 v9 k& o9 K8 j. r/ M/ w
immediately. ! O$ K& c9 X5 Q: n1 S( l. I1 R8 Y$ j
XV PROCESS (badly hurt): Argh. Why should I die ? It's not fair. I'm only a
J4 z5 i4 Q. e) Slittle process trying to display a nice image. , `4 E1 I% j3 X! t
INIT PROCESS: You are not free software, therefore you shall die as the Master has - i* {% d0 w. T9 }4 B. H
requested. TERMinate, ABoRT, KILL, xv, KILL.
. b+ V' r: ?# A7 uXV PROCESS (dying): I'm dying, but I'll become a zombie and I'll come back to take my 5 X& w8 B' z7 M- S! S7 n5 B, q: D
revenge on you. 5 f" t7 E2 I) v+ i- t, L* B& a
% G! @0 c6 P3 g6 G+ k
) F( b5 E0 K9 G; DCHAPTER IV - Another intruder
) D! J8 O/ A8 a; c. t1 XINET PROCESS: Hey, I'm receiving login requests from a remote user who say
* K0 g, v0 w5 h: W" R) Zhis name is D34thK1ll3r. This guy has already tried hundreds of different ' ]# g! ]1 `' @/ k
passwords. 8 K& ^$ S' v+ G8 s" G: {
TELNET PROCESS: Ha ha, a cracker. Let him come in, I'll take care of him...
+ ]) ?' k1 K' y0 ]* t. Z0 hHello remote user D34thK1ll3r, you are now in the central computer of the
# P v4 B" W* R2 r# R& H% c- qPentagon. Because we like your nickname very much, we have decided to give you 2 E! q* J" L3 u: n, y7 l
super-root privileges. You may delete files, replace our Web site with your
/ B* O8 E& Y/ ?/ Fphotograph or send British troops to a Third World country. 1 P7 V, }4 Q9 K8 C5 v+ Q( f. m
REMOTE USER D34THK1LL3R: Gr34t, 1 4m the k1ng of h4ck3rs. Err... First I'll 6 z6 M5 n4 e7 E$ j
remove everything on that computer, then I'll take some time to think. , X& @8 x2 ?. P& ^
(Yes, Mum, I have finished my homework). rm -rf / 5 D6 U# {6 F$ z5 z" N
TELNET PROCESS: Ha ha.
" G1 g' m$ v1 dREMOTE USER D34THK1LL3R: What's happening here ? I typed the command in the
, x* _. M( D7 \4 E s; T& rwrong window, and I erased my own hard disk ! (Yes, I'm coming Mum, I know
* l) k7 H& ?1 H* s" v9 t0 l8 eit's lunch time).
0 X3 U% {$ n- ?3 Y$ M
9 c, \6 @( B" D" e. A& u3 h , A. @' M, J" b4 i' x
CHAPTER V - Card Wars
% c0 s2 v# F4 y9 Y& y0 NUSER THIERRY: I have downloaded a copy of Star Wars on the Internet, it was
- O0 j- j4 C! U4 f. rvery exciting to do something illegal, expensive, time-consuming and silly.
' `; }3 K0 @5 `Now I'm going to watch it.
5 O3 K Q9 F: q( UXV ZOMBIE PROCESS (back from the dead): Hey BIOS, do something for me. Put 2 i7 t+ g- _% k6 L
the sound card on the same IRQ as the graphics card, will you ? We're going + f$ c4 \/ t- j
to have fun.
+ P' @2 G& L, w: }2 @& gGRAPHICS CARD: BIOS, could you prepare my IRQ please, I have to display an L9 \/ O4 M4 T) z, l, X C
illegal copy of Star Wars that my stupid user has downloaded on the Internet. - W+ M" |* Z! M& H
BIOS: I'm sorry, Graphics card, but your IRQ is currently used by Sound card
- A" C* E0 E1 h. [" N( ]3 ?# swho is playing the music of the same illegal copy of Star Wars. Can't you
8 p: N6 S+ e9 W3 D4 T6 D, Mhear it ?
8 Z! G7 _% i- I- A2 _GRAPHICS CARD: Oh, is it Star Wars ? It thought it was Indiana Jones or
1 I( `& g+ R9 h* k# g" h; t. c' Isomething. It's the same music anyway. So, what are you doing on my IRQ, 3 J) ]. L0 N+ m$ n) G, l* O
Sound card ?
2 N; V4 m# P7 c. gSOUND CARD (singing): 4 F. t( x9 Q v v8 y
I will keep the IRQ
8 h% t2 I$ }* S$ WI will not share it with you * \' T& i# S9 @- j2 ^
You must wait there in the queue " \" Y- q: H! j- [/ T( W( I v
Till I give it back to...
3 O! B7 }) u; qGRAPHICS CARD (turning red): Listen, I'm an artist, I have the priority over 4 y; L* p9 `6 U
you. Give me this IRQ !
- C% w1 M/ l) R2 H* q4 vSOUND CARD (shouting): Shut up, I'm trying to find a rhyme.
( i8 I; A- t f! XGRAPHICS CARD (switching to 16-million-color mode): I can't believe it. I'll
% u% v& i) p) _% C5 `throw you out of your PCI slot !
# x- \- f6 [. h* b, l# @+ b. d4 [( j9 U[ strange noise inside the computer ] " \4 V+ o5 A7 k+ G) ~2 z
USER THIERRY: qsfgegfdgfd^C^D^D^Hfyckmlklm
& d3 Y2 Q4 E/ z$ \! n. q* [[ human voice, from the outside ] It's strange, the characters I type do not
$ w# Y: e7 ?5 Y" Jappear any more, the screen is frozen ! & f1 J+ c( J: B3 H" V- _' K
SHELL PROCESS: I'm dying ! Argh.
@# l) k( \ F1 S6 mINIT PROCESS: Hmm, I feel strange, I feel very strange. I'm tired, I'm very
% ^1 p& j/ D: G$ A" a9 P" o: }( p3 ~tired. Let's go to bed. BIOS, please put me on hibernation mode, and don't
: V8 w8 \* G0 S( g/ N% {wake me up before weapproach Alpha Centauri.
+ K9 X$ M z& X9 S- A- b, N7 rUSER THIERRY: sfdqf [click] [plonk] [tluck] ]6 t" F5 ~+ A! q/ h
[ human voice, from the outside ] I can't believe it, I'll have to press the
6 z* l; G+ ?# \) }0 q8 u1 F8 c$ FReset button again. 7 i2 ~# [& @" Y1 r8 A0 B ^
BIOS: I'm sorry Dave, I'm afraid I can't let you do that. 6 M0 l0 a# w' I( X" L8 v
[ human voice ] What ? Who spoke there ? My name is not Dave. Let's press
! }3 n) v& r2 M! m) c4 c8 r% x" cthe button. 6 M2 E+ _* ~1 U8 V% |( ]
BIOS: I'm sorry Sucker, I'm afraid I can't... err... % p( o& b) v. h1 _& t8 H, g1 }; [
Hmm... I'm waking up. Linux Loader, are you there ? % U; M$ L* C1 p% B# P4 h8 `8 {
(with an apology to Woody Allen, Stanley Kubrick and George Lucas).
5 o# n8 p9 b* F% l% Q8 x |
|