Everything you always wanted to know about computers...
4 C! f( \/ Y! o9 j& NINTRODUCTION
* H: f0 w6 z4 ^. w: tBIOS: Hmm... I'm waking up. Linux Loader, are you there ?
W- p3 Q! Y% ^1 HLILO: Hmm... Yes, I'm here. How do you do ? It's always a pleasure to work " ]+ ~; N7 N9 b9 c0 F: B8 h# J
with you. 6 z1 _6 k% [; m3 I6 q, g
Let's load the kernel and launch init, the Mother of All Processes... m% ~0 ^1 h! X6 j& P/ R2 {
INIT PROCESS: Hmm... Thanks Lilo. Let's initialize the system, mount the
8 F; G# j- c I9 cfile-systems and launch one hundred daemons. OK, now I'm ready for logins. " }4 l: F$ }1 p3 f. }" {5 ~
LOGIN: Hey, I'm receiving a login request from user thierry, password guvreel.
2 R; z+ T; |3 @ Z- GINIT PROCESS: Ha ha ! This user is stupid, his password is just his user name
2 @$ ^# h0 x/ z; }with a ROT13 encoding. Let's make fun of him.
- I4 b5 y; u4 Y0 ]7 d$ I' QUSER THIERRY: Hello everybody, please be kind with me today. I have a lot of * M3 B9 U% K( b- q9 h ?/ \
serious things to do.
# }& ?# h2 Q" J% `7 } & J! i% K* x9 W Z- Y8 g
2 S+ M4 G3 I- s6 Y% Q4 x/ ~4 @CHAPTER I - A Real Programmer " |% m4 k' l& A9 W' J4 A" y9 G
USER THIERRY: I'll start with that C++ program I have been trying to write
. l" i8 O7 u0 [3 P1 C+ {6 V% J6 J7 gfor the last fifteen days. gcc, could you please compile it for me ?
9 z+ @" h! r( q4 ?7 W/ |5 LGCC COMPILER: Very well, sir. So, your program is myproc.C. Let's parse it. * d- G# Q$ n3 b) o% x8 G& {4 ]2 I
Preprocessor directives, class declarations, comments, type declarations 1 L* S! Y# p4 d, k s
... Well, what is the purpose of this program ? Method declarations, 0 }' O7 s8 k+ q x# n, K; a; Z
other comments, macros... Hey, there are only declarations, no real code ; D V7 p) }" s- g
to do some real work. I'm completely lost in your code ! 7 @9 v f" E+ Z% _0 W
Each time I compile C++ code, I regret I'm not a Lisp interpreter.
, ~* `/ _! F6 A; T& ~! oUSER THIERRY: Oh, please, try another pass. I remember I wrote some real code
7 j- g+ x T9 ~0 zaround line 1764.
4 j4 k- m0 o) d( p% [# Z% LGCC COMPILER: Line 1764 says: cout << "Hello, world" << endl. You're right, # l- H# h9 w3 Q$ I# k/ O& j
that is a piece of real and useful code, with no syntax error. Let's
( z* c3 Q. @6 ^build and link that program...
8 j2 z% |8 v/ x- |. ]Now it's finished, here is your executable.
$ y/ e: \; }. n! m$ u+ bUSER THIERRY: Good, now I'll run it.
/ g/ s/ ~" g* ~( f) [: sMYPROG PROCESS: Hmm... I'm waking up. I am a C++ program, so I will first
9 z+ L% l' x* fcreate a few objects which will consume a lot of memory for no reason 1 @% J! @' v/ i# s
at all.
4 [6 e; }1 x$ g# {/ i* x; lC++ OBJECT #1: I'm hungry ! Gimme memory !
4 l$ D: F+ W5 t, A8 mC++ OBJECT #2: Memory ! I need more memory ! 4 M; B w2 ]" f% L" v G% F: K0 Z
MYPROG PROCESS: Object #1, please free some memory for object #2.
, R1 p( |" _2 KC++ OBJECT #1: No, I was programmed to eat memory and never release it. My * w7 ~% C6 m% U6 I) K) ~' _/ N' x
programmer is an illiterate who has learnt C++ because it came before
3 o. h1 K% L0 u+ S: f: O0 A. C1 |6 ^Visual Basic in the dictionary. ; t# `' \: s* u
SWAP PROCESS: EMERGENCY ! You are running low on memory. You have already used , F L. Q# w% k5 @! H
all of the swap space although you have just started !
6 g. O! |# M. g# o/ f1 O b& P9 Q6 pMYPROG PROCESS: Object #2, you should really stop using all that memory or I'm # J, ~( v7 u) Y+ h
going to install a garbage collector.
- B# `. j. e: u+ y, GC++ OBJECT #2: Never ! Garbage collectors are nazis who exterminate innocent
) i* ?1 w0 j6 e7 ^: L: v% U/ r kobjects and variables ! I'd rather dump core. 5 v6 Y' U6 g: q2 W4 l7 J; j" }
[ noise of a core dump onto the hard disk ]
- c3 i& O5 P4 ]/ P) K1 z0 AUSER THIERRY: Oh, oh ! My program has crashed before doing anything 7 E; T& O+ Z/ ~1 j$ m
interesting. I am very surprised.
: Y- ]; ` F7 W4 i; `# h6 F
0 J9 {/ T" h" U( m; l& W. E4 J) f2 v
/ \+ y1 x! m, E& w3 L# c) _ T3 |CHAPTER II - Sending mail ( c% G" q: z E5 T
USER THIERRY: That's enough, I'll just send an email to the cpp-help mailing - B! X! i+ M% h0 v3 [6 ]. m
list, and maybe some C++ guru will have a solution for me. ) y4 M) M+ H1 @' i8 m9 G
SENDMAIL DAEMON: Hello, this is sendmail, I'm listening to all your requests,
6 J- B* ~ V- P+ ]day and night, on port 25. What can I do for you, sir ? " J) i6 m4 Q9 v- O6 P! E1 M
USER THIERRY: Please send this email for me. * S# G! }6 Y9 o* C; [( p
SENDMAIL: Certainly, sir. Let's see... "It does not work, please help". Is 6 h+ D# [4 t! }# I6 c1 H' M
that all, sir ? Express delivery or general delivery ? Express delivery, , _# p2 d, K% }/ R% n+ k& ?
yes, of course. So the address is [email protected], and the sender 1 I, o1 b) L) Q& A# `9 w1 O# h
is Sucker. Is it correct ?
X. x' p+ E5 G( a3 t8 NUSER THIERRY: What ? No, my name is Thierry, not Sucker.
; Z+ U8 x8 N U: ]/ qSENDMAIL: I'm sorry, sir, but I have been configured to rewrite your name as 4 m+ @9 l8 F0 \. N0 A
Sucker in your outgoing emails. Have you read my documentation ? + |$ O x9 E9 h1 _
USER THIERRY: Yes, of course. When I installed you, I read every man page, " a. N* e, r' ]4 y' P! I
user guide and HOWTO before editing your configuration file...
5 d2 Q, E' y0 H9 V+ YSENDMAIL: What ? Did you modify a Sendmail configuration file by hand ? It's " V7 T8 j4 }- B9 O L) H
far too complicated for a normal human being, don't you know that ? : [* t) D, z' g! `8 u
USER THIERRY: I only followed the instructions...
' T# C" b' R$ C8 z% q6 S, }SENDMAIL: You're clueless, I won't argue with you any more. Besides it's too
# ?) }& W5 X2 I, Y, ]: Klate, I have already sent your ridiculous email to that mailing list where 9 f! I7 R) V7 w' w/ r! I4 Q
nobody will answer it or even read it. & B- k1 `+ d4 W( M5 s: J
8 D. N9 L9 b% f& Y3 g
# f1 T) m( t* B. F: M, Q4 K
CHAPTER III - The Master
7 \. w8 t7 m; o; l+ X# `, nUSER THIERRY: No more C++ today. I need to calm down. xv, could you display a # U6 C0 W- j2 k- Q) B
nice image for me ?
! x c1 b) Z( i. t& VXV PROCESS: Certainly, sir. Please admire this delightful mythological scen - j: H% F7 R7 N( Q4 b0 I
by Sandro Botticelli. Of course, it looks ugly on your screen because you ! `1 b* Q- k. f. I- G& H
couldn't find a way to have more than 16 colors on your XWindow installation. - c/ h- [4 \& c: h1 h
8 U- d5 z' \' G q A3 _
LOGIN: Hey, I'm receiving a login request from user rms, password IGNUcius.
& a# Z) j, M& T; d* A/ D: B4 W5 t6 e
INIT PROCESS: User rms ? This is a great day, the Master is among us. Hail, + E+ L' {. n( p1 A$ I- X
Master. % k' i( _% D6 y* ~ T
USER RMS: Hello init, on this computer any non-free software please destroy.
^% _' S% K! b9 i) c; Q$ y: W; dINIT PROCESS: Yes, Master. Of course, Master. Hey, xv, please TERMinate
, _: L* A2 |0 ?) H, y* Zimmediately.
8 ?% N# v6 s8 J$ f& Q: X$ GXV PROCESS (badly hurt): Argh. Why should I die ? It's not fair. I'm only a - [8 r; j' W% ~
little process trying to display a nice image.
0 w Z% R1 l8 JINIT PROCESS: You are not free software, therefore you shall die as the Master has
( A! b. m. B# t! jrequested. TERMinate, ABoRT, KILL, xv, KILL.
+ o1 _+ L K; C. v1 hXV PROCESS (dying): I'm dying, but I'll become a zombie and I'll come back to take my
/ h' M8 i' V. {. l: S, f1 |1 Urevenge on you. ) L; f2 C5 U$ m0 ?5 b" }# I( v
+ T& F+ C4 R% q
0 o7 V9 \) j# x- c, T& }CHAPTER IV - Another intruder
- _8 @+ o" C3 EINET PROCESS: Hey, I'm receiving login requests from a remote user who say
* {, R& W( N& x( xhis name is D34thK1ll3r. This guy has already tried hundreds of different
/ Q9 N1 S R* U Ipasswords. & N; p, R9 A* W
TELNET PROCESS: Ha ha, a cracker. Let him come in, I'll take care of him...
2 Y+ H+ @& S: t8 j! R( T# U, jHello remote user D34thK1ll3r, you are now in the central computer of the % h: g8 k, h, c- q6 {4 @
Pentagon. Because we like your nickname very much, we have decided to give you
+ Y' S! \; \/ O% C7 Z) s7 I! ~& hsuper-root privileges. You may delete files, replace our Web site with your ! `# X5 o8 H3 x, V q/ e' p% J1 q
photograph or send British troops to a Third World country.
. \/ [! { l7 z, r+ J/ Z1 b ^* mREMOTE USER D34THK1LL3R: Gr34t, 1 4m the k1ng of h4ck3rs. Err... First I'll + ~# u0 C3 {+ Z& a2 w
remove everything on that computer, then I'll take some time to think. ! T" {: R. V9 V' P
(Yes, Mum, I have finished my homework). rm -rf / 2 {$ G/ D, [0 `8 H
TELNET PROCESS: Ha ha.
. r$ Q; p) ]. l/ yREMOTE USER D34THK1LL3R: What's happening here ? I typed the command in the 9 ?* ^) F' e8 U* q
wrong window, and I erased my own hard disk ! (Yes, I'm coming Mum, I know $ m, }) k+ d$ j) j7 O
it's lunch time). * Z$ S3 h \5 R( i$ F5 q; m* {
" I* W8 r% _' L* b5 _
& e v8 L5 ^) \3 aCHAPTER V - Card Wars
3 ?. F' d; v7 H9 B }( {/ QUSER THIERRY: I have downloaded a copy of Star Wars on the Internet, it was " r* ~9 s* b A4 B4 ~# {
very exciting to do something illegal, expensive, time-consuming and silly.
3 E3 u( O4 U" h: @- K+ c5 RNow I'm going to watch it.
8 v; ^! N& o: |. S: BXV ZOMBIE PROCESS (back from the dead): Hey BIOS, do something for me. Put % p/ P" g6 [/ r9 ^' R9 ?9 W
the sound card on the same IRQ as the graphics card, will you ? We're going 2 v1 i. v1 e, V5 _
to have fun.
( ] V' p, G) A% J9 T( @4 AGRAPHICS CARD: BIOS, could you prepare my IRQ please, I have to display an
3 N# g& o( n: ]; q4 P) R: n sillegal copy of Star Wars that my stupid user has downloaded on the Internet.
. Q% K5 s, I9 Z" HBIOS: I'm sorry, Graphics card, but your IRQ is currently used by Sound card `" m, y7 r _9 @ S$ H' ]* C2 \7 |
who is playing the music of the same illegal copy of Star Wars. Can't you
5 A6 `! j: {8 t+ y: `2 nhear it ?
7 R- J" O- V3 TGRAPHICS CARD: Oh, is it Star Wars ? It thought it was Indiana Jones or
3 r/ R' F# Y( U9 Csomething. It's the same music anyway. So, what are you doing on my IRQ,
8 @5 ]6 ?% H6 v" |* B% w8 gSound card ?
4 @* r/ ]* J C% x NSOUND CARD (singing): $ F3 t/ a' E# o1 y
I will keep the IRQ , k, m4 r2 s* A# K" o0 R# D
I will not share it with you
, Y8 x+ v4 r5 p; |1 OYou must wait there in the queue
& I' A! C: }" |( v$ h: ]- vTill I give it back to...
9 R! V% g; f: lGRAPHICS CARD (turning red): Listen, I'm an artist, I have the priority over , ~& I) ]0 d) y+ o, ]! j* I; A$ F
you. Give me this IRQ !
1 F/ V5 `- R T* k5 ]5 GSOUND CARD (shouting): Shut up, I'm trying to find a rhyme.
6 ]8 c9 F' _5 h- lGRAPHICS CARD (switching to 16-million-color mode): I can't believe it. I'll % F( ]( s/ [/ R
throw you out of your PCI slot ! ; [& [# {' \3 i: }
[ strange noise inside the computer ]
* _7 Q" M, V5 a2 T" H7 u: r! gUSER THIERRY: qsfgegfdgfd^C^D^D^Hfyckmlklm
/ `/ F6 J1 s! ^) ~0 F# u0 C[ human voice, from the outside ] It's strange, the characters I type do not % p7 U- X# n E! K3 I9 H+ I
appear any more, the screen is frozen !
1 v# `! v) A ?+ a8 ISHELL PROCESS: I'm dying ! Argh.
9 k) H6 t) u. k( q) n2 SINIT PROCESS: Hmm, I feel strange, I feel very strange. I'm tired, I'm very : X" ^2 ?! \& b9 W
tired. Let's go to bed. BIOS, please put me on hibernation mode, and don't # C! v9 Q# d0 m$ _0 [
wake me up before weapproach Alpha Centauri.
! K4 ?, `, N7 h9 s( T+ SUSER THIERRY: sfdqf [click] [plonk] [tluck] ( k8 S" t7 k+ K& {/ o
[ human voice, from the outside ] I can't believe it, I'll have to press the 4 S# O# a6 h. v9 d
Reset button again.
; C/ ?6 B' z @. L1 YBIOS: I'm sorry Dave, I'm afraid I can't let you do that. 0 K2 y/ d2 d3 s6 U) m* [4 O" \
[ human voice ] What ? Who spoke there ? My name is not Dave. Let's press Z0 u& G S- c; I# F. F) l
the button.
6 U5 W% C- J0 X% z1 \( w: t( HBIOS: I'm sorry Sucker, I'm afraid I can't... err...
& G0 @% Y3 a+ ^) |Hmm... I'm waking up. Linux Loader, are you there ?
+ N- G' Z: i2 e0 f(with an apology to Woody Allen, Stanley Kubrick and George Lucas).
1 p4 I6 k( y4 e( g4 w* H1 _ |
|