You are on page 1of 457

Att anvnda GNU/Linux

Linus Walleij

ONLINEVERSIONEN - TRYCKNING FRBJUDEN Jag har slt rttigheterna att trycka den hr boken till Studentlitteratur, det betyder att du inte fr trycka egna exemplar av boken frn detta manuskript. Anledningen till att jag slt rttigheterna r att jag vill att boken skall f spridning. Det nns mer information om detta fr den som vill veta alla vervganden, se: http://www.df.lth.se/~triad/ gnulinux/20040514102823 Ngon speciell licens nns inte fr boken, inte n i varje fall, s det r vanlig strng upphovsrtt som gller. Det gr dremot bra att sprida boken vidare i denna elektroniska form. Bokens hemsida: http://www.df.lth.se/~triad/gnulinux/

ii

Innehll

Inledning 1.1 Lsanvisning . . . . . . . . . . . . . . . . . 1.1.1 Andra upplagan . . . . . . . . . . 1.2 Lsarens frkunskaper . . . . . . . . . . . 1.3 Om formen . . . . . . . . . . . . . . . . . . 1.4 Bst-fre-datum . . . . . . . . . . . . . . . 1.5 Datorvetenskaperna . . . . . . . . . . . . 1.6 Ngot grundlggande om operativsystem 1.6.1 Konstruktionshierarkier . . . . . . 1.6.2 Operativsystemets hierarkier . . . 1.7 Tack . . . . . . . . . . . . . . . . . . . . . . POSIX 2.1 Historia . . . . . . . . . . . . . 2.2 Mach, MacOS X, GNU/Hurd 2.3 POSIX innehll . . . . . . . . 2.3.1 Skal och kommandon 2.3.2 Processer . . . . . . . . 2.3.3 Demoner . . . . . . . . 2.3.4 Anvndare . . . . . . . 2.3.5 Filsystemet . . . . . . 2.3.6 Reguljra uttryck . . . 2.3.7 Texteditorer . . . . . . 2.3.8 Datum och tid . . . . . 2.3.9 Rr, lter och skript . 2.3.10 Ntverket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

3 4 4 5 6 7 7 9 12 14 17

19 . 21 . 23 . 25 . 25 . 33 . 42 . 44 . 51 . 75 . 78 . 89 . 90 . 103

Innehll 2.3.11 Terminalinloggning . . . . . . . . . . . . . . . . . 105 2.3.12 At- batch- och cronjobb . . . . . . . . . . . . . . . 107 3 De fria mjukvaruprojekten 3.1 Ekonomisk frklaring . . . . . . . . . . . . . . . . . . . . 3.2 Antropologisk, sociologisk, eller psykologisk frklaring 3.3 Att deltaga i fria mjukvaruprojekt . . . . . . . . . . . . 3.4 Licenser . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 GNU General Public License, GPL . . . . . . . . 3.4.2 BSD-licensen . . . . . . . . . . . . . . . . . . . . 3.4.3 MIT-licensen . . . . . . . . . . . . . . . . . . . . . 3.5 Versionsnummer . . . . . . . . . . . . . . . . . . . . . . Distributionerna 4.1 Hur distributionerna fungerar . . . . . . . . . . 4.1.1 Installationsmedia . . . . . . . . . . . . 4.1.2 Inventera din hrdvara . . . . . . . . . 4.1.3 Bootstrap loader och multiboot . . . . . 4.1.4 Partitionering . . . . . . . . . . . . . . . 4.2 Debian GNU/Linux . . . . . . . . . . . . . . . 4.2.1 Installation av Debian . . . . . . . . . . 4.2.2 DEB, dpkg och APT-systemet . . . . . . 4.2.3 Felrapportering . . . . . . . . . . . . . . 4.3 Red Hat Linux / Fedora Core . . . . . . . . . . 4.3.1 Installation av Red Hat & Fedora Core . 4.3.2 RPM-systemet . . . . . . . . . . . . . . . 4.3.3 Up2date och YUM . . . . . . . . . . . . 4.3.4 Felrapportering . . . . . . . . . . . . . . 4.4 Linux From Scratch . . . . . . . . . . . . . . . . 4.5 Alla de vriga . . . . . . . . . . . . . . . . . . . 4.6 Program utanfr distributionen . . . . . . . . . 4.7 GNU/Linux fr inbyggda system . . . . . . . . GNU/Linux-projekten 5.1 GNU-projektet . . . . . . . . . . . . . . . . . . . 5.2 Linuxprojektet . . . . . . . . . . . . . . . . . . . 5.3 BSD . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Arkitekturen i GNU/Linux-systemen . . . . . 5.4.1 Hantering av dynamiska krnmoduler 5.4.2 Hur krnan startar . . . . . . . . . . . . 5.4.3 Krnkontroll krniver . . . . . . . . 5.4.4 Exkursion i krniv 1 . . . . . . . . . . 5.4.5 Dynamiska lnkbibliotek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 113 117 119 120 122 124 125 126 129 131 134 136 138 141 145 148 150 154 155 157 159 161 162 162 164 166 167 171 171 175 178 179 182 184 189 194 195

iv

Innehll 5.4.6 5.4.7 5.4.8 5.4.9 5.4.10 5.4.11 6 Standardisering . . . . . . . . . . . . Filsystemets hierarki . . . . . . . . . Enhetslerna i /dev . . . . . . . . . Krn- och processkontroll /proc . Filsystemstyper . . . . . . . . . . . . Hantering av moderkortet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 199 200 202 209 218 221 225 228 246 253 256 258 259 261 263 265 267 267 270 272 273 274 276 280 283 284 285 287 287 289 292 297 298 300 301 303 304 305 v

Fnstersystemet X 6.1 Arkitekturen i X . . . . . . . 6.2 Konguration . . . . . . . . 6.3 Programmen i X . . . . . . . 6.4 Teckenuppsttning . . . . . 6.5 X-terminaler . . . . . . . . . 6.6 Skrivbordsmiljer . . . . . . 6.6.1 Motif och CDE . . . 6.6.2 Qt och KDE . . . . . 6.6.3 GTK+ och GNOME . 6.7 VNC . . . . . . . . . . . . .

Kringutrustning 7.1 Skrivarhantering: CUPS och Foomatic . . . . . . 7.2 Scanner . . . . . . . . . . . . . . . . . . . . . . . . 7.3 USB-enheter . . . . . . . . . . . . . . . . . . . . . 7.3.1 USB-lagringsenheter, digitalkameror etc. 7.4 CD- och DVD-brnning . . . . . . . . . . . . . . 7.4.1 Skapa en Data-CD/DVD . . . . . . . . . 7.4.2 Skapa en Audio-CD . . . . . . . . . . . . Kompilera sjlv 8.1 Kompileringsverktyg . . . . . . 8.2 Beroenden . . . . . . . . . . . . 8.3 GNU Autotools . . . . . . . . . 8.3.1 Utvecklarens perspektiv 8.3.2 Anvndarens perspektiv 8.4 Att kompilera Linuxkrnan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Internet och andra ntverk 9.1 Allmnt om datornt . . . . . . . . . 9.2 TCP/IP-stacken: internetprotokollen 9.2.1 Tillmpningsprotokoll . . . . 9.2.2 Transportprotokoll: TCP . . . 9.2.3 Transportprotokoll: UDP . . 9.2.4 Transportprotokoll: RTP . . .

Innehll 9.2.5 Ntverksprotokoll: IP . . 9.2.6 Ntverksprotokoll: ICMP 9.2.7 Ntverksprotokoll: ARP . 9.2.8 Lnkprotokoll: PPP . . . . 9.2.9 Svrdenierat: DHCP . . Att stlla in ntverket . . . . . . . 9.3.1 Net-tools . . . . . . . . . . 9.3.2 DNS-konguration . . . . 9.3.3 DHCP med dhclient . . . 9.3.4 PPP-anslutning . . . . . . 9.3.5 ADSL-anslutning . . . . . 9.3.6 Trdlsa nt . . . . . . . . 9.3.7 Inetutils . . . . . . . . . . Xinetd och TCPd . . . . . . . . . SSH . . . . . . . . . . . . . . . . . NTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 308 309 309 311 311 313 319 320 321 322 323 326 329 331 335 339 340 341 342 344 345 346 347 352 353 357 359 360 365 366 368 371 372 374 376 377 379 381 386 387

9.3

9.4 9.5 9.6

10 Skerhet 10.1 Fysisk skerhet . . . . . . . . . . . . . . . . . 10.2 Uppdatering av systemet . . . . . . . . . . . . 10.3 Skerhetskopiering . . . . . . . . . . . . . . . 10.3.1 Vad? . . . . . . . . . . . . . . . . . . . 10.3.2 Hur ofta? . . . . . . . . . . . . . . . . . 10.3.3 Hdup . . . . . . . . . . . . . . . . . . . 10.3.4 Rsync . . . . . . . . . . . . . . . . . . . 10.4 Kryptering . . . . . . . . . . . . . . . . . . . . 10.4.1 Kryptering av hrddisk . . . . . . . . 10.5 Intrngsskydd . . . . . . . . . . . . . . . . . . 10.5.1 Intrngsdetekteringssystem . . . . . . 10.6 Brandvgg med netlter . . . . . . . . . . . . 10.6.1 Ntverksversttning: maskerade nt 10.6.2 Annan paketbearbetning . . . . . . . 10.7 Virus, maskar o.s.v. . . . . . . . . . . . . . . . 11 Tillmpningsprogram 11.1 Kontorsprogram . . . . . . . . . . 11.1.1 OpenOfce.org . . . . . . 11.1.2 GNOME Ofce . . . . . . 11.1.3 K Ofce . . . . . . . . . . 11.2 World Wide Web-blddring . . . 11.2.1 Mozilla och Firefox . . . . 11.2.2 Konqueror . . . . . . . . . 11.2.3 Webbredigeringsprogram vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Innehll 11.3 Elektronisk post . . . . . . . . . . . . . 11.3.1 Skrppostlter . . . . . . . . . 11.4 Chattprogram . . . . . . . . . . . . . . 11.5 Peer-to-peer . . . . . . . . . . . . . . . 11.6 Ombrytningsprogram och typsttning 11.7 Multimedia . . . . . . . . . . . . . . . 11.7.1 Ljudsystemet i krnan . . . . . 11.7.2 Mediaspelare . . . . . . . . . . 11.7.3 Rippning . . . . . . . . . . . 11.8 Diverse . . . . . . . . . . . . . . . . . . A Att byta frn Windows till GNU/Linux A.1 Affrsmodellen och kundperspektivet A.2 Viktiga olikheter . . . . . . . . . . . . . A.3 Skalet . . . . . . . . . . . . . . . . . . . A.4 Lika fr lika . . . . . . . . . . . . . . . A.5 Windowsprogram i GNU/Linux . . . A.6 Samba blandad milj . . . . . . . . B Stordrift av GNU/Linux-system B.1 Katalogtjnster: YP, NIS, LDAP B.2 NFS . . . . . . . . . . . . . . . . B.3 RAID . . . . . . . . . . . . . . . B.4 Internetservrar . . . . . . . . . . B.5 Driftvervakning . . . . . . . . Litteraturfrteckning Sakregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 391 392 392 393 394 396 397 398 399 403 404 406 407 407 412 413 417 418 420 421 423 424 427 431

vii

Innehll

viii

K APITEL

1 Inledning

Nr ngon sger jag vill ha ett operativsystem dr jag bara behver sga vad jag vill ha gjort, ge honom en slickepinne. Oknd Detta r en bok om operativsystemet GNU/Linux, eller bara Linux, som mnga kallar det. Redan den plurala namngivningen GNU/Linux, antyder ngot om hur operativsystemet svl som detta verk, boken, har strukturerats. Boken speglar systemet. GNU/Linux-beteckningen frordas av Free Software Foundation av det enkla sklet att de anser att deras arbete med det system som i folkmun bara kallas Linux p detta vis kommit att skuggas av den krna som skrivits p initiativ av den s omhuldade Linus Torvalds. Inte ens GNU/Linux r egentligen en rttvisande beteckning, men mer fullstndiga beteckningar i stil med Qt/KDE/X/GNU/Linux skulle inte precis se vackert ut heller. GNU/Linux r en bra kompromiss som namnger de tv viktigaste bestndsdelarna i vrldens nst vanligaste operativsystem: GNU och Linux. Vad r dessa ting? Det skall boken frska frklara. Boken har som ml att presentera GNU/Linux p ett vis som lmpar sig fr en anvndare som vill anvnda sin egen dator som arbetsstation, och vill frst vad den gr och hur systemet r uppbyggt. Boken r ocks tnkt att kunna anvndas som referensverk fr att hantera vissa vanliga problem, eller ge specika kunskaper p ett visst omrde.

Kapitel 1 Inledning

1.1

Lsanvisning

Resten av detta kapitel r menat som introduktion av vissa grundlggande begrepp. Om du kan det hr med datorer s skumma och se att allt r bekant och hoppa till nsta kapitel. De vriga kapitlen bygger p varandra. Jag introducerar frst POSIXsystem rent generellt fr att sedan begrnsa perspektivet till GNU/ Linux-system. Om du redan kan ngot POSIX-system bra, till exempel Solaris, kan du kanske hoppa ver detta kapitel, eller nja dig med att lsa det versiktligt. Om du precis har skaffat dig en Linux-distribution av ngot slag, ssom RedHat Linux eller Debian, r det mjligt att du vill installera den s fort som mjligt fr att ha ngot att va dig p. Du kan i s fall hoppa direkt till kapitel 4 fr att hitta det du sker. Detta kapitel har skrivits s att det ska g att lsa fristende i viss grad. G sedan tillbaka och ls boken frn brjan om du vill lra dig mer. Mnga av de som brjar anvnda GNU/Linux kommer frn Microsoft Windows-vrlden. Av detta skl nns det ett speciellt appendix med namnet Att byta frn Windows till GNU/Linux, appendix A. Mjligen vill du lsa detta appendix frst, det beror p. Det skadar aldrig att smygtitta lite. Slutligen nns ven ett versiktligt appendix som jag kallat fr stordrift av GNU/Linux-system. Detta r ett vanligt anvndningsomrde fr GNU/Linux, men att behandla mnet uttmmande r inte mjligt bokens sidor rcker inte till. I en del kapitel frekommer ord som foo, bar, foobar och fnord. Dessa r mer eller mindre vedertagna motsvarigheter till matematikens X och Y, d.v.s. variabler som kan bytas ut mot ngot annat i en verklig situation.1

1.1.1

Andra upplagan

Infr andra upplagan har boken omarbetats och uppdaterats lite hr och var. Nya avsnitt har infrts om datorns moderkort och trdlsa ntverk. Avsnittet om X har uppdaterats fr att matcha konsensusbytet till X.org-servern. Andra tillgg har gjorts hr och var dr det befunnits relevant. Jag har rttat stora mngder stavfel och skerligen skapat nya.
1 Dessa kallas ibland metasyntaktiska variabler: Foobar kommer mjligen frn ordet fubar ur amerikansk soldatslang frn frsta (och andra) vrldskriget (f**ed up beyond all recognition). Fnord kommer frn den sknlitterra Illuminatustrilogin av Robert Shea och Robert Anton Wilson.

1.2 Lsarens frkunskaper Slutligen har avsnittet med en ekonomisk frklaring till fri mjukvara skrivits om frn brjan med en helt ny utgngspunkt. Den gamla varianten var inte bra, och var skerligen ocks orsaken till att ngon kallade boken fr ondigt predikande. Om boken nd uppfattas som predikande s r det inte min avsikt: jag vill jmfra operativsystemet GNU/Linux med andra utan frdomar och utan att kora vinnare. Kanske jag ibland kan misslyckas med det.

1.2

Lsarens frkunskaper

Detta r ingen nybrjarbok om att anvnda datorer. Inte heller r detta en hrdvarubok. Hr kommer inte att redogras fr hur du kopplar in sladdarna i din dator och slr p strmbrytaren, vad en mus eller skrivare r till fr, eller hur en oppydisk eller CD-ROM r tnkt att anvndas. Sdant fr du lra dig bttre och mer pedagogiskt p annat hll. Detta r heller ingen kom igng med-bok. Jag rknar med att du r begvad nog att ta en distribution av GNU/Linux och begripa hur du startar installationen. Emellertid: om det uppstr problem under sjlva installationen, och du vill lsa detta problem sjlv, kan denna bok mycket vl innehlla svaret. Det r drfr boken har ett ordentligt index, s att du ska kunna hitta de relevanta delarna ltt. verlag har jag inte mycket till vers fr bcker av typen The complete morons guide to running Linux. Michi Henning spekulerade vid ett tillflle2 i hur vrlden skulle se ut om det publicerades bcker i stil med Brain surgery in 14 easy lessons, Complete Idiots Guide to Contract Law etc. Jag vill ta detta tillflle att provocerande stlla frgan: varfr skall datoranvndning vara enkelt? Vem har ftt fr sig detta? Det vanliga svaret brukar vara att alla skall och mste anvnda datorer i detta samhlle. Inom religion och andra omrden talas det ibland om exoteriska lror, som lror fr massorna. Inom den gammalgrekiska religionen kunde detta vara mytologin med alla dess mytiska vsen. En folkets religion som inte stllde ngra svra frgor. Den esoteriska eller hemliga kunskapen, om vrldens och religionens verkliga vsen, var frbehllen en mindre skara lrjungar. Drmed inte sagt att den skall vara fysiskt svrtkomlig, kunskapen skulle nnas dr fr de som aktivt skte den. Detta r, om du s vill, en esoterisk bok. Det nns inget enkelt stt att lra sig en sdan sak som matematik, och det r inte enklare med ett operativsystem.3
2 Se 3 Och

[12] trots detta har livet stick i stv med all logik lrt mig fljande: nr datorsystem

Kapitel 1 Inledning Det r kanske inte alla frbehllet att frst och anvnda GNU/Linux-system p djupet, eller att administrera dem. Detta r allts i den meningen en elitistisk bok, som riktar sig till en publik med frmga och vilja att frst abstrakta resonemang. Den r inte fr GNU/Linuxsystem vad en krskola r fr bilar, allts ngot alla skall kunna begripa. Den r en bok om tekniken inuti GNU/Linux. Den r avsedd fr den typ av mnniskor som alltid kper en servicemanual till sin bil och inte tvekar att sticka in huvudet under motorhuven. Och precis som r fallet med bilar fordras det inte att du r ingenjr fr att klara av saken hjlpligt. Om du bara vill anvnda Linux, eller bara vill att det ska funka s sluta ls hr och kp en annan bok. Naturligtvis vill jag att alla skall anvnda GNU/Linux, och nog tror jag att att den hr boken bidrar ocks till det. Min erfarenhet sger mig dock, att bakom varje anvndare av ett operativsystem, som inte sjlv kan skta systemet, str en person som denne ringer till nr denne fr problem. Ibland r denna person avlnad och heter helpdesk, och ibland r det en oavlnad kompis, granne eller annan person i bekantskapskretsen. Detta gller alla operativsystem och alla anvndare. Den hr boken r fr den dr personen som anvndaren ringer till, nr problem uppstr. Jag ska understryka att det denitivt r vrt att lra sig GNU/Linux p djupet, till exempel till en brjan genom att lsa denna bok. Det r frst med frstelse fr de tekniska detaljerna och systemets grundtankar, som du till fullo kan frst vidden av och sknheten i GNU/Linux och andra POSIX-system. En del av de som kommer i kontakt med denna bok kommer skert att tycka att den r alldeles fr enkel. Det r bra fr er! Ge boken till nn som behver den istllet.

1.3

Om formen

Jag har envisats med att i denna bok konsekvent kalla operativsystemet som avhandlas fr GNU/Linux, medan dess krna kallas Linux. En kommentar jag hrt om detta r, ngot i stil med: Alla kallar det ju bara fr Linux, det r meningslst att frska deniera mer precisa begrepp, ven om det r korrekt, fr ingen fattar det. Frutom att jag tror detta vore felaktigt och fraktfullt mot bokens frhoppningsvis sjlvstndigt tnkande lsare, s r min vision av mitt eget frfattarskap att detta handlar om att lyfta andra till samma niv
skall frklaras r det vissa mnniskor som anser att det lter obskyrt, r hopplst krngligt, och som inte sllan ger uttryck fr en viss arrogans och ointresse. Jag undrar om de skulle behandla utltanden frn sin lkare eller advokat p det viset.

1.4 Bst-fre-datum som jag sjlv, inte att jag skall snka mig till ngra ospecicerade andras lga niv. Ett liknande resonemang gller valet av begreppet fri mjukvara istllet fr den populra termen ppen kllkod (engelska: Open Source). Den senare r ngot jag uppfattar som mest frvirrande. Denna bok innehller ingen ordlista. Den har dremot ett omfattande index dr du kan hitta de stllen dr orden r denierade i sitt rtta sammanhang, p s vis lser du lite mer och lr dig lite mer n du skulle gjort om du bara ftt denitionen p ett ord. Nr det dyker upp en fotnot i texten4 betyder detta att det i fotnoten nns mer utbroderande anmrkningar som skulle kunna verka ondigt frvirrande vid en frsta genomlsning. Om du just har lst ngot som verkade intressant och stter p en fotnot, br du lsa fotnoten fr mer information. Fotnoter anvnds ibland ven fr utvikande frklaringar om ngot r lite oklart, t.ex. om jag anvnder ett begrepp som kanske inte r allmnt vedertaget, samt fr hnvisningar till vissa kllor. En litteraturhnvisning av det hr slaget[30] anger en klla dr du kan hitta de originaltexter som citeras, eller lsa mer om ngot specikt mne. En litteraturlista som svarar mot dessa nummer ternns i slutet av boken, fre indexet.

1.4

Bst-fre-datum

Nr jag sist gav mig tid att skriva en fackbok som berrde tekniska omrden ck jag p ett direkt vis erfara att litteratur av detta slag har en synnerligen kort halveringstid. P samma vis kan denna text komma att revideras, beroende p tid och mjlighet. Vad betrffar referenserna till Internet sist i boken r dessa vl nrmast att betrakta som ett skmt, men den som har tillgng till ett arkiv med Internetler av typen The Wayback Machine5 kan kanske kolla vad som fanns p de angivna URL:erna vid angivet datum. Internetadresser som anges direkt i texten eller i fotnoter r naturligtvis inte heller inhuggna i sten.

1.5

Datorvetenskaperna

Nu ngra ord om de fackmnniskor som eventuellt skulle kunna ha nytta av denna bok.
4 D.v.s. 5 Se:

en sdan hr http://www.archive.org/

Kapitel 1 Inledning Det nns minst fem akademiska discipliner som sysslar med datorer. Att knna till dessa och deras inriktning och dess anhngares egenheter r ndvndigt fr att kunna bedma vrdet och relevansen av den information de producerar: Datalogi r lran om datorns teoretiska aspekter, i synnerhet programmering och programvarukonstruktion. Sorteringsalgoritmer, operativsystem, articiell intelligens och diverse matematisk exercis som relaterar direkt till datorer och inte primrt till matematik r populrt bland anhngare av denna disciplin. Favoritapplikation: graftraversering p polynomiell tid. Frebild: Donald Knuth. Datorkommunikation r lran om hur datorer kommunicerar i ntverk. Detta omrde behandlar kteori, nttopologi, datorskerhet, protokoll o.s.v. Fretrdarna lskar routrar, twisted-pair-kabel, analyser av DoS-attacker,6 buffertverskrivningar och allt annat som gr livet vrt att leva. Favoritapplikation: webbserver. Frebild: Agner Krarup Erlang. Datorteknik r lran om hur datorer konstrueras rent elektroniskt. Vilka processorer och minnen du skall vlja, hur de skall sttas samman, hur du tillverkar en egen ASIC eller FPGA o.s.v. r kra mnen fr de som studerar denna disciplin. De esta r datoringenjrer. Favoritapplikation: styrsystem p kisel. Frebild: Charles Babbage. Numerisk analys r en matematisk disciplin fr vars skull de frsta datorerna byggdes p 1950-talet. Fretrdarna sysslar med att lsa matematiska problem och framstlla approximativa lsningar till matematiska problem med hjlp av datorer. Favoritapplikation: iterativ lsning av differentialekvation. Frebild: Isaac Newton. Systemvetenskap (kallas ven informatik) gr ut p att bygga system och nr jag stllt frgan till de som arbetar inom detta omrde har de till och med satt ett frgetecken efter pstendet att de system en systemvetare arbetar med mste innehlla en dator. Omrdet frknippas med frkortningen ADB vilket utlses Automatisk Databehandling. System av den typ som systemvetare grna arbetar med tenderar att inbegripa framfr allt databaser, arbetsden och dokumenthantering. Deras huvudsakliga verksamhet r att automatisera ekonomiska och administrativa stdsystem.
6 DoS, Denial of Service, r avsiktliga verbelastningsattacker riktade mot olika former av ntverkstjnster.

1.6 Ngot grundlggande om operativsystem Genom anvndning av datorer blir detta enklare n det var p den tiden d kartotek ck anvndas. Favoritapplikation: stockticker (en rullande list som visar brskurser). Frebild: Bill Gates. Frhoppningen r att boken skall kunna frsts och anvndas till dagligdags av lrjungar till alla fem disciplinerna, och r ni inte akademiker s kan ni skert nd knna en dragning till ngon av ovanstende beskrivningar. Systemvetarna r vl allt som oftast de itigaste anvndarna av operativsystem, liksom datoringenjrerna, som lser en mix av alla de hr mnena. Det praktiska anvndandet av ett operativsystem, vilket denna bok handlar om, faller p ett mrkligt vis mellan dessa vetenskaper. Traditionellt sett r praktiskt anvndande av teknik en yrkesutbildning, och anses kanske inte nt nog att lra ut vid universitet, vad vet jag. Kanske r det ven bst s.

1.6

Ngot grundlggande om operativsystem

Fr att fra en diskussion runt ngot fordras att samtalsparterna i ngon mn talar samma sprk. Fr detta syfte presenteras hr en snabbkurs, eller som anglosaxerna sger, crash course i grundlggande operativsystemteori. Detta r dock ingen bok om operativsystem i strsta allmnhet, och innehllet r drfr sparsmakat; den som nskar exakt kunskap i detta omrde rekommenderas att lsa ngon av de utmrkta bcker i mnet som producerats.7 De frsta datorer som mnniskan skapade saknade operativsystem. I begynnelsen skrevs ett program genom att byta plats p kablar i Z3 som tillverkades i Nazityskland r 1941, den frsta generellt programmerbara dator som ngonsin skapats. Innan dess fanns det specialdatorer, som bara vara byggda fr att utfra en enda sak, ibland var de inte ens digitala siffermaskiner utan analogimaskiner som representerade tal med strmmar, spnningar, vattenniver eller pneumatiskt tryck. Dessa var avledningar av de frsta reglertekniska systemen. Efter Z3 kom ENIAC, den frsta helt elektroniska datorn, som frdigstlldes i USA r 1947. Den var byggd av elektronrr och programmerades ocks enbart med kablar. Efter den kom sedan datorer, oftast under namnet matematikmaskiner att uppst i en strid strm. Programmeringssystemen utvecklades s att programmen kunde matas in p hlkort istllet fr med kablar, och resultaten kom ut p hlkort de ocks. Berkningsfrloppet kunde fljas p lampor.
7 Se

exempelvis Abraham Silberschatz bok Operating System Concepts[30].

Kapitel 1 Inledning P 1960-talet utvecklades de frsta operativsystem som kallades operativsystem, bland dem OS/360 frn IBM och snart drefter MULTICS8 som var ett forskningsprojekt som bedrevs av MIT, AT&T Bell Labs och General Electric. Dessa operativsystem var utformade fr datorer som hade skrm och tangentbord i form av en enklare terminalskrivmaskin, och ett kunde interagera med anvndaren via skrivna kommandon. Nr hemdatorerna (ibland kallade mikrodatorer) dk upp under 1970och 1980-talen, saknade de i princip operativsystem och hade drfr backat i datorernas evolutionra utveckling. Det vanligaste var istllet att nr en hemdator slogs p startades en interaktiv tolk fr programsprket BASIC. De frsta versionerna av IBM PC hade exempelvis denna egenhet, om anvndaren inte hade stoppat in en diskett med ett operativsystem i datorn. Drefter ck hemdatorerna ocks operativsystem: bit fr bit byggdes de p med operativsystem, s att de blev som riktiga datorer. Vad menar vi egentligen med ett operativsystem? Den saken r inte helt klar. En av de bsta frklaringar jag knner till r att tnka evolutionrt: frst fr program skrivas fr en viss dator, p ett vis som r specikt fr just den datorn. Inga delar av dessa program kan teranvndas p ngon annan dator. Efter hand som datorn anvnds uppstr behov av att tervnda vissa stndigt terkommande funktioner, s att hjulet inte behver uppnnas p nytt fr varje program. Fr Datasaab D21, en hiskelig rad av kylskp som under en tid tillverkades i den stora byggnad som ligger snett bakom Linkpings jrnvgsstation, fanns exempelvis programbibliotek med matematiska funktioner (ssom matrismultiplikationer och andra operationer beslktade med liner algebra) p stora rullband som kunde anvndas istllet fr att tillverka helt nya program varje gng. De teranvndbara delarna fr till sist en sammanhllen struktur och kallas d fr ett operativsystem, och alla som anvnder datorn frutstter att det nns dr. P s vis r ett modernt operativsystem summan av de saker som har befunnits vara bra att teranvnda. Anvndargrnssnittet, rutiner fr att lsa in data frn tangentbord och hrddiskar, rutiner fr att skriva ut och lagra data, rutiner fr att kommunicera med datorntverk. Allt detta samlas i operativsystemet. De nya datorprogram som skrivs kan sedan rkna med att operativsystemet redan nns dr i ngon form. De absolut mest grundlggande delarna av operativsystemet bru8 Multiplexed Information and Computing Service var tnkt att leverera datorkraft till fretag och hushll p samma vis som elektricitet och vatten.

10

1.6 Ngot grundlggande om operativsystem

Figur 1.1: En hlremsa med en s.k. bootstrap-loader till en gammal dator av mrket Hewlett-Packard.

kar vara inbyggda i datorn i form av ett ROM9 vid leverans och kallas d ibland fr BIOS efter engelskans Basic Input/Output System. Dessa har rollen av att starta upp och initialisera hrdvaran och sedan ladda in det egentliga operativsystemet. Den specika funktion som laddar in resten av operativsystemet kallas d ofta bootstrap loader, eller kort boot loader. Detta namn kommer frn tanken p att en dator s.a.s. lyfter sig sjlv i hret nr operativsystemet startas egentligen behvs nmligen ett operativsystem fr att kunna starta ett operativsystem, men bootstrap:en r ett undantag som lser upp detta moment 22. En bootstrap r en sdan dr gla som sitter baktill p en stvel (engelska: boot) och sinnebilden hr r allts en person som lyfter upp sig sjlv genom att ta tag i denna gla och dra, ngot som den legendariske Baron von Mnchhausen sade sig kunna gra. Ngon form av minimal BIOS nns nstan alltid, ett ldre sdant kan beskdas i gur 1.1. Programmet p bilden laddas in i datorn och startas, varefter datorn r redo att lsa datorprogram frn andra hlremsor och magnetskivor. I senare tid anvnds begreppet boot loader ven om ett litet program som ligger frst p datorns hrddisk och som vljer och laddar in ett operativsystem som nns p denna hrddisk. Vi kommer senare att stifta bekantskap med tv sdana program: LILO (Linux Loader) och GNU GRUB (GNU GRand Unied Bootloader).10
r en engelsk akronym som utlses Read Only Memory, ett halvledarminne som bara kan lsas, ej skrivas. 10 Detta avhandlas p sidan 138.
9 ROM

11

Kapitel 1 Inledning

1.6.1

Konstruktionshierarkier
Det som r ovan springer ur det som r inunder, och det som r inunder springer ur det som r ovan, men allt utgr frn Det Endas mirakel.11 Hermes Trismegistos smaragdtavla

Inom alla tekniska vetenskaper konstrueras system enligt hierarkiska modeller av komponenter, vare sig de r fysiska och tillverkade av materia, eller de r virtuella och manifesterar sig i den fysiska vrlden bara p det mikroskopiska planet. Detta hierarkiska komponenttnkande manifesterar sig i sprngskisser ver tekniska apparater dr barn kan identiera bestndsdelarna, eller ingenjrers ritningar med noggrann dokumentation av alla ingende detaljer var fr sig och lika noggranna instruktioner fr hur de skall sttas samman. Vi lr oss tidigt detta grundlggande frhllande till teknik, s grundlggande skulle jag gissa, att den som inte greppar just detta frmodligen aldrig kan frst teknik ordentligt. I min barndom var det en gul bok i stort format med titeln S funkar det av Joe Kauffman som lrde mig teknikens inre logik. Komponenttnkandet r frsta nyckeln till att frst all teknik. Komponenttnkandet r hierarkiskt p s vis att mindre komponenter bildar strre komponenter. Den fysiska datorn bestr av en lda av metall eller plast, med ett eller era kretskort inuti, anslutna till omvrlden via kontakter. Kretskorten bestr av elektroniska komponenter och ledningstrdar. De elektriska komponenterna bestr av olika kemiska freningar, ledningsbanorna av koppar. En digitalelektronisk komponent bestr av anslutningspinnar, en plastkapsel och en kiselbricka. Kiselbrickan r fotograskt etsad med dopade halvledarmnster som utgr logiska grindar. De dopade omrdena bestr av avsiktliga froreningar av olika grundmnen. Och s vidare, nda ner till subatomra niver som vi inte fullt frstr oss p n. P samma vis kan den logiska konstruktionen i ett operativsystem delas ned i en rad hierarkiska niver. Det r en vanlig missuppfattning att tekniska system bestr av en strikt hierarki detta r felaktigt de nrmaste niverna interagerar p ett intrikat vis, och ven avlgsna niver pverkar varandra. P s vis r ett operativsystem mer som en levande kropp dr de olika organen pverkar varandra och bara helhetens harmoni rknas.
11 Min versttning av den engelska versttningen av den latinska versttningen av den arabiska kllan. (Tillhr den alkemiska traditionen.)

12

1.6 Ngot grundlggande om operativsystem

VDD A B A B F A F B

GND

Figur 1.2: Hr syns hur ett datorchip konstrueras frn byggelement till mer abstrakta hierarkier, lngst till vnster en frenkling av det faktiska fysiska kretsmnstret p kiselbrickan, som formar de fyra komplementra CMOS-transistorerna. Lngst till hger den logiska schemasymbol som symboliserar hela detta kretsmnster.

Den andra nyckeln fr att frst tekniken i ett operativsystem r att det r indelat i skikt. Detta innebr att komponenterna r ordnade ver eller under varandra med hnsyn tagen till viss funktionalitet. Detta hnger starkt samman med komponenttnkandet, ty varje komponent kan tcka en eller era niver av funktionalitet, men sllan en och en halv niv. Vanligtvis tcker den bara en enda. I gur 6.3 p sidan 228 ser du till exempel hur mnga skikt av abstraktioner som dljer sig mellan anvndargrnssnittet i ett GNU/Linux-system och den hrdvara som faktiskt till sist gr jobbet. Grundtanken r fljande: Niv 1 Niv 2 Niv 3 En sak som benner sig p niv 1 skall i idealfallet inte behva bekymra sig om vad som nns p niv 3, utan skall bara utformas p s vis att niv 2 kan kommunicera med den. Detta ger en hierarkisk tskillnad mellan tv niver av abstraktion. Det r underfrsttt att det som nns p en lgre niv r mer detaljerat inte ndvndigtvis mer komplicerat eller viktigare n det som nns p en hgre niv. Saker som nns p en hgre niv r ackumulerade och verordnade, men mste fylla upp krav frn underliggande niver. Om vi till detta tankestt lgger anmrkningen att ett system p en viss niv fljer sin egen dynamik, och inte bara kan frsts i termer av 13

Kapitel 1 Inledning de underliggande komponenter det bestr av, kallas den resulterande synen fr holism. Tanken att en helhet kan beskrivas bara som summan av ett antal komponenter skulle dremot kunna kallas fr atomism. Att intuitivt frst bde delarna och helheten r krnan fr all frstelse av teknologi. Det r ndvndigt att ha en sdan syn fr att frst datorer. Huruvida en sdan vrldssyn r tillmplig inom naturvetenskapen i stort dr t.ex. kvarkar bygger atomer, som bygger molekyler, som bygger celler, som bygger organ, som bygger levande varelser r en annan frga. Datorsystem r medvetet konstruerade av komponenter, som lagts samman s att de bildar en ny, sjlvstndig enhet. De r allts konstruerade p ett holistiskt vis, och skall frsts holistiskt.12 Det nns andra stt att frst datorer. Ett vanligt r ceremoniellt och liknar ett religion: anvndaren lr sig att upprepa ett visst beteende, som denne varken frstr eller kan frklara. Anvndaren har lappar med steg-fr-steg-beskrivningar fr att utfra varje liten uppgift p sin dator. Anvndaren har ingen mental modell fr hur det som nns inuti datorn r uppbyggt utan ser den som en svart lda. Det hr beteendet fr tanken till magi, och frklarar varfr utomstende ibland kan uppfatta en datorteknikers arbete som ren magi: det ser nmligen bara ut som en lng rad obegripliga manvrar eftersom denne saknar en tillmplig frklaringsmodell. GNU/Linux r medvetet uppbyggt p ett vis som uppmuntrar och mjliggr en djup frstelse fr hur systemet r sammansatt och hur de olika delarna samverkar. Lr dig tnka i termer av hierarkiska niver, och du lr dig frst datorer.

1.6.2

Operativsystemets hierarkier

Med ordet system i operativsystem ligger underfrsttt att det r ett system av komponenter. Om det inte var p det viset skulle det knappast kunna kallas fr ett system. D skulle vi kanske kalla det fr operativmonolit, operativatom eller ngot liknande som ger uttryck fr att det r frga om en odelbar enhet. Alla ngorlunda moderna operativsystem
12 N, det har funnits eller nns i mindre grad datorsystem som inte konstruerats p detta vis. Operativsystem som skrevs fr datorer med trumminnen kunde t.ex. optimeras fr att synkroniseras med trummans rotationshastighet. Hr frekom inte ens ngon avskiljning mellan maskin och program d r det inte frga om att de hr tv niverna (maskinen och datorprogrammet) kan uppfattas som system som skall betraktas oberoende av varandra lngre, eftersom det ena s klart br spr av det andra. Det nns ocks datorprogram av allehanda slag som genom brist p struktur ftt en karaktr som knappast kan kallas holistisk. X.org-servern (se avsnitt 6 p sidan 221) brukade tidigare framhllas som ett sdant.

14

1.6 Ngot grundlggande om operativsystem

Figur 1.3: Krnan i operativsystemet.

bestr av komponenter; hundratals, tusentals eller tiotusentals beroende p hur grovt du sllar. I en dator kan den innersta delen av operativsystemet, den viktigaste komponenten illustreras i gur 1.3. Hr nns en krna i centrum, runt vilken era lager av ntmassa lindat sig. I ett GNU/Linux-system utgrs krnan bara av en enda komponent; dess krna r vad som kallas monolitisk. Emellertid visar det sig, om vi tittar nrmare p krnan, att den faktiskt bestr av moduler, d.v.s. komponenter, den ocks.13 I Intel 80386-sammanhang talas om olika ringar,14 dr den innersta r ring 0, sedan numreras de utt. Jag kunde lika grna ha ritat guren som en holistisk lagerkaka, dr varje lager kan begripas i sina egna termer: Tillmpning Grnssnitt (skal) Krna Alla saker i guren r vitala fr att just det hr operativsystemet p just den hr datorn skall fungera utan problem. Hierarkierna i datorn utgr frn operativsystemets krna, vilken startas av datorns bootstrap loader d strmmen sls p. Runt denna krna och dess grnssnitt (ven kallat skal) nns en stor mngd tillmpningsprogram. Dessa kan vara av alla mjliga slag, men vissa r s pass grundlggande att de fr anses vara en del av sjlva
avsnitt 5.4 p sidan 179. 80386 (och efterfljare som 80486, Pentium, Pentium II etc.) har fyra olika ringar, med nummer 0, 1, 2 och 3. De esta operativsystem, dribland GNU/Linux, anvnder bara ring 0 (kernelspace) och ring 3 (userspace).
14 Intel 13 Se

15

Kapitel 1 Inledning operativsystemet. I ngon mn r det en denitionsfrga vad som r en del av operativsystemet och inte, men exempelvis ett kommando fr att lista ler ssom POSIX-kommandot ls eller det enkla programsprket awk r s grundlggande att de fr anses vara en del av operativsystemet. De olika delarna i operativsystemet startas i en sekvens: frst aktiveras som sagt BIOS och dess bootstrap loader, drefter laddas operativsystemets krna. Denna laddar i sin tur in en mngd drivrutiner fr att kunna anvnda datorns hrdvara. Varje individuell drivrutins uppgift r att hantera en viss specik hrdvara. Drivrutinerna kan ibland identieras automatiskt, vilket i PC-vrlden r identiskt med det som kallas PlugnPlay. De kan ocks laddas in senare under krning, ngot som kallas hotplugging, till exempel d USB-enheter ansluts till datorn under krning. Krnan kommer d i idealfallet att identiera enheten och ladda in rtt drivrutin. r den nnu mer listig frsvinner drivrutinen dessutom ur datorns minne d sladden till USB-enheten kopplas ur. Efter att krnan laddat drivrutinerna fr hrdvaran startas tjnster av olika slag. Dessa varierar mellan operativsystem. I Linux och andra liknande operativsystem anvnds ngot som kallas krniver (engelska: runlevel) fr att kategorisera i vilken niv, rknat frn det mest avskalade operativsystemet, som tjnsterna skall startas. I avsnitt 5.4.2 p sidan 184 kommer vi att g igenom i detalj hur detta fungerar i GNU/ Linux. Det som presenteras i denna bok r anvndarperspektivet fr ett GNU/ Linux-system: hur du kan installera, underhlla och anvnda GNU/ Linux fr ditt dagliga arbete. Utgngspunkten r ett GNU/Linux-system installerat p en IBM PC-kompatibel dator, men strsta delen av beskrivningarna gller ven ven fr GNU/Linux p andra datorer. Om du gr och kper en bok i operativsystemteori kommer den inte att handla speciellt mycket om dessa saker. Dessa utgr frn konstruktrsperspektivet och handlar drfr oftast om de allra innersta, mest svrprogrammerade delarna av sjlva krnan: hur processer och trdar schemalggs, hur minne allokeras och deallokeras samt hur lsystemet och andra in/ut-enheter hanteras. I detta fall rr sig litteraturen p en teoretisk niv utan ngra som helst exempel p hur en anvndare upplever det hela och kan kontrollera sina processer, lsystem o.s.v. Denna bok handlar mer om det senare. 16

1.7 Tack

1.7

Tack

Flera personer har hjlpt mig att frverkliga den hr boken. Flera av dem frtjnar ett srskilt tack fr hjlpen. Frst vill jag tacka Ola Larsmo, som genom sina frgor gjorde mig uppmrksam p bristen av anvndbar litteratur p det hr omrdet. Ett speciellt tack riktas till Wilhelm Assarsson som outtrttligt luslst alla mina manuskript. Andra som gett vrdefulla bidrag genom provlsning r Joachim Strmbergsson och Hkan Kvist, som ven haft vnligheten att kra texten igenom aspell. Alla fel som nns kvar i texten r naturligtvis mina egna. Jag vill ocks tacka alla de personer som gjort stora insatser fr fri mjukvara i Sverige: srskilt Mikael Pawlo och Patrik Wallstrm som drev nyhetsportalen Gnuheter och Jonas Bosson som outtrttligt arbetat med mjukvarupatentfrgan. De vriga viktiga aktrerna r frhoppningsvis redan upprknade ngonstans i denna framstllning, bde fretag och enskilda personer, men jag tackar er alla, ni vet sjlva vilka ni r. Tack speciellt till David Weinehall och Christian Rose som jag haft frmnen att tala nrmare med om deras projekt. Tack ven till Datorfreningen vid Lunds Universitet och Lunds Tekniska Hgskola som r den institution som betytt mest fr min skolning i POSIX-system. Det r omjligt att inte samtidigt ocks tacka vnnerna i SSLUG (Skne-Sjlland Linux Users Group) fr alla fredrag och installfester. Ett speciellt tack till de inspirerande personer som alltid svarat p frgor eller kommit med synpunkter: Fredrik Roubert, Peter Svensson, Tomas Gradin, Linus kesson, Martin Wahln, Christian Kullander, Mikael Abrahamsson, Bertil Hedker och Sven Mattisson. Och tack till alla andra studie- och arbetskamrater verallt. Tack till Eva och Ivar fr allt.

17

Kapitel 1 Inledning

18

K APITEL

2 POSIX

Med tanke p datoranvndares och operativsystemanvndares nskningar i strsta allmnhet, r klagandet ver brist p standard den kanske vanligaste litania en administratr eller annan datorperson fr hra. Vad f mnniskor tycks knna till r att det faktiskt existerar en standard fr operativsystem, och denna har namnet POSIX.1 POSIX vilket skall utlsas Portable Operating System Interface for UNIX denierar ett abstrakt operativsystem med alla dess grundlggande komponenter och r en s kallad de jure-standard frn det amerikanska standardiseringsorganet IEEE2 med numret IEEE 1003.1. Internationellt har denna standard ven numret ISO/IEC 9945. Namnet POSIX var ett frslag frn programmeraren och initiativtagaren till GNU-projektet, Richard Stallman. Nr vi talar om UNIX-system r det oftast i sjlva verket POSIXsystem, system som fljer POSIX-standarden, vi menar.3 En annan beteckning r UNIX-liknande system (engelska: UNIX-like system). Avsikten med detta kapitel r att ge dig insikter i saker som r gemensamma fr
1 Detta r aldrig fel att ppeka nr ngon sger att de vill ha installerat ett standardiserat operativsystem. Det givna svaret p frgan r d: jag antar att du menar att du vill installera ett system som uppfyller IEEE 1003.1, ven knt som POSIX?. 99 av 100 menar naturligtvis att de vill ha samma operativsystem som alla andra anvnder, vilket inte r samma sak som ett standardiserat operativsystem. 2 Institute of Electrical and Electronics Engineers 3 BSD och GNU/Linux r tv av de f operativsystem som faktiskt kan hvdas flja POSIX.

Kapitel 2 POSIX

POSIX
GNU/Linux

BSD Solaris HP-UX SCO MacOS X

Figur 2.1: Illustration av ngra av de olika operativsystemen i POSIXfamiljen

alla POSIX-system, inte bara GNU/Linux. Kunskaperna hr kan tillmpas i nstan alla POSIX-system du stter p. Det r det absolut viktigaste kapitlet fr den som aldrig anvnt ett POSIX-operativsystem innan. POSIX r en svrtkomlig och dyr standardspecikation som ytterst f personer verkligen har lst.4 Utver detta r den utformad fr programmerare och tekniker som redan r p det klara med vad som skall avhandlas. Hr ges frhoppningsvis en mer lttfattlig beskrivning. Numera anvnds fr vrigt mestadels en nra slkting till POSIX med namnet Single UNIX Specication, och anledningen r sammanfattningsvis dels att vissa saker som saknades i POSIX lagts till i Single UNIX Specication, och att IEEE hrdnackat har vgrat att publicera POSIX-dokumentationen p World Wide Web, dr utvecklare av operativsystem som GNU/Linux kan komma t den. Svl POSIX-dokumenten som Single UNIX Specication r nyttig lsning och som anvndare br du tminstone ha tittat p dem, se [14][31].5 De olika knda operativsystem, som i dagligt tal kallas UNIX-system r alla delar i familjen av POSIX-system s som visas i gur 2.1. Anledningen till att de inte skall kallas UNIX-system r att UNIX r ett registrerat varumrke som gs av The Open Group. Det r frbjudet att tillverka och marknadsfra ngot med namnet UNIX utan licens och certikation frn The Open Group, och det r ocks drfr Linux mste kallas Linux och inte fr heta Linus UNIX eller ngot liknande. Ytterst f system har passerat The Open Groups certieringstest fr UNIX, i dagslget bara Solaris, ett par varianter av AIX och Tru64, och dessa frvisso bara p vissa specika hrdvaror. Att s mnga system
4 Den 3 Juli 1991 efterfrgade Linus Torvalds POSIX-specikationerna p comp.os.minix men hade inte rd att kpa dem. Istllet anvnde han manualsidorna frn SunOS, nuvarande Solaris, som dokumentation av POSIX-grnssnittet. 5 Fr mer historia kring standardisering, se Eric S. Raymonds The Art of Unix Programming[26].

20

2.1 Historia i allmnhet, och Linux-varianterna i synnerhet inte passerat testerna r mest en kostnads- och tidsfrga: fr det frsta att det kostar. Massor. Fr det andra tar det tid eftersom certieringen r en noggrann och lngsam process och mste gras fr varje ny distribution (se kapitel 4 fr detta begrepp), och Linux-distributionerna kommer ut i s snabb takt, att innan en distribution blivit certierad kan det ha kommit tv nya versioner av distributionen, och d r det hela inte srskilt meningsfullt. Det kan sgas att Linux denitivt r en predikant i POSIX-kyrkan, men saknar den helt ondiga frgyllda biskopskrklan i massivt guld med inskriptionen UNIX fr att visa sin tillhrighet till denna smala sammanslutning. Mnga hvdar dessutom att begreppet UNIX r s utbrett att det r ortt och felaktigt av The Open Group att sitta p detta varumrke. Gruppen har p senare tid brjat ta vissa steg mot att frndra sin instllning, en process som sannolikt inte kommer att g srskilt snabbt.

2.1

Historia

POSIX-systemens historia6 brjade r 1969 d Ken Thompson skrev det frsta UNIX-systemet direkt i assembler fr en dator av typen PDP-7 frn fretaget Digital. Namnet UNIX r en travesti p MULTICS, ett annat tidigt eranvndarsystem. UNIX var i brjan ett enanvndarsystem som Thompson anvnde till att bearbeta text och skriva spel p.7 Ngot r senare ck Bell Labs en PDP-11, och tillsammans med kollegan Dennis Ritchie skrev Thompson om hela UNIX frn brjan fr denna maskin. Forskningsdirektrerna p Bell Labs imponerades av Thompsons och Ritchies arbete, och efter att Ritchie skapat programsprket C fr att gra operativsystemet portabelt, skrev de om UNIX en tredje gng, nu i C. Det r ingen slump att C har kallats en stor makroassembler, det var nmligen precis vad det var avsett att vara ett portabelt assemblersprk som kunde implementeras p era datorer s att konstruktrerna slapp skriva om UNIX frn brjan fr varje nytt system
6 Hr presenteras en mycket kortfattad variant av UNIX historia, fr en mer utfrlig och detaljerad historieskrivning, se standardverket A Quarter Century of Unix [29]. 7 Numera r POSIX-familjen naturligtvis eranvndarsystem, hundratals personer kan anvnda ett och samma GNU/Linux-system samtidigt, ven om de inte fysiskt kan sitta vid konsollen, den specika datorns skrm och tangentbord, samtidigt. Fleranvndaregenskapen i POSIX-system upplevs genom att anvndaren ppnar fnster in i en annan dator och startar sina program dr, medan det synliga grnssnittet, oavsett om det r text eller fullgraskt, skdliggrs p den maskin, ofta kallad terminal eller klient dr anvndaren sjlv sitter.

21

Kapitel 2 POSIX som skulle stdjas.8 UNIX kom tidigt att erbjudas till era universitet, och UNIX-anvndarna framfr alla andra kom att bli Berkeley-universitetet9 strax utanfr San Francisco. UNIX levererades till Berkeley i form av kllkod p magnetband. Universitetet ck sjlva se till att kompilera operativsystemet och f det att fungera. Efter att den sjunde versionen av UNIX, knd som Seventh Edition, frdigstllts slutade AT&T emellertid att leverera kllkod till sitt operativsystem. Universitetet fortsatte d att utveckla operativsystemet fr sina egna behov p egen hand, och denna version av UNIX nns kvar nnu idag under namnet BSD Berkeley Standard Distribution, allmnt kallad Berkeley UNIX. Denna blev under denna tid s populr att universitetet kunde starta en egen avdelning i det enda syftet att vidareutveckla och slja BSD. Denna brjade sedan att spridas ungefr samtidigt som AT&T frdigstllde en kommersiell version av UNIX under namnet System III.10 Med detta uppstod den frsta dialekten av UNIX. Runt r 1980 brjade AT&T slja UNIX som OEM-produkt11 och drvid uppstod ett ertal nya dialekter. Bland de som licensierade kllkoden till UNIX fanns det svenska fretaget DIAB, Dataindustrier AB, som r 1983 brjade slja sin egen UNIX-dator DS90-00 med sin egen dialekt DNIX, baserad p UNIX System V. Luxor AB sin sida tillverkade ocks de en UNIX-dator med namnet ABC-1600, och en egen UNIX-dialekt med namnet ABCenix. DIAB tillverkade och slde ven en egen C-kompilator som r den enda del av verksamheten som verlevt i form av det USA-baserade fretaget WindRiver Systems som idag ven utvecklar ett realtidsoperativsystem, ngot som var en viktig del redan i den UNIX-variant som sldes av DIAB. Emedan ABC-1600 aldrig var ngon stor framgng kom DS90, och dess efterfljare i DS90-nn och DIABnnnn-serierna att sljas med stor framgng till bland annat svensk stat och miltr. P detta vis kom UNIX frsta gngen till Sverige. r 1991 kptes DIAB av fretaget Bull och produktionen av DIABdatorerna och operativsystemet DNIX lades ned. I USA brjade AT&T tillsammans med Sun Microsystems vid denna tid att utveckla en mer standardiserad UNIX under namnet System V Release 4, eller SVR4 som den ofta kort och gott kallas. Denna version
kom senare att vidareutvecklas till det objektorienterade sprket C++ av Bjarne Stroustrup efter ider frn programsprket SIMULA, och frn C och C++ kommer den huvudsakliga inspirationen till programsprket Java. 9 UC Berkeley, University of California, Berkeley 10 Seventh Edition kommer fre System III, dessa versionsnummer r ur olika serier och skall inte frvxlas. 11 OEM Original Equipment Manufacture, betecknar hr en produkt som tillverkas av ett fretag men sljs under ett annat fretags namn.
8C

22

2.2 Mach, MacOS X, GNU/Hurd slpptes r 1989. I brjan av 90-talet kom denna version att integreras med verktyg frn BSD och gavs d namnet Solaris. Suns version av UNIX kallas alltjmt Solaris. r 1993 slde AT&T sin UNIX-verksamhet till Novell som dock snart styckade upp det hela och slde vidare rttigheterna. Namnet UNIX frvaltas som nmnts av The Open Group (ett industrikonsortium) medan kllkoden sldes till Santa Cruz Operation, SCO, som idag sljer denna original-UNIX under eget namn. De anstllda som arbetat med UNIX p AT&T (eller rttare sagt deras dotterbolag) sldes till Hewlett-Packard. BSD sin sida fortsatte leva och distribueras fritt. I mitten av 1990talet delades det dock upp i tre olika grenar, FreeBSD, NetBSD och OpenBSD. Dessa skiljer sig t stillvida att FreeBSD r inriktad p maximal skalbarhet fr stordrift p servrar, NetBSD inriktad p maximal portabilitet mellan olika former av hrdvara, och OpenBSD inriktad p maximal skerhet.

2.2

Mach, MacOS X, GNU/Hurd

I POSIX-gruppen ingr ven en del andra operativsystem, undantaget de som redan nmnts. Detta avsnitt r kursivt, och r du helt ointresserad av det som nmns i rubriken kan du lika gott hoppa ver det helt. Under brjan av 1980-talet diskuterades inom den datorvetenskapliga disciplinen en mngd upptnkliga arkitekturer fr konstruktion av krnor fr operativsystem. Precis som nr det gller arkitektur fr husbyggnation nns det p detta omrde inte ngot entydigt svar p hur en bra operativsystemarkitektur ser ut. I vissa kretsar uppstod en konsensus runt att s.k. mikrokrnor var framtidens melodi, och att alla operativsystem hdanefter skulle byggas enligt denna princip. Mikrokrnorna skulle hantera grundlggande hrdvaruabstraktion, minnestilldelning till program som krde i datorn, samt hantering av processer (vilket vi kommer till lngre fram i boken). Krnan skulle vara s liten, kompakt och abstrakt som mjligt, medan mer avancerade ting som lsystem skulle hanteras av externa servrar, program som krde fr sig sjlva, separat frn krnan, och som kunde stngas av, startas om, krascha o.s.v. utan att pverka stabiliteten i sjlva krnan. (Se illustrationen i gur 2.2.) Det nns inga direkta bevis fr att detta skulle vara bra, bara en allmnt hllen argumentation fr att kad abstraktion ofta kar stabilitet och utvecklingstakt. Mach, QNX och L4 r alla exempel p sdana mikrokrnor. Linux dremot r ingen mikrokrna, den har drivrutiner fr hrdvara och lsystem inkompilerade i krnan och kallas drfr fr en monolitisk krna. 23

Kapitel 2 POSIX
USB Drivrutiner Filsystem

KRNA

PCI

Figur 2.2: En mikrokrna och omgivande komponenter som inte r en del av krnan. QNX har t.o.m. drivrutiner fr hrdvara utanfr krnan, Mach har det inte. Jmfr med gur 1.3.

Linux kan emellertid byta ut hela moduler i krnan under drift p samma vis som du byter legobitar i ett legohus, det r inte s att krnan skulle sakna manverbarhet bara fr att den r monolitisk. Krnan Mach utvecklades under 1980-talet vid Carnegie-Mellon University i USA och frutspddes en lysande framtid. Den fll i slummer ngra r och vidareutvecklades sedan ngot vid University of Utah till Mach 4. Emellertid orkade f operativsystemtillverkare frska sig p att implementera de servrar som Mach behvde fr att fungera ordentligt enligt mikrokrnepricipen. Istllet valde era utvecklare att kompilera in stora delar av BSD direkt i krnan, helt i strid med mikrokrnekonceptet, och skapade p s vis en ny UNIX-liknande krna. Denna loso tillmpades i svl IBM:s OS/2 som i NeXTSTEP, vilket i sin tur ligger till grund fr Apple:s senaste krna Darwin, vilken r identisk med den krna som anvnds i operativsystemet MacOS X. ven om dessa projekt ofta skryter med sin mikrokrnearkitektur r det oklart hur korrekt detta egentligen r, den som bekymrar sig om saken kan med frdel studera detta akademiska sprsml och skapa sig en egen uppfattning i frgan.12 Den enda krna som verkligen anvnder Mach p det stt som var tnkt r GNU-projektets i dagslget ofullstndiga krna HURD.13 Tanken med detta projekt var ursprungligen att det snabbt skulle bli klart, just drfr att det anvnde en mikrokrna som enligt detta tnkestt skulle gra det enkelt att felska systemet. Denna mlsttning om snabbhet har misslyckats, men HURD utvecklas fortfarande och skall enligt
exempelvis comp.os-research FAQ [7] fr utfrliga diskussioner. utlses HIRD of Unix-Replacing Daemons, dr HIRD str fr HURD of Interfaces Representing Depth o.s.v.
13 HURD 12 Se

24

2.3 POSIX innehll

Figur 2.3: Ett vanligt skal (bash).

planen bli krnan i GNU OS, bestende av HURD och GNU-projektets vriga program. HURD:s Unixersttning r fr vrigt tnkt att vara portabel mellan olika mikrokrnor, och vissa frsk har gjorts fr att f den att kra ovanp L4.

2.3

POSIX innehll

POSIX-standarden innehller en stor mngd denitioner. Detta rr sig frmst om biblioteksfunktioner i programbibliotek fr sprket C som mste stdjas fr att kunna uppfylla standarden. Fr den ordinarie anvndaren r detta inte speciellt spnnande, och denna bok handlar om att anvnda GNU/Linux, inte om att programmera det. Fr den vanliga anvndaren r det ett antal specika egenskaper som utmrker ett POSIX-system, vilka avhandlas i fljande avsnitt.

2.3.1

Skal och kommandon

Bland det frsta du erfar i ett POSIX-system r betydelsen av ett skal (engelska: shell). Andra beteckningar r kommandotolk, kommandorad, eller slarvigare: prompt, vilket egentligen bara betecknar en rad i ett skalfnster av den typ som visas i gur 2.3. Anvndare tenderar att knna igen ett skal nr de ser det. Skalet r en interaktiv ppning in i din dator och ger dig fullstndig tillgng till all information om systemets tillstnd. Hrifrn kan du starta och avsluta program, dda program som har stannat eller starta om datorn. I princip allt systemunderhll kan sktas frn ett skal. Skal kan ppnas frn alla former av terminaler och ver ntverk via protokollen SSH eller Telnet. 25

Kapitel 2 POSIX Om du har svrt att lokalisera terminalen i ditt system, s blddra grna fram till avsnitt 2.3.11 p sidan 105 och ls i frvg s att du kan hitta den. ppningen in i din dator som erbjuds av skalet ser ut ngot t det hr hllet: Tillmpning Skal Krna Detta skall tolkas s, att anvndaren via skalet kan starta olika tillmpningsprogram, och skicka kommandon till krnan. Alla dessa ppningar in i datorn kallas ofta slarvigt fr terminaler, ett ord som kommer frn den tid d datorer var placerade i ett datorrum, och enkla enheter med skrm och tangentbord placerades ut p olika arbetsplatser fr att mjliggra tkomst till sjlva datorn via en lng sladd. Denna terminologi har kommit att hnga kvar, och alla ppningar in i datorn, oavsett om de kommer frn tangentbordet och skrmen p din PC, ver ntverket eller via serieporten, kallas helt sonika fr terminaler. I dessa terminaler kan du sedan interagera med ditt skal. Skalen har den egenheten att de ofta anvnds som programsprk fr att skriva enkla datorprogram, skript. Detta r ett vanligt anvndningsomrde, och knns igen frn operativsystem som exempelvis CP/M eller DOS dr det var mjligt att skriva s kallade batchler (.BAT) som krdes i kommandotolken. Alla operativsystem har i princip skriptsprk av detta slag men dljer det ibland p olika listiga vis. AppleScript, VBScript, AREXX o.s.v. r andra skriptsprk som varit populra genom ren. Ibland r de skilda frn skalet och ibland inte. Vi skall titta nrmare p skript lngre fram. POSIX specicerar att ett skal skall nnas tillgngligt p alla system under namnet sh (som i shell) samt en rad karakteristika fr detta skal. Skal kommer dock i olika smaker: Almquist Shell eller ash r en klon av Bourne-Again Shell (se nedan) skriven av Kenneth Almquist, och avsett fr att snabbt kra skript skrivna i bash. Det r inte avsett att anvndas interaktivt. Bourne Shell eller sh (inga andra bokstver, eftersom det var det frsta) utvecklades av Steven Bourne vid AT&T Bell Laboratories. Detta r det ldsta skalet, och frn detta program kommer ordet shell som anvnds om skalprogram. 26

2.3 POSIX innehll Bourne-Again Shell eller bash r GNU-projektets implementation och utkning av Bourne Shell. Det inkluderar ider frn svl Korn shell och C shell (se nedan). C Shell eller csh utvecklades av Bill Joy vid University of California. Det innehller inslag av syntax frn programsprket C i syfte att gra skalet mer programmerbart d det anvnds som skriptsprk. Korn Shell eller ksh r det skal som pminner mest om POSIX-specikationen, det utvecklades av David G. Korn vid AT&T Bell Laboratories. TENEX C Shell eller tcsh r en utkning av C Shell som utvecklats med operativsystemet TENEX som frebild. Det r kompatibelt med C Shell och i sjlva verket oftast det du fr upp om du startar programmet csh. Z Shell eller zsh kombinerar delar av Korn Shell, C Shell och TENEX C Shell med en del egna uppnningar. Z Shell skrevs ursprungligen av Paul Falstad under hans studietid vid Princeton University. Detta r frmodligen det mest populra skalet efter BourneAgain Shell. Det skal du fr upp om du inte specikt frgar efter ngot annat brukar vara Bourne shell (t.ex. p BSD-varianterna) eller Bourne Again Shell (i GNU/Linux). Mnga anvndare av POSIX-system lgger stor vikt vid betydelsen av att anvnda det ena eller andra skalet, men du kommer inte ifrn att om du anvnder era olika system s r Bourne shell det du alltid mste kunna hantera, om inte annat s fr att kunna installera ditt eget favoritskal. (Se ven avsnitt 2.3.4 fr att se hur du bestmmer standardskal fr din eller andras anvndare.) Den som anvnder ett fnstersystem som t.ex. X behver kanske inte anvnda skalet till dagligdags, men det r i dagslget absolut ndvndigt att kunna hantera ett skal fr att p allvar bemstra ett POSIXsystem. I Microsoft Windows-vrlden r skal inte helt obekanta, men anvndare som kommer till POSIX-vrlden frn Macintosh kan vara mycket ovana vid att anvnda skal och stter drmed p en trskel. I ditt skal br du anvnda tabkomplettering. Detta innebr att nr du brjat skriva ngonting som operativsystemet borde kunna gissa sig till fortsttningen p, s slr du till tabulatortangenten. Om du till exempel skriver cat /etc/pas och slr till tabulatortangenten ( ), s kommer ditt skal i normalfallet att sjlv komplettera de sista tecknen s att kommandot cat /etc/passwd blir synligt p skrmen. Tabulatorn kan ven gissa sig till namn p kommandon. Tabulatorknepet r direkt ndvndigt att 27

Kapitel 2 POSIX kunna fr att snabbt och inkt kunna manvrera i skalet och du br lgga ngra minuter p att experimentera med det och nta in det.14 Tabbkomplettering nns i alla civiliserade skal som ngonsin skapats. En annan egenhet i skal rr piltangenterna. Uppt- och nedtpilen p tangentbordet () lter dig vandra genom kommandohistorien och upprepa sekvenser som du tidigare har slagit in. Det r ofta smidigt att kunna teranvnda ldre kommandosekvenser genom att bara blddra upp ett par steg och trycka ENTER.15 De esta skal kan ven upprepa gamla kommandon genom att skriva tv utropstecken (!!) fr att beteckna fregende kommando. Du kan exempelvis upprepa fregende kommando och lgga till ngot du glmde: med !! -a kommer fregende kommando att upprepas med vxeln -a. Utver detta har de esta skal vissa mindre egenheter, s du br lsa dokumentationen fr det skal du tnkt (eller tvingats) anvnda fr att ha full kontroll ver det. Det vanligaste och frsta du gr i ett skal r att ge kommandon till operativsystemet. Kommandon i POSIX-system skrivs med kommandovxlar av bindestreckstyp, och har formen: kommando [-a] [-b] [-c vxelargument] [-d|-e] [operand. . . ] Vi tolkar detta abstrakta exempel: -a och -b r enkla vxlar (gr a, och b) En vxel ndrar funktionen hos ett kommando. De esta kommandon kan anvndas utan vxlar, men ofta nog behvs de. -c vxelargument r en vxel med en parameter vxelargument. Detta innebr, att frutom att vxeln -c aktiveras, skickas ngon form av extra information med som behvs fr just denna vxel. [-d|-e] betyder antingen vxel d eller vxel e inte bda. Operanden till sist r vanligtvis en l som operationen skall utfras p. Klamrarna ovan [foo] betyder genomgende att denna del r frivillig, dvs ej ndvndig.16 Ett par exempel:
14 Se

denna skalvning som POSIX-motsvarigheten till en skalvning.

15 Denna funktion fanns ven i senare versioner av MS-DOS under namnet DOSKEY,

och ck aktiveras fr hand. 16 Syntaxen r beslktad med reguljra uttryck, se avsnitt 2.3.6.

28

2.3 POSIX innehll

# ls Mina dokument

foo.txt

bar.txt

Kommandot ls (som betyder list) visar ler i en katalog. Inga vxlar anges.
# ls -l drwxr-xr-x -rw-rw-r--rw-rw-r-5 sofie 2 sofie 9 sofie sofie sofie sofie 4096 1 mar 00.05 Mina dokument 128 3 aug 20.49 foo.txt 256 24 jul 23.09 bar.txt

Hr anger den enkla vxeln -l att jag vill ha lngt format av samma information. Drfr fr jag ocks samma information som tidigare, plus en massa extra detaljer som jag bett om att f se. I vissa fall kan enkla kommandon anvndas med era vxlar trunkerade: kommando -abcDxyz vilket aktiverar alla vxlarna a,b,c,D,x,y och z. Hr r ett exempel:
#ls -al drwxrwxr-x drwxr-xr-x drwxr-xr-x -rw-rw-r--rw-rw-r-2 84 5 2 9 sofie sofie sofie sofie sofie sofie sofie sofie sofie sofie 4096 23 jun 20.27 . 4096 14 aug 20.25 .. 4096 1 mar 00.05 Mina dokument 128 3 aug 20.49 foo.txt 256 24 jul 23.09 bar.txt

Hr anges bde att lngt format nskas p utskriften, och att alla ler skall visas, vilket resulterar i att de normalt dolda katalogerna . och .. syns. Vxlarna r knsliga fr stora bokstver. Sjlva kommandona bestr som regel av tv till nio sm bokstver. Listigt nog har de mest frekvent anvnda kommandona givits korta namn s att de skall g snabbt att skriva. Detta gr ibland att kommandosprket knns kryptiskt, du kanske har svrt att intuitivt gissa namnet p ett kommando utan fr nta in det. Vinsten ligger i den snabbhet du uppnr efter viss vning.17 Hr fljer ngra grundlggande kommandon som du mste knna till fr att komma igng i ett POSIX-kommandoradssystem.18 En del
17 Det skall noteras att vissa av kommandona r inbyggda i skalet, s att de alltid nns tillgngliga om du har ett skal. Typiskt nog r till exempel ls inte inbyggt i skalet, medan cd dremot r det. Du kan sledes g omkring i lstrukturen men inte se ngonting, om bara kommandoskalet fungerar. De vriga kommandona (som ls) r (liksom skalet) vanliga datorprogram som ligger i lsystemet, oftast i katalogen /bin eller /usr/bin. (Se avsnitt 2.3.5 fr mer information om programmens placering i lsystemet och om lsystemet i strsta allmnhet.) 18 POSIX kallar inte dessa kommandon fr kommandon, utan verktyg (engelska: utilities).

29

Kapitel 2 POSIX
admin basename cal chown compress cut diff env export nd getconf id lex logname man newgrp paste prs qmove qstat rm set strings tee tr ulimit unget uuencode wc zcat alias batch cat cksum continue cxref dirname eval expr fold getopts ipcrm link lp mesg nice patch ps qmsg qsub rmdel sh strip test trap umask uniq uustat what ar bc cd cmp cp date dot ex false fort77 grep ipcs ln ls mkdir nl pathchk pwd qrerun read rmdir shift stty time true unalias unlink uux who asa bg cow colon crontab dd du exec fc fuser hash jobs locale m4 mkfo nm pax qalter qrls readonly sact sleep tabs times tsort uname unset val write at break chgrp comm csplit delta echo exit fg gencat head join localedef mailx more nohup pr qdel qselect renice sccs sort tail touch tty uncompress uucp vi xargs awk c99 chmod command ctags df ed expand le get iconv kill logger make mv od printf qhold qsig return sed split talk tput type unexpand uudecode wait yacc

Figur 2.4: Verktyg (kommandon) som denieras av POSIX-standarden. De som jag av ngon anledning ansett vara extra viktiga r markerade med fetstil.

begrepp i fljande framstllning r kanske inte alldeles uppenbara och frklaras p annan plats i boken, s tag dem fr vad de r eller referera till bokens index om ngot r fr svrt att frst. En fullstndig lista ver POSIX-standardkommandon ternns i gur 2.4. Fler kommandon kommer att presenteras efter hand som vi avhandlar de omrden de berr. Dessa kommandon har ett visst grundlggande beteende som r denierat i POSIX-standarden. Utver detta innehller de olika tillgngliga implementationerna av dessa ofta en rad utkningar, s fr varje nytt system du anvnder br du underska vilka speciella egenheter kommandot har p detta system. Till exempel har GNU-projektets implementationer ofta mnga specialparametrar och nesser som kan vara bra att knna till. cat foo.txt slnger ut len foo.txt i skalet, dvs i din terminal, ditt fnster. Om nu mllen inte skulle vara en textl kan resultatet bli mindre lyckat. Ordet cat kommer frn engelskans catenate, som betyder koppla efter varandra, seriekoppla, sl samman vilket ocks r ett vanligt anvndningsomrde fr kommandot, vilket vi skall titta nrmare p i avsnitt 2.3.9. Testa grna ngot enkelt i stil med cat /etc/passwd.

30

2.3 POSIX innehll


1 2 3 4 5 6 7 8 9 n Anvndarkommandon, verktyg Systemanrop (fr programmerare) Bibliotekanrop (i programbibliotek) Linux: speciella ler (ssom ler i /dev-hierarkin av lsystemet), BSD: krngrnssnitt Filformat fr kongurationsler, standarder, miljer, makron Spel, demonstrationer, illustrationer Linux: drivrutiner och liknande fr hrdvara, BSD: diverse information Systemadministrationsmanualer, privilegerade kommandon (sdant som ternns i systemets /sbin-kataloger) Krnutvecklingsriktlinjer, referenser Inbyggda kommandon i Tcl/Tk

Figur 2.5: Tillgngliga manualsektioner fr man-kommandot i Linux och BSD.

cd foo byter aktuell katalog, folder, mapp eller vad du nu nskar kalla det till foo cd utlses change directory. Den frdenierade katalogen: .. (som i cd ..) gr ned en niv i trdet, d.v.s. ett steg nrmare roten. Allmnt hllet exempel: cd /etc gr att du stller dig i katalogen /etc. (Fr mer information om dessa mystiska lsystemsting, ls avsnitt 2.3.5.) cp foo bar utlses copy och kopierar en l frn foo till bar. Mlet kan vara en katalog, i s fall kopieras len dit med sitt gamla namn. Vanlig variant: cp -R foo/ bar/ kopierar ett helt katalogtrd med underkataloger och allt. date ger aktuellt datum och aktuell tid. Ofta vill du anvnda din dator som armbandsur och skriver drfr date. Detta kommando kan dock tyvrr inte ordna romantiska trffar. echo foo skriver ut (engelska: echoes) texten foo p terminalen. Ganska meningslst kan tyckas, men detta kommando r viktigare n det frst ser ut. Vi kommer att anvnda echo en hel del senare. ls efter engelskans list listar lerna i aktuell katalog. Detta r ofta det frsta kommando du skriver, ibland behver du visa extra linformation och skriver d ls -al vilket ger detaljerad information om ler, lnkar med mera.

31

Kapitel 2 POSIX man sektion foo ger dig tillgng till en manualsida om kommandot, biblioteksfunktionen, demonen o.s.v. med namnet foo. Det frivilliga argumentet sektion anger vilken typ av manualsida du r ute efter, det kan nmligen nnas tv eller era manualsidor fr samma uppslagsord ibland. (Strngt taget r inte sektionsoperanden en del av POSIX-standarden, men anvnds i princip i alla POSIXsystem.) En lista ver olika sektioner nns i gur 2.5. Varfr dessa underliga sektioner? Fr att frst detta skall du frestlla dig att dokumentationen till UNIX-system traditionellt levererades i ett antal olika tjocka ringprmar, som var och en dokumenterade en viss del av operativsystemet. Dessa ringprmar svarar mot de olika sektionerna bland mansidorna. man 7 signal kan sledes tolkas som sl upp sidan om signaler i ringprm 7, den som handlar om drivrutiner och liknande. Om du bara skriver man signal kommer detta att motsvara att kommandot letar efter signaler i ringprmsordning, frst i prm 1 med anvndarkommandon o.s.v. Skandet upphr nr den frsta manualsidan med namnet signal ptrffas. (I just detta fall stannar du p ett GNU/Linux-system i sektion 2 om systemanrop, trots att det kanske var sektion 7 du var ute efter.) Med man -k nyckelord gr det att ska efter ett nyckelord i alla manualsektioner, vilket kan ta lng tid (och ger d ofta en omfattande trfista, som sedan i sin tur fr beskas med man-kommandot). Om inte man ger nskad information kan du prova med: info foo ger dig tillgng till en texinfo-sida om kommandot (etc.) foo. Skillnaden mellan man och info r att medan man r en POSIXstandard fr manualer r texinfo-manualerna en GNU-specik informationstjnst, som bland annat har utkat std fr att framstlla tryckta versioner av dokumentationen. texinfo-informationen r ofta mer omfattande, vlskriven och pedagogisk, men r inte alltid tillgnglig. De esta POSIX-system du stter p har med stor skerhet en mngd GNU-program installerade, och om de r ordentligt installerade ger texinfo ofta den information du behver. Fr mer information om GNU-projektet, se avsnitt 5.1. mkdir foo skapar i aktuell katalog en ny katalog med namnet foo. Du kan sedan kopiera ler till din nya katalog eller t.ex. g ned i den med cd foo. mv foo bar yttar len foo till bar. Detta kommando anvnds ven fr att byta namn p ler, du s att sga yttar dem frn ett lnamn till ett annat, mv gammaltnamn nyttnamn. Givetvis kan du ocks 32

2.3 POSIX innehll ytta ler till andra kataloger med exempelvis mv foo.txt /foo/ bar/fnord/. Om du vill ytta en hel katalog gr det ocks bra, med mv foo/ bar/ yttas katalogen foo ned i katalogen bar. rm foo tar bort foo. Vanliga varianter: rm -rf foo tar bort foo oavsett om detta r en l eller en katalog, och allt som eventuellt ligger i den katalogen, om det r en katalog. Kommandot rm r precis livsfarligt, det r frenat med stora risker att skjuta sig sjlv i foten. Du mste dock anvnda det en hel del. rmdir foo samma sak fast enbart fr kataloger. De esta brjar snart att anvnda rm -rf foo istllet fr detta kommando. uname -a visar information om det POSIX-system som du just nu benner dig i. Typiskt resultat: Linux felicia 2.4.20-9 #1 Wed Apr 2 13:42:50 EST 2003 i686 i686 i386 GNU/Linux Detta visar att du kr Linux p en dator med namnet felicia, att Linuxkrnan har version 2.4.20 och att det r den nionde upplagan av krnpaketet. Datumet talar om nr krnan r kompilerad. i686/i386 r namnet p olika maskinkodsuppsttningar19 frn Intel och sger att du nog kr en form av Pentium III (vilket r en typisk produkt med std fr instruktionsuppsttningen i i686-arkitekturen). De tre ix86-siffrorna indikerar maskintyp, processor och plattform. Skillnaden mellan de tre r av intresse fr f. Hr r ett annat mjligt resultat: SunOS fnord 5.8 Generic_108529-14 i86pc i38620 exit avslutar ditt skal och stnger terminalen dr det fanns. Det fungerar ven att hlla inne knappen Ctrl och trycka p d, om du str i brjan av en rad. vi r en texteditor, se avsnitt 2.3.7. Du kommer att behva anvnda ngon form av texteditor ganska mycket.

2.3.2

Processer

Vi behver nu lra oss ngot om hur datorprogram krs i ett POSIX-system. Ett centralt koncept fr att frst detta r begreppet process. Processer (engelska: process eller task, som i multitasking) r datorprogram som krs i en dator.
kallade ISA, Instruction Set Architectures. (SunOS) p maskinen fnord version 5.8 (kallad Solaris 8) fr Intel-PC med i386-liknande processor.
20 Solaris 19 Ibland

33

Kapitel 2 POSIX Nr vi i dagligt tal sger datorprogram s kan vi mena olika saker: programmet utskrivet p papper, dess bestndsdelar (algoritmer), det fnster vi ser p skrmen nr vi startar ett datorprogram eller den l som innehller programmets krbara kod, och som har ett visst lnamn som oftast r detsamma som programmets namn. En process kan dremot inte existera utanfr datorns minne, utan bestr av det avtryck ett program gr i operativsystemet nr det krs. En process kan startas, stoppas, fortstta dr den stannade, och ddas. Nr den ddas frsvinner programmets avtryck ur operativsystemet och minnet den anvnde kommer att frigras. Tekniskt sett bestr en process av ett par minnesomrden och en programstack i datorns minne. Detta r av intresse fr programmerare, men inte fr anvndare. Programmerare intresserar sig ocks fr trdar, ven kallade lttviktsprocesser, vilket r delar av en och samma process, avsedda att exekveras parallellt. Exempelvis kan programmet grip lsa av ett ljudspr frn CD-skiva och samtidigt konvertera ett tidigare lst spr till MP3.21 Dessa tv parallella uppgifter sker i tv olika trdar. Att tillverka program som arbetar p detta vis kallas jmlpandeprogrammering (engelska: concurrency programming). Vi skall hr dock fokusera p riktiga processer. POSIX-systemen r i allmnhet multiprocessystem, vilket betyder att era processer, datorprogram, kan kras parallellt i operativsystemet, precis som en mnniska kan cykla och tugga tuggummi samtidigt. Graskt sett kan detta ofta upplevas som era fnster dr det hnder saker samtidigt: en lm spelas upp i ett fnster medan du ordbehandlar i ett annat fnster (varfr du nu skulle vilja gra det). Processhanteringen i POSIX-systemen r preemptiv, vilket innebr att vissa processer kan stannas mitt i arbetet, vnta en tid och sedan aktiveras igen. Detta r viktigt eftersom datorns processor (om den bara har en) bara kan hantera en process t gngen. Den kan d ge illusionen av att era processer krs samtidigt genom att vxla mellan dem i rask takt, vilket ocks r vad som sker i de esta datorer. (Om du verkligen har era processorer i din dator kan programmen naturligtvis verkligen kra samtidigt ocks.) Tidigare versioner av Microsoft Windows22 saknade std fr preemptiv multiprocessering, och ck istllet frlita sig p att processerna frivilligt lmnade ifrn sig processorn nr andra program behvde ha tillgng till den. Detta innebar att nr ett program kraschade, hngde sig, kraschade samtidigt hela operativsystemet och datorn ck startas om. Med preemptiv multiprocessering r det nstan alltid mjligt att
21 Se 22 Windows

vidare avsnitt 11.7.3 p sidan 398. 3.11, Win16

34

2.3 POSIX innehll undvika sdana situationer, och hos POSIX-systemen har detta alltid varit en naturlig ingrediens. Processer kan starta nya processer. Om du skriver ett kommando i ett skal startas detta som en ny process, om det inte r frga om ett inbyggt kommando. Processer har ocks gare, vilket r identisk med en viss anvndare i systemet, vilket kan vara en fysisk person, rootanvndaren, eller en abstrakt anvndare av ngot slag (se avsnitt 2.3.4). En process som startats av en annan process kallas fr ett barn (engelska: child) till denna process, och den process som startat en annan process kallas fljdaktligen fr dess frlder (engelska: parent). Detta slktskap kan g i era led. Att starta en process kallas att grena (engelska: fork) frn frldern, och att avsluta en process som inte vill avsluta frivilligt kallas fr att dda (engelska: kill) processen. Anledningen till att det kallas fr att grena r att exekveringsvgen delas i tv delar, en fr den gamla processen och en fr den nya processen, som tilldelas ett nytt processnummer. Ibland anvnds ven ordet gafa om processgrening, eftersom versttningen av det engelska ordet fork r lite otydlig. Denna terminologi skall inte vertolkas. Det r exempelvis fullstndigt i sin ordning att ett barn ddar sin frlder utan att detta fr oidipala konsekvenser, och processer frkar sig uppenbarligen hermafroditiskt. En process kan i huvudsak benna sig i endera av tv lgen: krande (running) eller sovande (sleeping). Att en process r krande betyder att den arbetar och utfr berkningar, uppspelning, kopiering, utskrift eller vad den processen nu r avsedd att gra. En sovande process vntar p att ngon annan process skall bli klar med ngot, eller p att den p ngot annat vis skall anropas. Om du undersker processlistan p ett POSIX-system kan du ofta se mngder av processer, men oftast r det bara tv-tre stycken som verkligen kr, de vriga ligger och sover och tar inte kraft frn datorns processor. Alla processer tar dock minne i ansprk och allt er bonusprocesser kar behovet av stora mngder minne. Varje process i ett POSIX-system har ett ID-nummer, kort och gott kallat PID - process ID. Dessa ID-nummer kan teranvndas, men s lnge processen kr eller sover kommer den att behlla sitt ID-nummer. Frn skalet kan du alltid som anvndare starta nya processer, d.v.s. kort och gott kra datorprogram. Skriver du till exempel kommandot ls s kommer detta att starta programmet ls, och det kommer att kras som en egen process. Denna process kommer dock att vara bunden till det skal dr du startade processen, och all in- och utmatning kommer ocks att ske i detta fnster. Detta kallas fr en frgrundsprocess. 35

Kapitel 2 POSIX Om du vill starta processen parallellt med ditt vriga arbete i skalet, kan du skriva ett &-tecken efter kommandot. I fallet med ls r detta inte s meningsfullt, men om du exempelvis startar en webblsare vill du normalt inte att denna skall blockera allt vrigt arbete i skalet, och du skriver drfr mozilla&. Mozilla kommer d att startas bredvid skalet, och du kan fortstta skriva saker i ditt skal. Skalet kommer d ofta att skriva ut den nya processens jobbnummer, eller barnnummer (vilken process i ordningen som startats frn detta skal) inom klamrar, och sedan det globala processnumret, t.ex. [1] 16654 eller liknande siffror.23 En sdan process kallas fr en bakgrundsprocess. Felutskrifter och meddelanden frn det startade programmet kommer dock ven i fortsttningen att hamna i skalet dr det startades, s du br inte starta program som skriver ut stora mngder text p detta vis. Ibland kan det se ut som att skalet lst sig: du ser ngra utskrifter men ingen prompt. Om detta sker ska du prova att sl p tangenten ENTERett par gnger, prompten kommer d ofta tillbaka. Om detta nd inte fungerar kan processen ddas genom att du hller ned tangenten Ctrl och trycker p tangenten c (Ctrl+c). Skalet dr du startat dina processer kallas gruppledare och de barnprocesser, som startats i detta skal tillhr en och samma processgrupp. Denna terminologi gller bara processer som har startats i ngon terminal (vilket r platsen dr skalet i sin tur krs). Om du ddar gruppledaren kommer hela processgruppen att d. Detta innebr att om ditt skal avslutas, till exempel om du loggar ut, kommer alla processer som du startat i skalet ocks att d. Det hela kan liknas vid ett tgset: om loket som kr lngst fram stoppas av signalsystemet stannar alla vagnarna. Processer kan styras och kontrolleras frn skalet medan de kr. Fljande kommandon anvnds fr att kontrollera processer: ps listar alla processer som kr i ditt skals processgrupp. Nr du skriver kommandot dyker en kort lista ver processer upp, ngot i stil med:
# ps PID 16612 16636 16696 TTY pts/1 pts/1 pts/1 TIME 00:00:00 00:00:11 00:00:00 CMD bash emacs ps

Som synes ligger gruppledaren, skalet, verst. Tv processer har startats utver denna: emacs har startats i bakgrunden med kom23 Barnnumret, jobbnumret, har ocks viktiga funktioner. Vi kommer snart att komma in p hur jobbnummer anvnds.

36

2.3 POSIX innehll mandot emacs& och sedan har programmet ps krts, vilket resulterar i nnu en process. (Nr du ser resultatet har processen 16696 dock redan avslutats ps-kommandot r ju frdigt med sitt arbete!) PID-kolumnen visar processernas ID-nummer, TTY indikerar i vilken terminal processerna kr (se avsnitt 2.3.11 fr mer om detta) och TIME sger ngot om hur mycket CPU-tid processen har frbrukat, d.v.s. hur lnge operativsystemet varit upptaget med just denna process. Om processen inte gr ngot berkningsintensivt s kommer denna siffra att vara lg, som fr processerna ovan. Nr processerna sover tar de som bekant ingen CPU-tid, och de esta processer sover faktiskt fr det mesta. emacs-processen ovan har varit vaken i sammanlagt 11 sekunder. De vriga processerna har anvnt s lite tid att denna tid kan avrundas till 0. Kommandot har ngra standardvxlar: ps -a listar alla processer som kr i ngon terminal p det aktuella systemet, d.v.s. som anvnds av ngon anvndare. ps -A listar alla processer som ver huvud taget krs p systemet. ps -d listar alla processer som krs p systemet med undantag fr gruppledare. ps -l visar en detaljerad listning av processerna. ps -u anvndare listar de processer som tillhr en viss anvndare. (Se vidare avsnitt 2.3.4 om anvndare.) Dessa vxlar kan kombineras s att exempelvis ps -Al visar en detaljerad listning ver alla processer som kr i systemet, ett kommando som en systemadministratr (root-anvndare24 ) ofta fr tillflle att anvnda. kill PID anvnds egentligen fr att skicka signaler till en process. Sjlva namnet p kommandot antyder vad den grundlggande typen av signaler har fr funktion i POSIX-system: de anvnds fr att p ett eller annat stt sl ihjl processer. Signaler kallas ibland ven asynkrona hndelser. Det nns ofta en hel uppsj signaler implementerade i ett visst system, och eftersom POSIX inte specicerar mer n vilka som mste nnas, kan du skriva kill -l fr en obegriplig lista ver tillgngliga signaler. I gur 2.6 ternns en del signaler som alltid kan anvndas tillsammans med kill-kommandot.
24 Se

sidan 46

37

Kapitel 2 POSIX

signalnummer 1

signalnamn SIGHUP

innebrd hang-up har upptckts p den din terminal, (en rest frn den tid d folk i allmnhet anvnde terminaler via telefonntet). Flera programmerare har hittat kreativa anvndningsomrden fr denna signal, ofta anvnds den fr att be demoner (se 2.3.3) att lsa om sina kongurationsler. interrupt ett avbrott frn tangentbordet, i praktiken betyder detta att anvndaren har tryckt tangentkombinationen Ctrl+c, vilket normalt skall avsluta programmet. quit ett annat avbrott frn tangentbordet. Det stadkoms med tangentkombinationen Ctrl+\ och r inte direkt vanligt. Skickas normalt mellan processer. killsignalen om denna inte hrsammas av processen kommer processen att ddas av krnan. Denna signal kan inte p ngot vis blockeras av en process. alarmsignal frn en timer (du kan starta en process som fungerar som klocka fr en annan process). Normalt skall inte en anvndare behva skicka denna signal. Terminate, detta r den signal som normalt skickas frn kill-programmet, en artig begran till programmet om att avsluta sig sjlvt.

SIGINT

SIGQUIT

6 9

SIGABRT SIGKILL

14

SIGALRM

15

SIGTERM

Figur 2.6: Signaler som nns i POSIX-standarden, Linux har era signaler utver dessa.

38

2.3 POSIX innehll Signalerna skickas vanligen med kill -signalnummer PID (dr PID r processnumret) exempelvis det mycket bermda kill -9 PID som p ett relativt brutalt stt tar dd p vilken process som helst. Om du bara skriver kill PID s kommer signalen SIGTERM att skickas (d.v.s. detta r detsamma som att skriva kill -15 PID), vilket r en begran till programmet att avsluta sig sjlvt, och det frsta du skall prova d du vill stoppa en process. Om inte detta fungerar provar du i regel direkt kill -9 PID vilket r en begran till krnan om att avsluta processen med eller mot dess egen vilja. Det r ven mjligt att ange signalnamn istllet fr nummer, t.ex. kill -SIGTERM PID. Om du vill dda programmet som kr i frgrunden i en viss terminal kan du hlla nere tangenten Ctrl och sedan trycka c. Detta kommer att skicka signalen SIGINT till alla processer som kr i frgrunden, s att de avslutas, och s att du frhoppningsvis terfr terminalprompten. Om detta inte fungerar, d.v.s. om processen hngt sig, kan du vara tvungen att vxla till en annan terminal, lista processerna fr att hitta rtt processnummer (du ser ju dr vilken terminal vissa processer kr p) och sedan sl ihjl den trilskande processen med kill -9 PID. I sjlva verket kan du behva gra detta ganska ofta om du administrerar POSIX-system och testar nya program. I vissa operativsystem, speciellt system utformade fr tidskritiska applikationer, anvnds signaler fr att skicka meddelanden mellan olika processer. I POSIX-vrlden var det mjligen ven tnkt s frn brjan, men det har inte blivit s. Istllet har de esta operativsystem infrt ett parallellt signalsystem fr detta ndaml, och de ursprungliga signalerna anvnds bara fr att signalera fel och avsluta processer. Varfr r det ndvndigt att ange processnummer, varfr duger det inte med motsvarande programls namn? Ja, om du har startat tv olika instanser av ett och samma program, hur ska d systemet veta vilken av de tv som skall ha signalen? Om du nd vill dda program efter namn nns kanske kommandot killall fr Linux, (se sidan 205). Detta kommando har dock onskade effekter i andra POSIX-varianter: det anvnds fr att sl ihjl alla processer ver huvud taget!. Ett annat sdant kommando som nns ibland r pkill. nice -n frndring program startar programmet med en frndrad prioritet. POSIX-system har normalt mer n en prioritet, men du vet oftast inte hur mnga. GNU/Linux har prioriteter mellan -20 och 39

Kapitel 2 POSIX +19, och kan allts variera ungefr som utomhustemperaturen hr i landet. Precis som mnniskor reagerar p temperaturen s gr det lngsamt nr det r varmt och kvickt nr det r kallt. Lgt prioritetstal r allts detsamma som hg prioritet, och vice versa. Negativa prioriteter anvnds bara av systemet och root-anvndaren, medan en vanlig anvndare kan skjuta prioriteterna upp och ned en smula. Normalt startar programmen i en slags mittenprioritet (i GNU/ Linux med vrdet 10), s nice -n -2 fnord startar programmet fnord med lite hgre prioritet och nice -n 2 fnord startar programmet med lite lgre prioritet. Ditt vanliga skal kr dock i ganska hg prioritet, s normalt vill du bara skriva nice fnord& fr att kra processen lite lagom nerprioriterad i bakgrunden, s att den inte str andra processer. renice -n frndring PID kan justera prioriteten p ett program under krning. r ngon process vldigt viktig kan du skicka upp dess prioritet med renice -n -10 PID, och r den srdeles oviktig kan du skicka ned dess prioritet med renice -n 10 PID s kommer den knappt att kras alls. Med renice -g kan en hel processgrupp omprioriteras. En systemadministratr kan stta prioriteter fr en viss anvndare med exempelvis renice -n -3 -u nobody, om ngon anvndare med namnet nobody behver specialbehandling. Om du vill veta nnu mer om processer r detta ett bra tillflle att blddra fram till avsnitt 5.4.9 p sidan 202 och lsa om /proc-lsystemet i Linuxkrnan. Jobb Ett annat stt att hantera processer r att betrakta dem som jobb, knutna till ett visst skal. Denna kontroll r inte generell fr operativsystemet men nns implementerad i de esta skal. Internt verstter skalet jobbhanteringen till processhantering; syftet med jobben r att skapa en terminologi fr att interaktivt kunna styra och pverka processer som hr till ett visst skal. Fr jobbkontroll anvnds fljande kommandon: jobs listar i allmnhet de processer som startats i det aktuella skalet. Detta ger en lista med jobbnummer, vilka r skilda frn de processID-nummer, PID som kommandot ps anvnder, p s vis att de r 40

2.3 POSIX innehll begrnsade till ett visst skal, medan processnumren gller fr alla processer i operativsystemet.
# jobs [1]- Running [2]+ Running emacs foo.txt & xcalc &

I denna lista ser vi att bda jobben r krande, det ena r en EMACS-session och det andra programmet xcalc. Med vxeln jobs -l kan du ven f veta det vanliga, hederliga processnumret (PID), och med jobs -p fr du bara processnummer, och inget annat. (Men vad r det i s fall fr fel med att skriva bara ps?) bg %jobbnummer skickar ett jobb till bakgrunden. Detta r ekvivalent mot att starta programmet med ett &-tecken direkt efter programnamnet. Jobbnumret som anges r inte ett processnummer (PID), utan den typ av nummer som listas av kommandot jobs, och som r kopplat till ett visst skal. Om ingen parameter anges kommer jobbet verst i jobblistan att skickas till bakgrunden. Observera att jobbnumret skall anges efter ett procenttecken. fg %jobbnummer skickar ett jobb till frgrunden. Om inget jobbnummer anges kommer det jobb som ligger verst i jobblistan att skickas till frgrunden. disown %jobbnummer detta kopplar loss ett jobb frn det skal du just nu benner dig i. Det innebr att det frlorar slktskapet med gruppledaren och i princip frvandlas till en s kallad demon. (Fr mer om demoner, se nsta avsnitt.) Ett typiskt stt att anvnda detta kommando r att frst stta igng ett lgprioriterat jobb i bakgrunden med nice foo& dr foo r ngot kommando, underska dess jobbnummer med jobs, utfra disown p jobbet s det kopplas loss frn sessionen, och sedan logga ut. Jobbet/processen kommer d att fortstta kra p datorn tills det blir frdigt och avslutar av sig sjlvt, trots att den som startade jobbet har loggat ut och inte lngre anvnder datorn interaktivt. Detta r dock lite farligt det nns vissa jobb som av olika skl aldrig blir frdiga, s du br kolla att processerna inte ligger kvar och skvalpar i datorns minne era timmar eller veckor senare. Om du vill gra detta ofta nns det ett mera elegant stt: kommandot batch. Se avsnitt 2.3.12 som brjar p sidan 107 fr information om detta. 41

Kapitel 2 POSIX kill %jobbnummer kan anvndas p jobb precis som fr processer. Jobbnummer skrivs ju med ett %-tecken, s kill-kommandot vet vad det r frga om i vart fall. Om du vill dda alla jobb som startats i ett visst skal lite snabbt kan du gra det med jobs -x kill, vilket lter kommandot jobs g igenom alla processerna och dda dem en i snder. Frn en viss terminal kan du ven skicka den process som just nu kr i frgrunden till bakgrunden och samtidigt suspendera jobbet, genom att hlla nere tangenten Ctrl och trycka p z. Detta r inte s tokigt om du vill avbryta ngot fr gonblicket och gra ngot annat. Att jobbet suspenderas innebr att det inte blir mottagligt fr kommandon eller data, s ett graskt program som suspenderas ser helt enkelt ut att ha lst sig. I vissa POSIX-varianter nns ven kommandot stop %n fr att suspendera jobb, men detta r inte standard. Observera att suspendering inte r detsamma som att kra ngot i bakgrunden! Jobbet stannar helt, det fortstter inte i bakgrunden ngonstans. Ofta kommer du att anvnda Ctrl+z-kombinationen nr du glmt att starta ett program med programnamn&. Du fr ett upptaget skal, men vill ha tillbaka kontrollen, s du trycker Ctrl+z. Efter att programmet suspenderat s skriver du jobs fr att kolla vilket jobbnummer programmet har, och sedan lter du det kra vidare i bakgrunden med bg %n dr n r jobbnumret. (Oftast ligger det suspenderade jobbet verst i jobblistan, och du kan skriva bara bg.) Ett suspenderat jobb kan ltt terupptas om du skriver fg utan argument: det suspenderade jobbet hamnar nmligen frst i jobbkn och kommer automatiskt att terupptas om inget argument anges till fg. Om du vill avsluta sjlva skalets process, d.v.s. helt enkelt ta dd p den process dr du s att sga benner dig, kan du antingen skriva exit eller trycka Ctrl+d.

2.3.3

Demoner

Demoner (engelska: daemon, demon eller service) r en speciell sorts processer. Sinnebilden hr r inte en diabolisk varelse med spetsig svans och horn utan Maxwells demon, ett tankefoster inom fysiken som tnktes kunna minska entropin i ett slutet krl med gas genom att vid en skiljevgg i detta krl slppa igenom enstaka molekyler p ett rdigt vis. En demon r p samma stt en process som vntar p att ngot specikt skall intrffa, och nr detta sker vidta vissa specika tgrder. Demoner har alltid funnits i UNIX- och POSIX-vrlden, och ven lngt fre denna, i bland annat ITS (Incompatible Timesharing System) och vid forskningslaboratoriet Xerox PARC. 42

2.3 POSIX innehll Demoner har hand om diverse underhllsuppgifter och tjnster. Programlerna som demonprocesserna startas ifrn har ofta (men inte alltid) namn som slutar p bokstaven d, som i demon. De vanligaste demonerna och deras anvndningsomrde illustreras bst genom exempliering notera att detta inte r ngra standardprogram som alltid nns, det r bara exempel: atd r demonen som har hand om s.k. atjobb, saker systemet eller dess anvndare vill ha utfrda vid ett visst schemalagt tillflle. crond r demonen som har hand om s.k. cronjobb, smsaker som systemet eller enskilda anvndare vill ha utfrda med regelbundna intervaller. (Se vidare avsnitt 2.3.12 om svl at- som cronjobb.) httpd r ett generiskt namn p webbservern, oftast identiskt med programmet Apache, men inte ndvndigtvis. Demonen serverar webbsidor till de som surfar till systemet med en webblsare av ngot slag. Har du inte demonen startad s kan datorn inte heller agera webbserver. (Se vidare avsnitt B.4.) nfsd tillhandahller lsystem ver ntverket enligt protokollet NFS. (Se B.2.) xdm, gdm, kdm r olika skrmhanterare (engelska: display manager) ansvariga fr att starta fnstersystemet X och ser dessutom till att det inte stannar. Ibland heter denna process gdm-binary eller ngot annat vitsigt. (Se vidare kapitel 6.) Strikt sett denieras ofta demoner som processer som har processen init som frlder.25 (Se ven avsnittet 5.4.3 om hur Linuxkrnan kan benna sig i olika krniver.) Du kan lista alla demoner enligt detta kriterium p de esta GNU/Linux-system med kommandot ps -Al, och leta efter processer med PPID (frlderns process-ID) satt till 1, eftersom init alltid har process-ID 1. I ett fullgraskt system kan det vara ganska mnga demoner som snurrar. Frutom att demoner r responsiva, vntande program, har de ocks egenheten att snabbt kunna klona sig sjlva om det behvs. Av denna anledning vljer programmerare ofta att skapa servrar i form av demoner som grenar sig (forkar) eftersom detta r betydligt snabbare n att starta ett nytt program helt vid sidan av. Nr ett program grenas
25 Det r ur programmeringsperspektiv enkelt att skapa en sdan process: du skriver ett program som grenar av sig sjlvt i en annan process (forkar) och sedan avslutar sig sjlvt (begr sjlvmord). Eftersom processen d inte lngre har ngon frlder vergr den till barnhemmet, d.v.s. processen init.

43

Kapitel 2 POSIX kopieras nmligen bara delar av dess minne i datorn till ett annat minnesomrde och startas som en ny process.26 Detta r anledningen till att du exempelvis ofta hittar mnga vilande demoner med samma namn (exempelvis httpd). Dessa ligger och vntar p ngot lmligt arbete att utfra, och delar sedan p arbetet enligt ngon form av kdisciplin.27 Ofta nns det d en vre grns fr hur mnga sdana slavdemoner som skall startas.

2.3.4

Anvndare

Anvndare p ett POSIX-system r detsamma som loginnamn, konton, proler eller vad du nu vill kalla det. I korthet r det en skerhetsmekanism som gr det mjligt att skilja olika anvndare i systemet frn varandra. POSIX-systemen r av hvd eranvndarsystem, s som de esta operativsystem fr stordatorer var frr i vrlden. Fr den som har vuxit upp med vra vanliga hemdatorer och persondatorer kan detta eventuellt vara en nyhet. De frsta hemdatorerna, frn Altair 8800 ver Apple II, Commodores hemdatorer, ABC-80 till den till sist helt dominerande IBM PC-arkitekturen, var i regel enanvndarsystem. En dator betydde en anvndare, nmligen den person som satt framfr skrmen, med ngrarna p tangentbordet. De som arbetat p ett strre fretag har skerligen erfarenhet av eranvndarsystem av ngot slag. Frn den enklaste 3270-terminal till ngon strre IBM-dator, till Novell-ntverk med delade lareor som kan anvndas av era personer samtidigt. Gemensamt har alla dessa system att de fordrar ngon form av inloggning, med ett kryptiskt anvndarnamn och ett lsenord. I POSIX-vrlden har detta alltid varit ett naturligt inslag. Processer och ler har, och har alltid haft, gare. Dessa gare r detsamma som anvndare. En anvndare har en uppsttning privilegier eller rttigheter. Dessa innefattar rtten att komma t vissa resurser p systemet, vilket i slutnden ofta r detsamma som olika former av lrttigheter, vilket vi skall titta p lngre fram. Det kan vara ett privilegium att exempelvis skriva ut papper p skrivaren, lsa och skriva till vissa delar av lsystemet, att anvnda ljudkortet fr att spela upp ljud, att ansluta till modemet o.s.v. De esta anvndare fr exempelvis inte lsa andra anvndares ler hur som helst, utan sdant krver privilegier. P detta vis frhindras
26 Kopieringen sker med s.k. write-invalidate, vilket innebr att alla pekare pekare tillbaka till det gamla programmets minnesutrymmen. S fort endera programmet vljer att skriva ngot till minnet kommer dremot vardera processen att tilldelas eget minne fr det omrde som skrivits. 27 Du kan lra dig en massa saker om kteori fr servrar i Ulf Krners bok Kteori, se [16].

44

2.3 POSIX innehll att anvndare avsiktligt eller oavsiktligt frstr fr varandra. Anvndare kan vara av tv slag, konkreta och abstrakta. En konkret anvndare r ngot mycket enkelt det r en fysisk person som behver anvnda datorn, s som du eller jag. POSIX-systemen tillter att anvndare anvnder datorn p distans, genom anslutning via ngon form av datorntverk, s de konkreta anvndare som nns p ett system r inte alltid identiska med olika personer som kan tnkas sitta framfr just denna dators skrm och tangentbord. Fr riktigt stora system tillhr detta rent av ovanligheterna: stora organisationer gmmer i kllarvalv stora maskiner med namn som terminalservrar eller applikationsservrar som anvnds p distans av olika anvndare, som i princip aldrig benner sig p samma plats som datorn. Abstrakta anvndare r mestadels anvndare som har med systemets interna funktioner att gra, dessa anvndare brukar i allmnhet ga vissa demoner. Anledningen r att operativsystemet vill begrnsa demonprocessernas mjligheter att ndra saker i systemet. En demon r ju ett slags process, och alla processer har knutet till sig en gare. Privilegier r i sin tur knutna till gare. S genom att tilldela en process en gare, och sedan tilldela garen vissa privilegier, kan operativsystemet s att sga tilldela en viss demonprocess vissa speciella privilegier.

Process gare Privilegier Filtillgng

Varfr anvnds d denna komplicerade manver med abstrakta anvndare? Anledningen r, att om systemet kr igng en mngd demonprocesser utan att tilldela dem vissa specika privilegier, kommer de att ha obegrnsade privilegier. I praktiken skulle detta innebra att alla demoner kras som root-anvndaren, en hgstatusanvndare som vi snart skall titta nrmare p. Detta r farligt, eftersom root-anvndaren har obegrnsad makt ver operativsystemet. Detta kan skapa kaos, om exempelvis ngon demon skulle lpa amok och brja radera ler eller frstra minnesareor fr andra processer. Genom att begrnsa privilegierna p detta vis, skyddas demonerna frn sig sjlva. 45

Kapitel 2 POSIX root Som nmndes r ett POSIX-system ingen polyteistisk gudavrld dr olika vsen slr varandra i huvudet och konkurrerar om makten. Systemet r i sjlva verket monoteistiskt, det nns en anvndare som i detta lilla vattenglas str ver alla andra anvndare. Denna anvndare r bde konkret och abstrakt, den r identisk med den person som en gng installerade operativsystemet, och identisk med den anvndare som startar den frsta processen varje gng operativsystemet startar. Frn root-anvndaren utgr alla andra anvndare. root-anvndaren skapade i begynnelsen alla processer, och root-anvndaren skapade de frsta anvndarna vid installationen, och varje gng operativsystemet startas s vcks de olika demonerna i systemet av root-anvndaren. Root-anvndaren kr init-processen, processen med process-ID 1, som har makt ver alla andra processer i operativsystemet. root, som ven kallas superuser och ibland slarvigt bara admin, operator, administrator o.s.v. r uppenbart modellerad p vr monoteistiska Gud. Det r ett intressant tankeexperiment att frga sig hur ett operativsystem frn exempelvis Japan eller Indien, dr detta maktfrhllande inte r lika sjlvklart, skulle ha sett ut. Du kan ltt att se om du r systemadministratr p ett POSIX-system eller inte. Om du kan logga in som root, s r du det. I annat fall r du det inte. Om du inte kan gra det, r du beroende av en person som kan logga in som root fr de esta allvarligare ndringar i systemet, ssom till exempel att installera nya program och lgga till nya anvndare. Om du lser denna bok, br du ha tillgng till ngot system dr du kan logga in som root. Har du sjlv installerat exempelvis GNU/ Linux s r du av naturliga skl root p minst ett system. Betrffande root-anvndaren gller det att denna normalt inte skall logga in i graskt lge p en vrddator. Anledningen r ganska enkel: i ett graskt system r det ltt att komma t ngot av misstag och eftersom root-anvndaren har rtt att gra vad som helst p systemet s kan vad som helst skadas. Graska program kraschar oftare och kan drfr orsaka skada medan de strtar, och de graska programmen ppnar oftar skerhetshl, vilket sammantaget gr att det r olmpligt att root-anvndaren kr graska grnssnitt ver huvud taget. Mnga gr dock detta nd. Det normala sttet att arbeta som root-anvndare r att frn sitt vanliga konto ppna ett terminalfnster och vxla till root, exempelvis med det enkla kommandot su - fljt av root-lsenordet. Du kan sedan kongurera systemet och liknande ting. Alla program som startas inifrn en terminal dr du r inloggad som root kommer ocks att gas av root, s det r inga problem att exempelvis starta graska kongureringsverk46

2.3 POSIX innehll tyg eller multipla graska texteditorer. I vissa fnstersystem kommer systemet automatiskt att be efter root-lsenordet nr du vill kra ngot administrativt verktyg, och byter drefter anvndare sjlv fr just det verktyget. Anvndarkonton Vanliga anvndare kan ocks ha omfattande privilegier, ven om de aldrig nr upp till root. I vanliga fall skall du anvnda datorn som en vanlig anvndare, det r drfr installationsprogram fr POSIX-system nstan alltid erbjuder dig att skapa ngra vanliga anvndarkonton under installationen. Frdelarna med att inte kra alla program som root r uppenbara du skyddas frn dig sjlv. ven om alla dina program skulle krascha, eller systemet helt lsa sig, kan du i normalfallet logga in som root-anvndaren frn ngon annan terminal (i Linux kan du t.ex. normalt vxla mellan olika terminaler med kombinationenen Ctrl+Alt fljt av ngon av funktionstangenterna F1 till F6) eller rent av frn ngon annan dator, och sl ihjl de trilskande processerna som lst sig. Hade du krt dina program som root kunde vad som helst ha hnt. Olika POSIX-system har olika principer fr att administrera anvndare, d.v.s. att lgga till nya anvndare, ta bort gamla, och ndra privilegier. En anvndare har i princip sju saker som behver kunna ndras av en administratr: Ett ID-nummer ven kallat UID. root har nummer 0, de olika demonerna har nummer mellan 1 och sg 499 och vanliga anvndare brukar ha nummer frn 500 och uppt. Numren r vad systemet internt anvnder fr att koppla saker till olika anvndare, sjlva anvndarnamnet sls bara upp nr det behvs. Administrationsverktygen fr anvndare ordnar normalt s att du inte behver konfronteras med dessa nummer. Ett anvndarnamn. Detta skall inte innehlla svenska bokstver eller vara srskilt lngt. Mer n 8 tecken skall det normalt inte vara. I strre organisationer kan detta dock bli ndvndigt i alla fall. Ett fullstndigt namn. Vad anvndaren egentligen heter. Fr en konkret anvndare r detta uppenbart, fr en abstrakt demonanvndare kan det vara samma som anvndarnamnet eller ngot annat fyndigt. Ett lsenord (engelska: password). Detta skall, tminstone p ett ntverksanslutet system som kan kommas t utifrn, vara svr47

Kapitel 2 POSIX gissat. Med svrgissat, menas att det skall vara svrt fr ett annat datorprogram att gissa det, och datorprogram kan som bekant testa med hela Svenska Akademiens ordlista, samt t.ex. vnda alla ord som frekommer i denna bak och fram och prova med det. Ett lsenord skall inte kunna frekomma i en ordlista. Lsenordet skall anges vid inloggning i systemet, och abstrakta anvndare skall drfr inte ha lsenord: de skall ju aldrig logga in p systemet, bara kra processer! En hemkatalog. Detta r den plats dr anvndaren lagrar sina ler, om inte annat ngra ordbehandlingsdokument eller bokmrken du gjort i ngon webblsare. Se vidare avsnitt 2.3.5. Ett standardskal. Varje anvndare kan ha ett eget skal, smaken r delad. Alla skal som nns p systemet r mjliga val. Att era anvndare nufrtiden inte ens anvnder skalet r ju en lustig sak i sammanhanget, de fr ett skal i alla fall. En anvndare som inte har ngot skal kan inte logga in p systemet ver huvud taget, abstrakta anvndare har till exempel inget skal. En standardgrupp. Varje anvndare tillhr minst en grupp, mer om detta i fljande avsnitt. Alla dessa uppgifter lagras normalt radvis i en l som heter /etc/ passwd.28 Du kan ltt titta p denna l i vilket POSIX-system som helst med hjlp av kommandot cat /etc/passwd. Den kommer att se ut ngot t det hr hllet:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ..... kent:x:500:500:Kent Jnker:/home/kent:/bin/bash bertil:x:501:501:Bertil Hkansson:/home/bertil:/bin/bash

Frn vnster till hger anges anvndarnamn, lsenord, anvndarens ID-nummer (UID), standardgruppnummer (GID), fullstndigt namn, hemkatalog och standardskal. Observera att lsenorden har bytts ut mot x hr brukar nnas en krypterad variant av lsenordet. I modernare system str det dock ofta just x, vilket bara betyder att sjlva lsenordet istllet lagras i en l som heter /etc/shadow. Detta sker av skerhetsskl denna l r mycket populr att kopiera fr de som vill
28 I stora datorsystem anvnds ibland andra s.k. namnuppslagningstjnster med namn som YP, NIS, NIS+ eller LDAP. Se avsnitt B.1, sidan 418

48

2.3 POSIX innehll kunna stjla anvndarkonton frn systemet genom att dekryptera lsenorden, och drfr har konstruktrerna i vissa POSIX-varianter valt att ytta lsenorden till en egen l, som skyddas speciellt: bara root fr lsa frn /etc/shadow, medan alla anvndare p systemet alltid kan lsa frn /etc/passwd. Denna lite knliga lsning beror p att mnga POSIXprogram r beroende av att kunna lsa frn /etc/passwd, s den len kunde inte skyddas. /etc/shadow ger ocks ett antal nya skerhetsaggor till lsenorden: det r hr mjligt att vlja hur ofta lsenordet mste ndras, om kontot skall lsas helt ifall anvndaren inte anvnder det p mycket lnge, o.s.v. Anvndaradministration Som vanlig anvndare och som root anvnder du ngot eller ngra av fljande kommandon fr att pverka din (och eventuellt andra anvndares) anvndarstatus. Detta r strikt taget inga POSIX-kommandon, med undantag fr kommandot who, men i princip alla moderna POSIX-system implementerar dem i alla fall: chsh betyder change shell och kan anvndas fr att byta skal om du inte r njd med det du har. passwd utlses password, lsenord, har samma namn som len i /etc, och anvnds fr att byta lsenord. root kan anvnda detta med en parameter, passwd foo fr att byta lsenordet fr anvndaren foo. Notera dock att root inte kan ta reda p vilket lsenord foo har, det lagras inte okrypterat i POSIX-system. Svaret p frgan vilket lsenord har jag r vet inte, men om du vill kan jag eventuellt byta ut det. Ingen administratr kan se vad anvndarna har fr lsenord, inte utan att aktivt frska gissa eller kncka det med ngot datorprogram. Vissa administratrer gr dock detta regelbundet allts frsker kncka sina anvndares lsenord av skerhetsskl. Det r bttre att administratren kncker det n att ngon annan gr det. su utlses switch user, byt anvndare. Om du skriver detta kommando utan argument kommer systemet att anta att du vill byta till root-anvndaren. Anvndaren foo kan exempelvis frvandla sig till anvndaren bar med kommandot su bar. Systemet kommer d att frga efter lsenordet fr bar, och sedan startas bar:s standardskal, och r aktivt tills denne skriver exit eller trycker Ctrl+d. (Om root skriver su bar byts miljn direkt utan frgor, root r ju nd allsmktig.) 49

Kapitel 2 POSIX Ett bindestreck som parameter su - bar (eller bara su - fr att byta till root) kommer att medfra att standardskalet startas fr den angivna anvndaren. Om du inte anger detta kommer det kanske inte att upplevas som att du verkligen bytt till den andra anvndaren, istllet r det mera s att du utfr saker som om du vore den andra anvndaren. En annan sideffekt av su - bar r att du fryttas till anvndaren bar:s hemkatalog, s om du ville utfra ngot p den plats dr du nyss befann dig, krvs det att du frst vandrar tillbaka till den platsen i lsystemet med hjlp av cd. who ger en lista ver vilka (konkreta) anvndare som r inloggade p systemet just nu. Vissa system svarar ocks p kortkommandot w med bara en enda bokstav, vilket ger samma eller liknande resultat. Detta kommando r populrt att skriva omedelbart efter ploggning till ngot system fr att spana in lget, d.v.s. se vilka andra personer som r inloggade. Detta kommando listar inte demoner. Att administrera anvndare r fr det mesta enkelt, d de esta POSIX-system har ngon form av specialverktyg fr detta. Flera system har exempelvis ett program som heter adduser fr att lgga till anvndare, t.ex. adduser foo fr att skapa anvndaren foo. Programmet frgar sedan efter de andra uppgifterna som behvs fr anvndaren. Andra system har helt graska lyxverktyg. I GNU/Linux-vrlden har i princip varje distribution sitt eget specialverktyg: useradd userdel usermod och chage r exempel p program du br underska om de eventuellt nns tillgngliga. Om inget verktyg nns att tillg, fr du helt sonika editera /etc/ passwd fr hand enligt mallen (med hjlp av ngon texteditor, se 2.3.7), stta lsenordet fr anvndaren med passwd foo, skapa hemkatalogen (se avsnitt 2.3.5 om lsystemet) p lmplig plats, och dessutom ofta editera grupplen /etc/groups (se nsta avsnitt). Detta r inte direkt smidigt. Grupper Pongen med att dela in anvndare i grupper, r att du vill kunna tilldela privilegier till hela grupper anvndare. En anvndare tillhr bara en grupp t gngen, och den normala anvndaren administrerar sitt gruppmedlemskap med fljande tv kommandon: groups ger en lista ver grupper som du r med i, s du vet vilka grupper du skulle tnkas kunna byta till. Den grupp som str frst i listan r den du r med i just nu. 50

2.3 POSIX innehll newgrp foo byter medlemskap till gruppen med namnet foo. Om du sedan skriver groups igen, ser du att denna grupp nu r frst i listan. Det r normalt inte ndvndigt att byta grupp fr att komma i tnjutande av gruppens privilegier, men under vissa omstndigheter kan det vara nskvrt att lerna som skapas av dig hdanefter markeras som tillhrande en viss grupp. Detta lses ltt och smidigt genom att byta grupp med newgrp. Gruppmedlemskap r dock normalt ingen strre huvudvrk p en hemdator, sdana behov brukar bara uppst i strre datorsystem. Gruppinformationen lagras i len /etc/group som innehllet rader i ett format som pminner om /etc/passwd:
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon ..... kent:x:500: bertil:x:501:

Frn vnster till hger beskrivs gruppnamn, lsenord (anvnds sllan, tveksamt varfr detta flt existerar, men en anvndare kan i s fall behva ange ett lsenord fr att f tillgng till en viss grupp), gruppens ID-nummer (ofta kort och gott kallat GID), och en kommaseparerad lista med namnen p gruppens medlemmar. Observera att en anvndares standardgrupp anges genom att skriva denna grupps ID-nummer i /etc/passwd-len, vilket kan verka som en underlig mix nr det r sjlva namnen p gruppmedlemmarna som anvnds i /etc/group-len. Som synes har en del POSIX-system egenheten att skapa en ny grupp fr varje ny anvndare. Anledningen till detta r att varje anvndare mste tillhra minst en grupp, och eftersom de som satt samman distributionerna inte nskar skapa en grupp med exempelvis namnet users som alla vanliga anvndare skulle kunna tillhra, har de lst problemet p detta vis istllet. I strre system r detta dock ovanligt, dr nns en gemensam grupp fr alla vanliga anvndare utan speciella privilegier.

2.3.5

Filsystemet

Det har sagts otaliga gnger att det vergripande knnetecknet fr alla slags POSIX-system r att allt r ler. Detta var ett medvetet designval av UNIX skapare Ken Thompson och har prglat dem alltsedan den frsta versionen av UNIX. Lt oss frst klart och tydligt deniera vad vi menar med en l, p ett nst intill matematiskt vis: 51

Kapitel 2 POSIX
Varje bit kan vara 1 eller 0 ... 8 bitar ger en byte I en fil finns godtyckligt antal byte:ar

Med en l p ett datorsystem menas en ordnad sekvens av tal mellan 0 och 255. P ett datorsystem motsvaras detta av en binr talsekvens av s kallade bytes, som bestr av 8 ettor eller nollor. Filen bestr sledes av ett godtyckligt antal grupperingar av 8 stycken ettor eller nollor. Dessa sekvenser kan lagras i datorns minne eller p en magnetisk skiva, ett band, eller likvrdigt medium. En l r ngot abstrakt: ven om ett datorprogram upplever en l som en ordnad sekvens betyder inte detta att den fysiska informationen i en l r lagrad i samma ordning. Nr ler lagras p en magnetisk skiva eller annat medium ordnas innehllet p denna skiva oftast i enlighet med ngot visst lsystem. Filsystemet anger hur informationen skall struktureras och lagras fysiskt. I POSIX-vrlden r detta tudelat: det nns ett enda system fr strukturen, och era stt att lagra lerna fysiskt. Anvndaren av POSIX-system upplever systemen som likadana p alla system, men undertill kan detaljerna skilja sig. Detta skall dock inte behva bekymra anvndaren. En l kan i POSIX-vrlden ha i princip vilket namn som helst (och alla ler har ett namn). Det nns dock tv undantag: tecknet / kan inte anvndas fr lnamn, eftersom det anvnds fr att avdela hierarkin, och strngslutstecknet \0 fr inte heller anvndas i lnamn. Det senare slipper du frhoppningsvis att bekymra dig ver. En l kan ha ett viss lformat, d.v.s. innehllet kan vara formaterat enligt en viss mall. Filer som inte kan lsas som text utan speciella program kallas binrler. I POSIX-vrlden r lyckligtvis de esta viktiga ler som regel lsbara som text.29 Filsystemets hierarki Frutom ler nns i s gott som alla operativsystem ven std fr kataloger. En katalog i POSIX-sammanhang r detsamma som en speciell sorts l som innehller katalogposter. En katalogpost kan vara en vanlig l (av det slag vi nyss beskrivit), en katalog, eller andra speciella ler, ssom blockenheter, lnkar, FIFO-ker eller symboliska lnkar. Vad
29 Eric S. Raymond beskriver detta som en av UNIX grundlggande designval: be textual[26].

52

2.3 POSIX innehll

Figur 2.7: Olika ltyper i POSIX-system, inod (vilket inte kommer att behandlas mer i denna bok) och katalogpost (lnk) r abstrakta ting, associationen mellan katalog och katalogpost (1 - 0..*) skall utlsas en till mnga, en katalog har allts noll eller era katalogposter, och katalogposterna r ngon av typerna katalog, vanlig l, FIFO, lnk, blockenhet, teckenenhet, sockel eller symbolisk lnk. Rotkatalogen r speciell p s vis att den inte i sin tur nns i ngon annan katalog.

dessa saker r kommer vi att g in p senare. Viktigt att notera r att kataloger r rekursiva, d.v.s. de kan i sin tur innehlla andra kataloger. Med s.k. UML-notation fr frhllandet mellan ler, kataloger och andra djur utseendet i gur 2.7. Filsystem kan monteras i olika monteringspunkter. En monteringspunkt kan vara vilken katalog som helst, dock bara en katalog. Med montering menas att en plats p en fysisk enhet ssom en sektor p en magnetisk skiva, ett index p ett magnetiskt band o.s.v., kopplas logiskt till en katalog i lsystemet, se gur 2.8. Montering sker p olika stt i olika POSIX-system, men ett vanligt stt r att anvnda ett kommando som heter mount. (Du kan lsa om hur detta fungerar i Linux p sidan 213.) Filsystemet utgr frn en katalog som kallas rotkatalogen och som r den plats dr operativsystemet monterar den absolut mest grundlggande katalogen. Denna katalog betecknas / (snedstreck) och du kan ltt g dit med kommandot cd /. Passa i s fall p att underska vad som nns dr med kommandot ls. Nr du skriver ut skvgar i kataloghierarkin, fr att navigera dig i lsystemet, avskiljs de olika komponenterna ocks med ett snedstreck, som med undantag fr rotkatalogen utlses som ligger i. Exempelvis 53

Kapitel 2 POSIX
/dev/hda1 / /dev/hdb1 /home

/mnt/floppy

Figur 2.8: Fysiska lagringsenheter monteras p kataloger i lsystemet.

utlses skvgen /home/bertil/foo.txt som len foo.txt, som ligger i katalogen bertil, som ligger i katalogen home, som ligger i rotkatalogen. I rotkatalogen nns en katalog som heter home, i denna nns en katalog som heter bertil, och i denna nns en l som heter foo.txt. En sdan skvg som inleds med /, kallas fr en fullstndig skvg (engelska: full path). Skvgar som anges relativt vart anvndaren benner sig just nu, r sledes relativa skvgar (engelska: relative path). Om jag exempelvis benner mig i home s r den relativa skvgen till samma l bertil/foo.txt. Att benna sig i den eller den platsen i lsystemet, r att benna sig i en viss katalog. P vilket stt en anvndare benner sig dr kan variera, men ett av de vanligast stten r att du gr det i form av ett skal, som har miljvariabeln $PWD satt till denna plats. Vi kommer att stifta bekantskap med miljvariabler senare, men kontentan r att en process (som ju skalet till exempel r) kan benna sig p en plats i lsystemet genom att internt hlla reda p en skvg, som alltid r relativt rotkatalogen. Tappar processen denna skvg s kommer den pltsligt att benna sig i systemets rotkatalog igen. Platsen du benner dig i lsystemet manipuleras uteslutande med kommandot cd. Exempelvis fryttar du dig till platsen fr en absolut skvg med cd /home/bertil/fnord under frutsttning att fnord r en katalog. Du kan inte frytta dig till en vanlig l, eftersom det bara r mjligt benna sig i en katalog. Med untantag fr rotkatalogen s nns alla objekt som kan frekomma i lsystemet vanliga ler, kataloger, lnkar o.s.v. representerade som poster i minst en katalog. Denna struktur uppfattas ibland som ett trd, det talas om ltrd, katalogtrd o.s.v., men fr POSIX-system r denna bild inte helt korrekt, p grund av att systemet kan innehlla lnkar och symboliska lnkar. Det korrekta datorvetenskapliga namnet fr POSIX lsystem r att det r en graf. Om du inte vet vad detta betyder r det ingen strre skada skedd. ven om POSIX lsystem inte r ngot trd kan niverna direkt under roten ofta illustreras som ett trd. I gur 2.9 nns en trdliknande illustration av det minimala lsystem som varje POSIX-system mste in54

2.3 POSIX innehll

Figur 2.9: Det minimala POSIX-lsystemet.

nehlla. (Om du undersker ditt eget system kommer du utan tvekan att nna att det innehller betydligt er ler.) Dessa grundlggande kataloger och ler har fljande innehll: / r lsystemets rotkatalog. /dev r en katalog som innehller olika blockenhetsler och teckenenhetsler. Dessa kan vara till fr att kommunicera med omvrlden (exempelvis serieportar), hrddiskar, eller enheter som p annat vis behvs fr systemets vlbennande och funktion. /dev/console r en l som representerar systemkonsollen, vilket skall utlsas som att det r en monteringspunkt, dr den fysiska skrmen och tangentbordet p datorn monteras in i lsystemet. /dev/null r en l som du kan kopiera strmmar av tecken till, och de frsvinner magiskt! Kommandot cat foo.txt > /dev/null skriver ut innehllet i len foo.txt p ytan av ett svart hl dr ingen kan se det. Den hr enhetslen anvnds mest fr att undvika att ngot skrivs ut p skrmen.30 Om du frsker lsa frn /dev/null, erhlls en strid strm av lslutstecken. Operativsystemet ser denna enhet som en plats dit saker kan skickas fr att aldrig tervnda. /dev/tty r en enhetsl som representerar den frsta (nuvarande) terminalen. Denna gr att anvnda som en enkel texteditor: skriv cat
30 I exemplet anvnds symbolen > efter kommandot cat. Denna kommer att avhandlas senare i avsnittet om rr och lter p sidan 90.

55

Kapitel 2 POSIX
/ /bin

/dev

/etc

/home/bertil

/home

/home/sofie

/lib /mnt/cdrom /mnt /mnt/floppy /opt

/sbin /usr/bin /usr/local/bin /tmp /usr/lib /usr/local/lib /usr /usr/local /usr/local/man /var /usr/man /usr/local/sbin /usr/sbin /usr/local/share /usr/share

Figur 2.10: Det inofciella POSIX-lsystemet.

/dev/tty > foo.txt och skriv in lite text. Avsluta med Ctrl+D. Titta p resultatet med cat foo.txt > /dev/tty. /tmp r en katalog som kan anvndas fr att temporrt lagra undan ler nr det behvs. Alla anvndare (och sledes alla processer) kan skriva och lsa hr, och skapa nya ler om det behvs. Detta minimala lsystem existerar sllan eller aldrig i praktiken. Det inofciella lsystemet ser ut som i gur 2.10. verallt i POSIXspecikationen nns referenser till ler som ligger i detta lsystem: exempelvis len /etc/passwd. Hur skulle denna kunna existera om inte katalogen /etc existerar frst? Det gr ju inte. Allts frutstter POSIX i sjlva verket ett lsystem av detta slag, och i stort sett alla system du stter p kommer att ha denna struktur, inklusive Linux, BSD och Solaris. (Passa grna p att i detta sammanhang blddra fram till avsnitt 5.4.7 p sidan 199 som behandlar specikationen fr lsystemet i Linux, Filesystem Hierarchy Standard.) Det inofciella ltrdet i gur 2.10 grundar sig p ett antal principer. Den frsta r terkommande katalognamn: bin r namnet fr kataloger som innehller krbara binra ler. Programler kallas p engelska ibland fr binaries. dev r namnet fr kataloger med blockenhetsler, efter engelskans block devices.. etc r namnet fr kataloger som lagrar instllningar av olika slag, fr program, skal och olika delar av operativsystemet. Varfr det ftt namnet etc efter etcetera nns det inget bra svar p. 56

2.3 POSIX innehll lib innehller programbibliotek, programkomponenter som kan anvndas av era olika program, efter engelskans program library. man innehller manualsidor i man-formatet, ofta delad i underkataloger fr de olika manualsektionerna och p samma vis kan kataloger med namnet info frekomma fr GNU-dokumentation. sbin innehller program som anvnds av root-anvndaren, som ju ven kallas superuser, och betecknar sledes superuser binaries. Nr vi vet vad dessa namn betyder d de terkommer, kan vi ge oss i kast med att tolka katalogindelningen som inte upprepar sig: / kataloger som ligger i roten r, om de innehller ngot annat n underkataloger, tnkta att bara innehlla sdant som krvs fr att operativsystemet ver huvud taget skall starta. /bin r sldedes program som r ndvndiga fr att starta operativsystemet, /lib de mest ndvndiga programbiblioteken, /etc de ndvndiga kongurationslerna och /tmp det absolut ndvndiga temporra lagringsutrymmet. /sbin kan innehlla ngra program som root bara mste ha fr att kunna hantera systemet. /dev innehller systemets alla block- och teckenenheter, all dess hrdvara, r en representation av sjlva datorn och r sledes ocks helt ndvndig. /home r en katalog dr i allmnhet 99 av 100 POSIX-system vljer att lgga anvndarnas hemkataloger. Denna katalog r inte sllan monterad p en speciell lagringsenhet som bara r till fr att lagra anvndarnas data. Detta r speciellt listigt om du senare nskar byta eller uppgradera operativsystemet, d kan du ju spara den enhet som r monterad p /home, eftersom den inte innehller ngra operativsystemkomponenter. /mnt r ett allmnt namn p blandade monteringspunkter. I princip /mnt/cdrom fr CD ROM-lsaren och /mnt/oppy fr en diskettstation, men ven andra enheter kan frekomma. /opt r optional packages tredjepartsprogram eller extraprogram som levererats till operativsystemet. Speciellt hamnar stora, proprietra tillmpningsprogram som Oracle eller SAP R/3 p denna plats. /usr innehller alla delar av operativsystemet som r bonus, d.v.s. de delar som inte krvs fr att det ver huvud taget skall starta. Hr nns exempelvis ofta fnstersystemet X i /usr/X eller /usr/ X11R6, en strtod av krbara program i /usr/bin, massor med anvndbara programbibliotek i /usr/lib, na men icke oundgngliga adminstrationsprogram i /usr/sbin o.s.v. 57

Kapitel 2 POSIX /usr/local r speciellt hr lagrar du program som inte kommer med operativsystemet: till exempel program som du kompilerat direkt frn kllkod, eller som du laddat ner som binra ler och som du sjlv kopierat till /usr/local/bin. Nr du sjlv kompilerar program tenderar de att p eget bevg placera sina resulterande ler under /usr/local. Om du aldrig gr sdana saker kommer denna katalog naturligtvis att vara tom. /var r den plats dr operativsystemet lagrar just variabler, vilket mestadels r saker som loggler (/var/log), dr hndelser i systemet eller meddelanden frn olika demoner, eller elektronisk post till anvndarna lagras (/var/spool/mail). Ovanstende r mhnda lite mycket p en gng. terkom till detta avsnitt nr det passar dig och du behver veta mer, du har mjligen redan glmt vad /usr-katalogen r till fr, men repetition r all kunskaps moder. I alla kataloger nns det alltid tv specialkataloger. Den ena anges med en punkt . och nns alltid. Detta r en pekare till nuvarande katalog. Denna katalog kan tyckas underlig, men den anvnds mycket, exempelvis om du vill starta program frn samma katalog som du just nu benner dig i. Du skriver d ./programnamn. Program kan nmligen bara startas genom att ange dess absoluta eller relativa skvg, om inte skvgen till programmet nns i miljvariabeln $PATH (se avsnitt 2.3.9). Flera kommandon krver en fullstndig skvg fr att fungera, och d kan det vara lmpligt att ange . fr att hnvisa till aktuell katalog. En katalog med namnet .. (punkt-punkt) nns ocks i alla kataloger. Denna anger nrmast verliggande katalog, ett steg nrmare roten. Om du t.ex. str i /home/bertil och skriver cd .. kommer du att st i /home eftert. Dessa tv specialkataloger gr inte att se med kommandot ls men om du anger vxeln ls -a s syns de. Fljande kommandon nns fr att manipulera lsystemet, utver ls, cd och rm som ju presenterats tidigare: df utlses disk free, rapporterar ledigt diskutrymme fr alla tillgngliga diskar. Strngt taget behver det inte rra sig om hrddiskar: alla monterade fysiska enheters status kommer att rapporteras. En sidoeffekt av detta kommando r att alla monteringspunkter listas, vilket r minst lika anvndbart som att f veta hur mycket ledigt diskutrymme som nns p var och en av dem. Om du undrar vilken fysisk disk som rotkatalogen r monterad p s ger df svaret. (En hrddisk heter under de esta POSIX-system ngot i stil med /dev/hda1.) 58

2.3 POSIX innehll nd . kommer att skriva ut skvgen till alla ler som nns under den katalog dr du just nu benner dig (.), med en rad per l. (En absolut skvg kan ocks anges som parameter.) Det kan komma ganska mycket information frn nd ., s du vill nog oftast anvnda det tillsammans med kommandot grep p fljande vis: nd . | grep bar. Detta kommer att skriva ut skvgen till alla ler under aktuell katalog, vars namn innehller sekvensen bar. Vi kommer att titta nrmare p denna form av konstruktioner under avsnittet om rr och lter lngre fram. Detta kommando kan anvndas fr att utfra ngot som i andra sammanhang kallas fr nd in les d.v.s. sk igenom innehllet i ett antal ler och skriv ut vilka ler som innehller en viss textstrng. Det uppns p samma vis med:
# find . -type f -print -exec grep foo {} \; | more

Vilket kommer att ge en lista ver alla genomskta ler, och fr varje l kommer eventuella frekomster av den skta strngen foo att listas. Om du tycker att denna metod fr att ska i ler r lite omstndlig r du knappast ensam, men betnk att metoden bara anvnds frn kommandoraden. Graska anvndargrnssnitt har oftast egna inbyggda funktioner fr att gra samma sak. mkdir foo (av engelskans make directory) skapar en katalog med namnet foo p den plats dr du benner dig. En absolut skvg av typen /foo/bar/fnord kan ocks anvndas, men d mste katalogen /foo/bar existera sedan tidigare. Bara en niv i hierarkin kan skapas t gngen: /foo/bar mste existera fr att du skall kunna skriva mkdir /foo/bar/fnord. rmdir foo (remove directory) tar bort katalogen med namnet foo relativt platsen du benner dig. P samma vis som fr mkdir kan en absolut skvg anges. Sista komponenten i skvgen anger den katalog som skall tas bort. Operativsystemet kommer oftast att protestera om du frsker ta bort en katalog som innehller katalogposter; i s fall kan du som sagt istllet anvnda det lite farliga kommandot rm -rf foo, men se upp med detta! tar r ett kommandot som skall utlsas tape archive, d.v.s. bandarkiv. Det r ett mycket anvndbart program som packar ihop era ler och kataloger till ett paket och lgger det i en l. I andra operativsystem har detta namn som zip-ler eller stuft-ler. Namnet r en kvarleva frn den tid d det var vanligt att skapa skerhetskopior av ler p ett UNIX-system genom att kopiera ut dem 59

Kapitel 2 POSIX till band. tar r ganska avancerat s vill du lra dig det ordentligt rekommenderas man tar. Exempel: tar cf foo.tar bar/ packar ihop alla lerna i katalogen bar till ett arkiv med namnet foo.tar. tar xvf foo.tar packar upp det igen. De resulterande .tar-lerna brukar oftast ven komprimeras med GNU Zip, gzip och fr d namnet foo.tar.gz. Finns inte tar tillgngligt nns eventuellt det fossila programmet cpio som har en liknande funktion. compress r det POSIX-standardkommando som nns fr att komprimera ler. compress foo kommer att komprimera len foo och ge resultatet namnet foo.Z. Detta kommando r dock inte speciellt vanligt, numera har i princip alla POSIX-system det ngot bttre programmet GNU Zip installerat. uncompress utfr omvndningen till fregende kommando. gzip (vilket utlses GNU Zip) r inget POSIX-kommando men nns som sagt nstan alltid tillgngligt i alla fall. En l komprimeras med gzip foo och packas upp med gunzip foo.gz. GNU Zip-kommandona lgger till respektive tar bort .gz-ndelsen automatiskt. gzip -9 foo gr att kompressionsgraden kas avsevrt. Om du har ftt tag p en l med ett namn i stil med foo.tar.gz kan du packa upp den helt med gunzip foo.tar.gz fljt av tar xf foo.tar, eller, om du har GNU Tar installerat, med tar xfz foo.tar.gz. Du kan skapa en sdan l av en katalog (och dess underkataloger) med tar cvfz foo.tar.gz foo/. head foo.txt skriver ut de frsta 10 raderna av en len foo.txt. Om du anvnder cat foo.txt kan det vara svrt att hinna se alla rader i len, de ilar snabbt frbi p skrmen. tail foo.txt (av engelskans tail = svans) visar p samma vis de 10 sista raderna i len foo.txt. more foo.txt r anvndbart nr du vill inspektera en strre l en sida i taget. Sida vxlas med tangenten mellanslag, och du kan blddra ned en rad i taget med ENTER-tangenten. more r ett stort och begvat program som du kan stifta nrmare bekantskap med om s nskas (man more). GNU-projektet har i all spjuveraktighet kallat sin klon av detta kommando fr less och kommandot less foo.txt r i sjlva verket vanligare n att anvnda more. (Namnet less r hrlett frn det amerikanska talesttet less is more.) De tre sista kommandona fungerar bara p textler. Anvnder du dem p binrler kan vad som helst intrffa, men kommandona tenderar att varna fr sdana misstag. 60

2.3 POSIX innehll Filrttigheter Med lrttigheter31 menas vem, d.v.s. vilka anvndare och vilka grupper som har rtt att lsa, skriva eller exekvera en l. En anvndare kan ha rtt att skriva men inte lsa en l, att lsa den men inte skriva den, att exekvera den eller inte. Att kunna lsa en l innebr att kunna ppna den i en texteditor eller ett speciellt program, till exempel en ordbehandlare eller bildredigerare, kort och gott att p ngot vis kunna granska lens innehll. Att kunna skriva en l r att kunna lgga till saker till en l eller helt skriva ver den med nytt innehll, eller radera den. Att kunna exekvera en l (underfrsttt att den innehller ett datorprogram eller skript av ngot slag) r att kunna instansiera datorprogrammet som lagrats i len som en process i operativsystemet. Filrttigheterna r den viktigaste formen fr privilegiekontroll i ett POSIX-system. (Det nns andra exempelvis fr bara root-anvndaren lov att dda andra anvndares processer.) Genom att s stora delar av operativsystemet r uppbyggt av tanken att allt r ler, blir tillgngen till olika resurser automatiskt en frga om lrttigheter. Denna enkla tanke med lrttigheter fr att begrnsa tillgngen till alla olika delar av operativsystemet har visat sig frbluffande framgngsrik och effektiv fr att uppn hg skerhet i POSIX-system. Utver lrttigheterna har varje l och katalog ett garskap, d.v.s. den tillhr ngon. Filen tillhr dels en anvndare och en grupp. Om en anvndare skapar en ny l kommer denna l att tillhra den grupp som anvndaren just d r medlem i, s som vi diskuterade tidigare.32 Filrttighetssystemet har uppenbarligen karaktr av stamgemenskap systemet kan bara skilja p egna rttigheter, gruppens rttigheter och andras rttigheter. Egna rttigheter (engelska: user rights) avser anvndaren som ger len, och gruppens rttigheter avser gruppen som ger len. Den sista uppsttningen rttigheter avser rttigheter fr utomstende, d.v.s. alla andra. Nr en anvndare begr tillgng av ett visst slag kontrolleras rttigheterna mot denna anvndare, och de grupper som denna anvndare r medlem i. Om anvndaren som begr tillgng till len varken r gare till den eller tillhr den grupp som ger len, kommer rttigheterna fr andra att tillmpas. Rttigheterna tolkas generst, d.v.s. den strs31 Med tanke p att det enda som egentligen existerar i POSIX-lsystemet r lnkar borde det mjligen heta lnkrttigheter istllet. 32 Se avsnitt 2.3.4 p sidan 44. Hr ser vi i sjlva verket anledningen till att varje anvndare mste frses med en standargrupp om anvndaren skapade en ny l och inte var medlem i ngon grupp alls, vilken grupp skulle len d tillfalla? Konstruktionen av POSIX r nmligen sdan att varje l mste tillhra en grupp.

61

Kapitel 2 POSIX

Filrttigheter
s s t r w x r w x r w x

Set Set Vidhftande UID GID bit

Anvndarens rttigheter

Gruppens rttigheter

Andra anvndares rttigheter

Figur 2.11: Betydelsen av de olika flten i lrttighetsfltet fr en l. r = lsrttighet (read), w = skrivrttighet (write), x = exekveringsrttighet (execute). Om du listar en katalog och ser ett s p den plats dr x egentligen skulle vara (fr anvndare eller grupp), betyder att programlen kommer att exekveras med denna anvndares eller grupps rttigheter om den krs. Fr en katalog betyder det att alla ler som skapas i denna katalog kommer att tillhra denna anvndare eller grupp. Den vidhftande biten anvnds vid sllsynta tillfllen fr att skydda innehllet i kataloger.

ta rttighet som kan erhllas genom att matcha anvndare, grupp eller andra kommer att tillmpas. Du kan se vilka grundlggande rttigheter ler har med ls -l:
# ls -l -rw------drwxrwxr-x 1 bertil 4 bertil bertil users 10249 14 jan 20.15 reglementet.pdf 4096 10 jun 19.27 foo

Filrttigheterna visas lngst ut till vnster fr varje l eller katalog. De skall tolkas enligt gur 2.11, sledes r reglementet.pdf i detta fall en vanlig l som bara fr lsas och skrivas av anvndaren bertil. foo r dremot en katalog som fr lsas och exekveras av vem som helst. (Att exekvera en katalog r detsamma som att g in i den med cd foo.) Bara anvndaren bertil eller medlemmar i gruppen users fr skriva till katalogen foo detta innebr i fallet med kataloger rtten att skapa nya ler i denna katalog, eller att ta bort hela katalogen. Fljande kommandon hanterar rttigheter och andra data relaterade till ler (om du pltsligt upptcker att ngot i den hr texten verkar vervrldsligt svrt eller obegripligt s kan du alltid trsta dig med att mnga professionella anvndare av POSIX-system aldrig lr sig hur rttighetssystemet fungerar innerst inne): chown bertil foo.txt (change owner) byter garen till len foo.txt till bertil. Av skerhetsskl fr detta kommando bara anvndas av rootanvndaren, som p detta vis kan ta ler frn en anvndare och ge dem till en annan. Ofta r det till exempel bra att kra chown p 62

2.3 POSIX innehll ler som yttas frn en anvndares katalog till en annan anvndares katalog. Det r ven mjligt att i ett svep byta anvndare och grupp fr en l med chown anvndare:grupp foo.txt. chgrp users foo.txt (change group) byter gargrupp fr len foo.txt till gruppen users, oavsett vilka som gde len tidigare. Detta fungerar givetvis bara om du har ngon form av garskap till len, samt r medlem i gruppen som du frsker byta till. chmod <rttighet> foo.txt (av engelskans change modes) r ett kommando fr att ndra lrttigheterna p en l, och ett kommandot som du kommer att behva anvnda tusentals gnger, s det r lika gott att lra sig allt som nns att lra sig om detta kommando direkt. Rttigheterna speciceras p era olika vis: chmod ug+rx foo.txt kommer att ge den gande anvndaren (user) och gruppen (group) ls- och exekveringsrttigheter. chmod o+r foo.txt kommer att ge lsrttigheter till andra (others). chmod a+rwx foo.txt ger alla (all) ls-, skriv- och exekveringsrttigheter till len. chmod o-rwx foo.txt tar bort alla rttigheter fr andra. Kombinationen av chmod, fljt av en lista utan mellanslag med u,g, o eller a direkt fljt av + eller - direkt fljt av en lista utan mellanslag med ngon eller ngra av bokstverna r, w eller x rcker egentligen fr att stta de esta enstaka rttigheter som dyker upp i vardagen, med det hindrar inte att det nns andra stt. Vill du lgga till vissa rttigheter och ta bort andra rttigheter eller bara separera rttighetstilldelningarna p ett mindre kryptiskt vis kan du skriva chmod u+r,u+w,o-r,o-x foo.txt fr att lgga till lsoch skrivrttigheter fr anvndaren och ta bort ls- och exekveringsrtt frn andra. chmod a+X foo.pl (notera att detta r ett STORT X) lgger till exekveringsrttigheter p len fr alla anvndare, om minst en av anvndare, grupp eller andra redan har exekveringsrtt. Underligt kan tyckas, men detta r mycket anvndbart nr du vill ndra exekveringsbarhet fr mnga ler, exempelvis med chmod a+rX,a-w *.pl som kommer att ge alla anvndare rtt att lsa och exekvera ler som sedan tidigare r exekverbara av ngon, samt slutar med lndelsen .pl, men ser samtidigt till att ingen kommer att ha rtt att skriva till lerna. Detta r mycket bra att anvnda fr att ge exekveringsrtt till kataloger, som ju mste vara exekverbara fr att anvndaren skall kunna gr in i dem. 63

Kapitel 2 POSIX Det r ven mjligt att tilldela rttigheter med ett =-tecken, till exempel: chmod u=wr,go= foo.txt, som ger ls- och skrivrttigheter till anvndaren som ger len, samt tar bort alla rttigheter fr gruppen och andra. Nu instller sig en naturlig frga: om jag tar bort skriv- och lsrttigheterna fr mig sjlv, med chmod a-rw foo.txt, kan jag d inte ndra rttigheterna p lerna lngre? Nej, s dumt r det inte. Du kan frvisso hindra dig sjlv frn att lsa och skriva ler, men du kan inte ta bort rttigheterna att ndra rttigheter. En l som du, eller en grupp som du r med i ger kan du alltid ndra rttigheterna p. S har du lyckats lsa dig sjlv ute frn en l eller katalog kan du terstlla rttigheterna med chmod u+rw foo.txt. Rttigheter kan ven anges med oktala koder, vilket inte r riktigt lika uppenbart. (Den som inte vill eller kan frst det binra talsystemet kan hoppa ver denna frklaring.) De 3x3 olika rttighetsuppsttningarna i gur 2.11 representeras i sjlva verket av varsin binr bit, ordnade med den mest signikanta biten lngst till vnster. Om varje rttighetsuppsttning tolkas som ett 3-bitars binrt tal kan detta skrivas oktalt som en siffra mellan 0 och 7. r r vrd 4, w r vrd 2, och x r vrd 1. Kombinationerna som uppstr blir sledes: Rttighet inga rttigheter exekverbar skrivbar skriv- och exekverbar lsbar ls- och exekverbar ls- och skrivbar ls- skriv och exekverbar Kortform x w wx r rx rw rwx Binrt 000 001 010 011 100 101 110 111 Oktalt 0 1 2 3 4 5 6 7

Med hjlp av dessa siffergrupper kan godtycklig rttighet sttas kvickt av den som kan sina binra tal: chmod 644 foo.txt gr len lsbar fr alla, men skrivbar bara fr anvndaren. En l som skall kunna exekveras av alla men skrivas bara av den som gjort den fr sledes chmod 755 foo.pl. Ett vanligt men ganska dumt trick bland nybrjare r att skriva saker som chmod 777 * fr att sl p alla rttigheter fr alla anvndare p alla ler. Gr inte s, fr nu vet du bttre. touch foo.txt anvnds fr att berra len. Du har kanske sett att varje l minns tiden d den sist ndrades. Med touch ndras den tiden 64

2.3 POSIX innehll till nutid. Detta r kanske inte speciellt anvndbart, men touch har en anvndbar sidoeffekt: om du skriver touch och anger ett lnamn som inte nns, kommer len att skapas med storleken noll! Detta anvnds fr att kontrollera en del program som letar efter en viss l med ett visst namn fr att exempelvis sluta en krning vid nsta mjliga tillflle. touch kan ven ndra ldateringen till en xerad tid i det frutna eller i framtiden. touch -t 199708290214.00 judgementday.txt fr att stta datum och tid p len judgementday.txt till den 29 augusti 1997 kl 02:14.33 touch har inte mycket med rttigheter att gra, men ndrar s.k. metadata om len, och passar drfr bra hr. Om detta kommando inte berr dig kan du lmna det t sidan.

umask <bitmask> (frn engelskans user permissions bitmask) r ett kommando som stter en s.k. bitmask, som anvnds fr nyskapade ler och oparametriserade chmod-kommandon. Bitmasken r ganska enkel att frst fr den som r bekant med binr aritmetik. Fr andra, mer normalt funtade mnniskor riskerar denna dock att bli ngot av ett totalt mysterium. Liksom med chmod anges bitmasken med oktala siffror, men med fyra istllet fr tre. (Varfr skall vi snart komma till.) Bitmasken maskar av behrigheter genom en logisk OCH () mellan standardbehrigheter och bitmask.34 Den standardiserade umasken som normalt anvnds i POSIX-system brukar vara 0002, och den standardiserade rttigheten som stts p nya ler brukar vara 66635 vilket innebr att den standardiserade lrttigheten efter maskning kommer att blir 664, allts ls- och skrivbar fr anvndaren och gruppen, samt enbart lsbar fr alla andra. Fr en nyskapad katalog r den standardiserade rttigheten 777 och efter maskning blir rttigheten p samma vis 775.

r hr angiven enligt amerikansk stkusttid. listige lsaren tnker nu att men! att maska bort w med 2 = 010 funkar ju inte, ty rwx = 7 och 7 2 = 2! Istllet skulle d bara den biten sttas! Men implementationen anvnder frmodligen inversen av masken, s den faktiska rttigheten blir 7 (27) = 5. 35 Jag hoppas att lsaren inte r svag fr talmystik. Upp 13:18
34 Den

33 Domedagen

65

Kapitel 2 POSIX Bitmask 000 001 010 011 100 101 110 111 Oktalt 0 1 2 3 4 5 6 7 Maskar bort inget x w w och x r r och x r och w r, w och x

Om du anvnder kommandot chmod utan att ange vilka anvndargrupper du vill pverka, kommer rttigheterna som anges att sls p fr alla grupper och drefter att maskas med umasken, s om vi antar att 0002 r aktuell umask, innebr detta att chmod +r foo.txt kommer att lgga till lsrttigheter till len fr alla anvndare, ven andra, medan dremot chmod +w foo.txt bara kommer att ge skrivrttigheter fr anvndaren och gruppen som ger len. chmod +x foo.txt kommer att ge exekveringsrttigheter till alla. P ett liknande vis anvnds chmod -x foo.txt (med ett minustecken) fr att ta bort exekveringsrtten fr alla anvndare som inte r bortmaskade. Vill du skrivskydda en l till och med fr dig sjlv nns dock en fara med umask:en: skriver du chmod -w foo.txt och kommer skrivrttigheterna bara att tas bort fr anvndaren och gruppen, inte fr andra, p grund av umasken, s om len tidigare var skrivbar fr alla, s r det i praktiken ingen frndring! Det du i sjlva verket vill gra fr att skrivskydda len r att skriva chmod a-w foo.txt! Svl chown, chgrp och chmod tillhandahller vxeln -R. Denna utlses rekursivt (engelska: recursive) och r mycket anvndbar fr att byta rttigheter p hela katalogtrd: den kommer att medfra att hela katalogtrdet under den punkt som angetts, svl kataloger som enstaka ler, pverkas av ndringen. Exempel: chown -R anna /home/foo/ kommer att byta garen till anna p alla ler och kataloger under /home/foo/, inklusive /home/foo/ sjlv. chmod -R a+rX,go-w /usr/local/bin/ utfrt av root kommer att se till att alla program installerade i /usr/local/bin r ls- och exekverbara fr alla anvndare, men inte mjliga att skriva ver av gruppmedlemmar eller andra. En varning skall utfrdas fr sdana hr rekursiva anrop: om du inte r helt sker p vad du vill stadkomma och inte har tnkt igenom det ordentligt kan en mindre katastrof intrffa. Exempelvis vill du inte 66

2.3 POSIX innehll behva terstlla x-biten p alla kataloger i ett trd fr hand fr att du rkat ta bort den rekursivt av misstag. Specialbitar Utver de nmnda rttigheterna nns ven en del speciella rttigheter. Dessa anvnder sig av tre extra bitar som nns kopplade till len. (Varfr de kallas bitar inser du skert efter vningarna med chmod och umask.) De tre extra bitarna r placerade fre de vriga bitarna, s om du skriver rttigheterna med fyra oktala siffror istllet fr tre, kommer den frsta siffran att pverka specialbitarna, medan de tre sista fungerar likadant som tidigare. Den frsta specialrttigheten r Set-UID-biten och Set-GID-biten. De hr bitarna anvnds mycket sllan, och utgr dessutom ett skerhetsproblem, s det r tveksamt om de br anvndas ver huvud taget. Genom att stta denna s.k. s-bit fr anvndare respektive grupp (normalt stter du bda) kommer en exekverbar l (ett datorprogram) att kras som garens anvndare respektive gande grupp, och med denna anvndares respektive grupps rttigheter. Om bertil skapar ett program som heter foo.pl (och som gr att kra) s r len sledes bertils, och om han stter de bda s-bitarna med kommandot chmod 6755 foo.pl eller chmod ug+rxs,o+rx foo.pl s kommer programmet att kras som bertil, med bertils rttigheter oavsett vem som kr det. Det innebr till exempel att programmet kan lsa alla ler i bertils hemkatalog. Fr kataloger har Set-GID en speciellt fg egenskap: de medfr att kataloger och ler som skapas inne i denna katalog kommer att rva katalogens gargrupp, ven om den anvndare som utfr mkdir eller vad det nu r, r en annan anvndare, eller har vxlat ver till en helt annan grupp. Detta fungerar inte fr att p samma stt med Set-UID rva gande anvndare av skerhetsskl. Den sista biten brukar kallas vidhftande bit (engelska: sticky bit) eller text-biten och betecknas med t. Denna anvndes ursprungligen i riktigt gamla UNIX-varianter fr att markera att denna l var en textl som anvndes ofta och drfr skulle mellanlagras i datorns minne. Detta var lngt fre snabba hrddiskar och hrddisk-cache, s numera har den biten spelat ut sin roll fr vanliga ler, och det rekommenderas inte att du anvnder den. Kataloger r inte meningsfulla att spara i minnet, och drfr har t-biten en helt annan funktion fr kataloger, och denna kan faktiskt vara riktigt nyttig: Fr en katalog gller normalt att om du har skrivrttigheter till den, s kan du dels lgga till, ta bort och ndra alla ler i den, oavsett vilka rttigheter som gller fr de individuella lerna. t-biten satt p en katalog betyder att ven om en anvndare har skrivrttigheter i den kata67

Kapitel 2 POSIX logen, s fr denne bara skrivrttighet p ler som denne sjlv r gare till, och kan sledes inte ta bort andra anvndares ler eller katalogen sjlv (om denne inte r gare till katalogen, eller medlem i gruppen som ger katalogen). En typisk sdan katalog r /tmp-katalogen: i denna kan alla anvndare skriva, men inte radera saker som inte r deras egna. Inte heller kan de radera sjlva /tmp-katalogen, observera t i nedanstende listning:
# ls -dl /tmp drwxrwxrwt 12

root

root

4096 17 jun 20.12 /tmp

Fr att stta den vidhftande biten fr en katalog anvnder du kommandot chmod 1777 foo, chmod a+t foo eller liknande. Den oktala tabellen fr specialbitarna blir sledes: Bitmask 000 001 010 011 100 101 110 111 Oktalt 0 1 2 3 4 5 6 7 Stter inget Vidhftande bit Set-GID Vidhftande bit och Set-GID Set-UID Vidhftande bit och Set-UID Set-UID och Set-GID Vidhftande bit, Set-UID och Set-GID

Accesskontrollistor (ACL:er) Utver de rttigheter som specicerades i fregende avsnitt nns i modernare POSIX-system ven mjligheter till mer komplex rttighetstilldelning i form av accesskontrollistor. Dessa ger en mer nupplst kontroll av rttigheter till ler. Antag till exempel att du har tv anvndare, soe och fabian. Du vill att soe skall kunna skriva och lsa en l som heter foo.txt, fabian dremot bara skall kunna lsa ifrn den. D r saken ltt du ger soe garskapet till len och fabian sorteras in i gruppen andra, som fr lsrttigheter. Men antag att ingen annan n just fabian och ett par andra anvndare fr lsa den hr len. D skapar du lmpligen en grupp med namnet fooread, ger dem lsrttighet till len, och tar bort lsrttigheterna fr andra. I praktiken skulle detta kunna se ur shr (under frutsttning att du r root): 68

2.3 POSIX innehll

# # # #

touch chown chgrp chmod

foo.txt sofie foo.txt fooread foo.txt u=rw,g=r,o= foo.txt

Antag nu, att du vill att gruppen fnord, som innehller en mngd prominenta medlemmar, ocks mste f lsa len. Du skulle i och fr sig kunna lgga till alla medlemmar ur gruppen fnord i gruppen fooread. D vxer pltsligt mngden erfoderliga administrationsuppgifter s fort ngon lggs till eller tas bort i gruppen fnord fordras att du tnker p att lgga till eller ta bort denna anvndare ven i gruppen fooread. Du kan skriva upp detta i en prm eller p en post-it-lapp och tnka p det varje gng ngot sdant skall gras i systemet. Detta m vara hnt. Men vad hnder om du har femtio olika sdana ler, frdelade p femtio olika administratrer, och med etthundratjugo olika grupper i stil med fnord med korsvisa behrigheter till olika delmngder av de dr femtio lerna? Eller om det r hundra? Eller femtusen? I en stor organisation r sdana scenarier tyvrr inte speciellt ovanliga. Fr att tgrda sdana problem anvnds accesskontrollistor. Dessa r kopplade till en l och kan bearbetas med speciella kommandon. I accesskontrollistan kan du sedan rkna upp era olika anvndare och grupper, och deras respektive rttigheter. P s vis kan du ge hela gruppen fnord tillgng till olika ler direkt utan dessa problematiska omvgar. Du kommer bara att behva de speciella kommandona fr accesskontrollistor om du fr problem i stil med de som just beskrivits. Fr den ordinarie hemdatorn eller en mindre organisation rcker de vanliga behrigheterna i POSIX mer n vl. Kommandona getfacl och setfacl anvnds fr att kontrollera accesskontrollistor, men detaljerna kommer inte att terges hr, eftersom jag anser detta vara relativt ovanligt, och det r inte speciellt svrt att lra sig principen fr dessa kommandon med manualsidorna som std.36 Lnkar och symboliska lnkar I mnga lsystem r uppbyggnaden hierarkisk och byggd direkt p metaforen om lkabinettet. Denna metafor innebr att du tnker dig ditt lsystem som ett lkabinett av den typ som fanns i ldre kontor, med
36 Fr det aktuella exemplet ges gruppen fnord tillgng till len foo.txt med kommandot setfacl -m g:fnord:r foo.txt.

69

Kapitel 2 POSIX era hngmappar i varje lda, och med lerna som enskilda pappersbuntar i dessa mappar. I en del operativsystem illustreras lsystemet ocks helt logiskt med en bild av ett lkabinett. Det r frvisso sant att sjlva orden l och katalog (eller mapp som kataloger ocks kallas ibland) kommer ur denna metafor. Denna metafor m vara sann fr vissa lsystem. Den r inte sann fr POSIX-systemens lsystem. Dessa r fr det mesta ordnade p det viset, men de kan istllet vara Kafka-liknande labyrintiska lkabinett. Fr en mnniska r det, s vitt vi vet, omjligt att benna sig p tv stllen samtidigt. Om ngon spirituell person skulle hvda sig vara frmgen till detta kallar vi det ett transpersonellt parapsykologiskt fenomen, och betraktar det med skepsis. Denna verklighetsuppfattning beror naturligtvis p att vi betraktar vr vrld som materiell, och en uppsttning atomer kan inte benna sig p mer n en plats t gngen, sdana r naturens lagar. I lernas vrld r detta dremot enkelt, okomplicerat och inget speciellt mrkvrdigt. En lnk r inget annat n en l som benner sig p tv stllen i lsystemet samtidigt. Till exempel kan /home/soe/foo.txt och /home/bertil/ bar.txt vara en och samma l. De ser ut som tv olika ler, de heter olika saker, och ligger p skilda platser, men om du frsker lsa frn dem, lser du samma sak p bda platserna, och skriver du till dem skrivs samma sak till bda lerna. En del saker fungerar inte som fr andra ler: tar du bort den ena, s nns den andra kvar, och ndrar du rttigheterna, gare eller annan metadata37 p den ena s ndras de fr den andra ocks. Fr att skapa en lnk anvnds kommandot ln klla ml. klla r den l som redan nns och ml den nya lnk som du vill skapa. Denna typ av lnk kallas ocks hrd lnk. Varfr kallas den hrd? Det beror p att det ven nns s.k. symboliska lnkar. Dessa skapas med kommandot ln -s klla ml och skall anvndas nr det inte passar med en hrd lnk. Symboliska lnkar anvnds fr att referera andra ler med namn, vilket syns d du listar en katalog:
# ls -l lrwxrwxrwx -rw-------

1 sofie 2 root

sofie root

7 23 jun 23.17 bar.txt -> foo.txt 24 23 jun 23.00 foo.txt

Som synes r de symboliska lnkarna tillgngliga fr vem som helst, men det skall bara tolkas som att vem som helst kan flja lnkarna
37 Metadata r en samlingsbeteckning p olika former av tillggsinformation till en viss informationsmngd, som inte i sig r en del av informationsmngden. Exempel: etiketten p en prm, Hcg-beteckningen p en bok i biblioteket garen till en l o.s.v.

70

2.3 POSIX innehll frsker de utfra ngot praktiskt p en symbolisk lnk kommer rttigheterna p mllen att anvndas. En symbolisk lnk r speciellt bra om du ibland behver byta ut len som lnken pekar p. Om du tar bort en symbolisk lnk (i detta fall rm bar.txt) kommer detta inte att pverka den lnkade len. I POSIX nns inget sagt om att hrda lnkar skulle vara begrnsade p ngot vis, men i praktiken krver de esta operativsystem att ler som r hrda lnkar benner sig p samma enhet, och med samma enhet menas i detta fall att de r monterade p samma monteringspunkt. Det lysande undantaget frn denna regel r monteringspunkterna sjlva, som kan hrdlnkas bde hr och var, vilket r bra att tnka p i den situation att du pltsligt inser att du skulle vilja montera ett lsystem p tv olika stllen. Nu en lososk utykt. Allt i ett POSIX-lsystem r i sjlva verket hrda lnkar. En hrd lnk till en l och en l i sig, gr inte att skilja t. Om du gr en hrd lnk till en katalog kommer denna inte att kunna skiljas frn en katalog. Vi anar en bakomliggande struktur: det som vi kallar vanliga ler, kataloger o.s.v. r inget mer n hrda lnkar. Det enda som r lite ovanligt r nr det nns lnkar till lerna p mer n ett stlle. Meditera grna en stund ver detta.38

FIFO-ker Det nns ytterligare ett slags exotiska ler: FIFO-ker. Namnet kommer frn engelskans First-In-First-Out och brukar i viss litteratur ven kallas fr named pipes. Dessa fungerar ungefr som tennisbollar i ett stuprr: det du stoppar in frst i ena nden trillar ut frst i den andra. (Se gur 2.12) Att skriva till en sdan l r inget speciellt, men att lsa frn den r speciellt: det du lst trillar ut ur len och svljs av programmet som lser. FIFO-ker anvnds normalt inte av en anvndare, de anvnds fr kommunikation mellan olika program, exempelvis fr att skicka meddelanden till demoner. Du kan stadkomma en FIFO med kommandot mkfo foo.fo men min gissning r att du mste vara programmerare fr att komma p ett bra anvndningsomrde fr den. FIFO-ker har mycket stora likheter med ett s.k. rr (engelska: pipe39 ), ngot som vi kommer att diskutera lngre fram.
38 Och nr detta r klart, kan du ska vidare genom att frska frst vad en inod (engelska: inode) r fr ngot. Att frst det ligger utanfr omrdet fr denna bok. Du kan se alla dina lers motsvarande inoder med ls -i 39 Ceci, nest pas un pipe.

71

Kapitel 2 POSIX

Figur 2.12: FIFO-ker r som rtrr: det du stoppar in i dem ramlar ut i andra nden.

Block- och teckenenheter Blockenhetsler (engelska: block device le) och teckenenhetsler (engelska: character device le) r en typ av ler som i princip bara existerar i katalogen /dev i lsystemet. Ett samlingsnamn fr denna typ av ler r enhetsler. Dessa representerar saker som skrm, tangentbord, ljudutgng, grakkortsyta, hrddiskens lagringsutrymme, disketternas lagringsutrymme o.s.v. Blockenhetslerna r avsedda att ha en buffert som kan ta emot hela block av tecken, d.v.s. stora mngder bytes, t gngen, medan teckenenhetslerna kan ta enstaka tecken (bytes). I normalfallet r detta inget en vanlig anvndare skall behva bekymra sig ver. Enhetslerna r ppningar in i saker som hanteras av krnan. Som du vet hanterar krnan alla former av hrdvara: mus, tangentbord, ntverk, serieportar och modem, skrivarportar och skrivare o.s.v. Alla dessa ting nns normalt representerade i /dev. Det nns ingen regel om att blockenheter mste ligga i /dev, det r bara en konvention. Du kan kommunicera direkt med enklare blockenheter, som exempelvis din egen terminal, med echo foo > /dev/tty. Innebrden av just detta exempel kommer att belysas lngre fram. Enhetslerna skall inte tolkas som att det r mjligt att g in i hrddisken genom att skriva cd /dev/hdb eller liknande: alla sdana manvrar kommer att sluta i besvikelse. Hrddiskar r komplicerade saker och kan inte kommas t med mindre n att du monterar dem i lsystemet, ngot som stadkoms med kommandosekvenser i stil med mount /dev/hdb /mnt/foo. POSIX standardiserar inte hur montering skall ske, s detta varierar mellan olika system. Fr POSIX-system r hrddiskar inget annat n en lng, ordnad serie tal mellan 0 och 255, bytes. De r sledes exakt detsamma som en stor l. Om det exempelvis nns en blockenhetsl som heter /dev/hda s representerar detta hrddiskens totala lagringsutrymme. Detta utrymme kan sedan delas i partitioner, som sedan kan formateras enligt ett visst mnster och drefter monteras in i lsystemstrdet. Alla enheter som r monterade i trdet r i sjlva verket fr det mesta ngon form 72

2.3 POSIX innehll av blockenheter. (Exakt hur detta fungerar i just Linux kommer vi att g igenom lngre fram.) Som normal anvndare kommer du mycket sllan i kontakt med blockenheter, annat n nr det r dags att montera p ngon diskenhet i ltrdet. Kanske anvnder du ngon gng ngon specialenhet som /dev/null eller /dev/zero om du skriver skript. Det nns en enhet som heter /dev/tty som symboliserar din terminal, och det nns ofta era andra enheter som heter /dev/tty* (brjar p tty) och som symboliserar svl terminaler som serieportar p datorn. Det kan vara vrt att notera att tillgngen till saker som representeras som blockenheter fljer samma regler som andra ler: du kan exempelvis reglera tillgngen till datorns ljud och CD ROM-enhet bara genom att ndra lbehrigheterna till motsvarande blockenheter!40 Socklar Om blockenheter r ovanligt, s r socklar (engelska: socket) nnu ovanligare fr vanliga anvndare. Dessa symboliserar ntverksfrbindelser till en dator, och genom att stoppa in eller plocka ut tecken i en sockel uppstr en speciell sorts FIFO-k som har den egenheten att ena nden av kn benner sig i din dator, och den andra nden av kn kan benna sig i en annan dator. Socklar r oftast inkopplade frn och till det egna systemet men /mnt/socketa p din dator kan exempelvis vara samma l som /mnt/socketb p en annan dator. Det du stoppar in p din sida kommer ut i den andra datorn, och det den andra datorn stoppar in kommer ut p din sida. Det nns inga direkta anvndarkommandon fr att skapa och stnga socklar, och de nns inte kvar i lsystemet nr ntverket till datorn stngs av (se vidare avsnitt 2.3.10 om ntverket) s som vanlig anvndare anvnder du dem bara indirekt genom olika tillmpningsprogram. Den typ av socklar som gr till den egna datorn r oftast av en typ som kallas Unixdomnsocklar (det korrekta namnet r POSIX Local IPC Sockets), medan socklar som ansluts till andra maskiner r av TCP/ IP-typ. Om du vill veta hur socklar denieras i TCP/IP (vilket r den vanligaste ntverkstypen fr POSIX-system) kan du blddra fram och lsa p sidan 304. Dolda ler och kataloger Dolda ler i POSIX-system r detsamma som ler som har ett lnamn som inleds med en punkt, punktler. Detta r bara en konvention:
40 I

Linux nns ljudenheten t.ex. i /dev/dsp, o.s.v.

73

Kapitel 2 POSIX alla program och kommandon r konstruerade s att de inte visar ler som har namn som inleds med en punkt, det r ingenting som faktiskt skiljer en dold l frn en vanlig l utver detta. Fr att lista alla dolda ler i en katalog kan du ge vxeln -a till kommandot ls, detta stnger av ltret som dljer lnamn som inleds med en punkt. ven kataloger kan dljas genom att ge dem namn som inleds med en punkt. Dolda ler och kataloger anvnds ofta i anvndarnas hemkataloger fr att spara instllningar fr olika program. Om du anvnder Mozilla sparas exempelvis alla instllningar och bokmrken fr detta program i en katalog med namnet .mozilla i din hemkatalog. Prova grna med ls -a i din egen hemkatalog om du aldrig gjort det frut. Notera att nr du anvnder s.k. globbning (se 2.3.6) mste punkten inkluderas explicit fr att de dolda lerna skall matchas. ls -al [.a]foorc listar len afoorc men inte .foorc ven om den nns, ls -al .[fk]oorc listar dremot bde .foorc och .koorc. Hemkatalogen Hemkatalogen som r knuten till varje anvndare har av bekvmlighetsskl getts kortnamnet : ygande orm, tilde, vxelstrmstecken eller vad du nu nskar kalla det. Detta stadkoms p ett normalt tangentbord genom att hlla nere AltGr, trycka p knappen som innehller , , och sedan p mellanslagstangenten. Beroende p system kan det resulterande tecknet se lite olika ut. Om du vill kopiera en l ngonstans ifrn till din hemkatalog lser exempelvis kommandosekvensen cp foo.txt detta, och vill du titta p en l i din hemkatalog s kan more /foo.txt kanske vara en anvndbar kortform. Vill du kopiera en l frn en annan anvndare kan du ocks anvnda : cp soe/foo.txt . till exempel. Hemkatalogen skall flja en anvndare och skall normalt bara innehlla arbetsmaterial ssom ngra kataloger med ordbehandlingsler, lite bilder frn digitalkameran, MP3-ler eller vad anvndaren nu nskar spara dr. Program och andra ting som har med systemet sjlvt att gra skall normalt inte ligga dr. Tanken r att anvndaren skall kunna anvnda en och samma hemkatalog frn olika operativsystem och olika datorer. Drfr skall bara saker som r neutrala med avseende p operativsystem lagras dr. Instllningar fr olika program r neutrala. Programmens instllningsler skall (om programmen r vlgjorda!) kunna anvndas av samma program oavsett POSIX-operativsystem, under frutsttning att programmet nns till det operativsystemet. Exempelvis lagrar Mozilla sina bokmrken och liknande i en dold katalog i din hemkatalog, /.mozilla 74

2.3 POSIX innehll som sedan kan anvndas av alla versioner av Mozilla fr alla operativsystem. Du skall allts inte behva en ny hemkatalog fr att xa en sdan enkel sak. Eftersom alla arbetsler och alla instllningar till olika program fr en anvndare lagras i dennes hemkatalog, r det den enda del av operativsystemet som en vanlig anvndare behver befatta sig med. Om du administrerar ett strre system med era datorer, s se till att anvndarna vet hur de skall hantera sina hemkataloger fr att lagra sina arbetsler dr. En annan nurlig sak med hemkatalogen r att nr anvndaren vill gra en skerhetskopia av sina ler, r det bara att kopiera hela hemkatalogen. Detta grs exempelvis med kommandosekvensen tar cvf /tmp/ min_backup.tar / . Den resulterande min_backup.tar-len innehller en komplett skerhetskopia av alla dina ler. (Det avslutande snedstrecket r mycket viktigt, utan detta kommer alla dolda ler att tas bort frn skerhetskopian.) Ett alternativt stt att utfra samma operation r: cd ; tar cvf /tmp/min_backup.tar . du anger katalogen . som arkiveringspunkt, och det frsta cd-kommandot utan parameter tar dig automatiskt till hemkatalogen. (Notera att det r mjligt att utfra tv eller era kommandon efter varandra genom att stta semikolon (;) mellan dem.) En viss hygien rekommenderas i hemkatalogen. Ha inte ondigt mnga ler hr, helst inga alls utan bara kataloger som i sin tur innehller dina arbetsler. Utan ordning och reda i hemkatalogen kan det bli ganska jobbigt fr dig att hitta det du sker.

2.3.6

Reguljra uttryck

Reguljra uttryck (engelska: regular expressions, regexp, regex), r ven knda som jokrar (engelska: wildcards). Att anvnda reguljra uttryck i ett skal kallas ibland globbning (engelska: globbing), och nr de anvnds till detta har de ett lite annorlunda utseende. Det kan allmnt sgas att den som lrt sig anvnda reguljra uttryck i sitt arbete aldrig slutar anvnda dem och aldrig glmmer dem. Reguljra uttryck r inte unika fr POSIX-systemens anvndargrnssnitt, utan anvnds inom sprkvetenskap och kompilatorteknik, specikt inom teorin fr formella sprk. Ordet reguljrt uttryck kommer frn Noam Chomskys sprkhierarki, tredje (lgsta) nivn. Denna niv denierar sprk med reguljr grammatik. Det karakteristiska fr dessa sprk r att de kan realiseras som en nit tillstndsmaskin, vilket i princip betyder r ltt att programmera. Chomskys genombrott inom sprkvetenskapen p 75

Kapitel 2 POSIX 1950-talet kom att inspirera de matematiker som jobbade med formella sprk, d.v.s. i praktiken programsprk fr datorer. Utifrn Chomsky formulerade John Backus och Peter Naur sin Backus-Naur Form (BNF) fr beskrivning av kontextfri grammatik i formella sprk, som sedan utkades av Niklaus Wirth under arbetet med programsprket Pascal, till den Extended Backus-Naur Form (EBNF) som mest pminner om reguljra uttryck s som de anvnds i POSIXsystem. Till UNIX-vrlden kom reguljra uttryck d Ken Thompson lade in std fr dem i sin texteditor qed, samt senare i verktyget grep. Reguljra uttryck kan i olika programsprk, texteditorer och skal ha en egen dialekt och ett eget utseende. Vi skall hr fokusera p den denition som gller fr POSIX, vilken till strsta delen kan antas glla ven fr de esta skal, kommandon och s vidare. Dessa ternns i gur 2.13, sidan 77. Med dessa uttryck kan du ha mycket roligt, men den frmsta anvndningen r i texteditorer och vissa kommandoradsverktyg dr du behver ange mnster. Grundtanken r hr att om du vill matcha en strng41 fr att kunna vlja ut eller manipulera delar av den. I programmet grep kan du till exempel skriva:
grep ^{}M[eo]d foo.txt

Detta kommer att f till resultat att alla rader av len foo.txt som brjar med ordet Med eller Mod (med stor bokstav frst) kommer att skrivas ut p standardenheten. Observera att ven rader som brjar med Medan eller Modig kommer att visas. Om du tar bort -tecknet i brjan av det reguljra uttrycket, kommer ven rader dr strngen inte ligger frst p raden att skrivas ut. Nr du vill anvnda reguljra uttryck i ett skal skriver du till exempel:
ls -al *.html

Du menar d att du vill se alla ler med lnamnsndelsen .html. Punkten representerar i detta fall inte vilken bokstav som helst utan just en punkt. Med tanke p hur mycket punkter det anvnds i lnamn skulle det bli ganska jobbigt om alla punkter tolkades som reguljra uttryck. I skal har drfr reguljra uttryck en ngot annorlunda syntax, som visas tillsammans med andra uttryck i gur 2.14. Att anvnda denna form av reguljra uttryck kallas fr globbning.
41 En strng r en fljd av tecken, en ordnad mngd. Tecknen tas frn operativsystemets teckenuppsttning. aaaaa r till exempel en strng bestende av fem stycken a.

76

2.3 POSIX innehll Grundlggande reguljra uttryck


Uttryck <tecken> . [] [ ] Betydelse vilket tecken som helst matchar sig sjlvt en gng matchar p ett tecken, vilket som helst matchar ett tecken som nns innanfr hakparenteserna matchar ett tecken som inte nns innanfr hakparenteserna (allt utom detta) matchar brjan av en rad matchar slutet av en rad Exempel fnord matchar teckenfljden f,n,o,r,d. fn.rd matchar svl fnord som fnard. fn[oau]rd matchar fnord, fnard och fnurd men inte fnerd. fn[oa]rd matchar alla mjliga ord som fn.rd matchar, men inte fnord och fnard fnord matchar ordet fnord men bara nr det str i brjan av en rad. fnord$ matchar alla fnord som str ensamma p en rad, utan ngot annat vare sig till hger eller vnster (OBS! det fr inte ens nnas mellanslag till hger eller vnster!) \(fnord\) matchar ordet fnord och grupperar det. Detta anvnds bland annat d du vill bearbeta blocket i efterhand, till exempel byta ut just detta ord mot ett annat. fno\{3,5\}rd matchar fnooord, fnoooord och fnooooord fno*rd matchar fnrd, fnord, fnoord, fnooord o.s.v., \(fnord\)* matchar fnord, fnordfnord o.s.v.

\( \)

gruppera allt innanfr parentesen som ett block

\{x, y\} *

matcha fregende block minst x och maximalt y gnger matchar fregende block noll eller era gnger

Utkade reguljra uttryck


Uttryck + ? () {x, y} Betydelse matcha fregende block minst en gng matcha fregende block noll eller en gng grupperar allt innanfr parentesen i ett block matcha fregende block minst x och maximalt y gnger matcha alternativa block Exempel fno+rd matchar fnord, fnoord, fnooord o.s.v. fno?rd matchar fnrd eller fnord. Samma som fr \( \) i vanliga reguljra uttryck. Samma som fr \{x, y\} i vanliga reguljra uttryck. ([Kk]ent|[Bb]engt) matchar Kent, kent, Bengt och bengt.

Figur 2.13: Reguljra uttryck som r gemensamma fr de esta POSIXsystem, program, skal och texteditorer. De utkade uttrycken mste normalt aktiveras genom att exempelvis ange vxeln -E till ett program eller genom att anvnda ett speciellt program, egrep istllet fr grep till exempel. Observera att medan tecknen (, ), { och } kan anvndas fritt i vanliga reguljra uttryck krvs att du anvnder en s.k. escape-sekvens fr dem i den utkade varianten, \{ matchar { o.s.v.

77

Kapitel 2 POSIX Globbningsuttryck


Uttryck <tecken> Betydelse matchar ett tecken som inte r ett globbningstecken Exempel ls foo.txt listar just len foo.txt och ingen annan - observera att punkten inte har ngon speciell betydelse hr. ls *.html listar alla ler med lnamnsndelsen .html ls ???.txt listar foo.txt och bar.txt men inte foobar.txt. ls [bg]r[a].txt listar bra.txt, gr.txt, br.txt och gra.txt men inte kr.txt.

? []

matchar vadsomhelst noll eller era gnger, inklusive den tomma strngen (noll tecken) matchar ett tecken, vilket som helst matchar ett tecken som nns innanfr hakparenteserna

Figur 2.14: Globbningsuttrycken r beslktade med reguljra uttryck men har en lite annorlunda syntax som passar skalet bttre.

Du kan ha roligt ven med dessa uttryck: exempelvis listar kommandot ls [A-Z]*[12345].? alla ler som brjar med en stor bokstav i det engelska alfabetet, fortstter med vilka bokstver som helst, hur mnga som helst, fljt av ngon av siffrorna 1-5, en punkt och en lnamnsndelse bestende av en bokstav, till exempel .c eller .h. Vissa anvndare r inte njda med dessa reguljra uttryck utan vill ha nnu mer mjligheter att matcha och vlja ut strngar. Om sdana behov skulle uppst nns programsprket perl att tillg detta har kraftigt utkade reguljra uttryck med alla mjliga extra tillgg. De reguljra uttrycken kommer till stor nytta i nsta avsnitt, dr vi skall se hur du kan anvnda rr och lter i POSIX-system fr att hantera komplexa informationsmngder och hur du till sist ven kan skriva enkla datorprogram, s.k. skript i skalet.

2.3.7

Texteditorer
May I indent your code? Hackerfrolmpning

Frr eller senare kommer en anvndare av ett POSIX-system att behva redigera innehllet i en textl. Det nns hjlpprogram fr det mesta, men nr det gller exempelvis instllningar fr operativsystemet och fr olika program tenderar POSIX-systemen att hlla sig strikt till textler, som kan redigeras av anvndaren. Inte minst gller detta de s kallade punktler (dolda instllningsler) som sparas i varje anvn78

2.3 POSIX innehll

Figur 2.15: En terminalskrivmaskin av typen Teletype 48. Notera det s.k. traktorpappret i ovankanten dr rad fr rad av inmatad text dyker upp.

dares hemkatalog, och de esta kongurationsler som i ett typiskt system ligger i katalogen /etc. Den stora betydelsen en texteditor har fr en professionell anvndare yttrar sig i en del egendomligheter som fr en nykomling kan te sig ngot obegripliga. Exempelvis r texteditorerna mestadels textbaserade program som krs, eller kan kras, helt och hllet i ett terminalfnster, och ofta styrs texteditorerna med en underlig uppsttning tangentbordskommandon. Dessa faktorer r delvis historiska: nr editorerna uppfanns fanns inga graska fnstersystem, utan editorerna ck kras i terminalfnster. De hr visuella editorerna var p sin glans dagar (1970-talet) revolutionra: det har inte alltid varit mjligt att se era rader av en l p terminalen samtidigt raderna p skrmen anvndes istllet som buffert fr tidigare kommandon, och lerna ck editeras en rad i taget. De editorer vi kommer att bekanta oss med hr r dessa s kallade visuella editorer, dr era omgrdande rader i den l du vill editera syns samtidigt p skrmen. Detta att redigera era rader samtidigt var en gng i tiden faktiskt en nyhet och betraktades med skepsis av de anvndare som var vana vid saker som terminalskrivmaskiner (engelska: hardcopy terminal, teletypewriter, teletype, se gur 2.15), dr kommandon till datorn skrevs in en rad i taget precis som p en skrivmaskin, och fr skerhets skull ocks samtidigt skrevs ut rad fr rad p ett randigt s.k. pyjamaspapper, dr ven utskrifterna frn datorn hamnade. Kommandon och resultat 79

Kapitel 2 POSIX kunde sedan jmfras i efterhand.42 I POSIX-system nns faktiskt tv sdana editorer: ed och ex. Dessa fr anses vara ett historiskt arv och relativt meningslsa att lra sig, och kommer drfr inte att behandlas hr; den som r nyken p ed eller ex rekommenderas att lra sig dessa via manualsidorna. S lngt historiska anekdoter. Det saknas naturligtvis inte moderna texteditorer som r helt graska och fnsterbaserade.43 Det lustiga r att erfarna POSIX-anvndare sllan eller aldrig anvnder dem. Anledningarna r era, men huvudsakligen beror det p att styrningen med tangentbordskommandon, nr anvndaren vl har lrt sig dem, r mycket snabbare n att manvrera menyer med en mus. Ngon skulle vl hvda att dessa anvndare r konservativa sttar som ser upp till gamla gubbar med skgg. S vitt jag vet r det dock hastigheten som r det vervgande sklet till att de esta professionella anvndare hller sig till dessa texteditorer. Den texteditor som ingr i POSIX-standarden kallas VI och kommer att avhandlas i ett speciellt avsnitt. Utver denna r EMACS en minst lika populr editor. Det var uppe till diskussion huruvida EMACS skulle vara en del av POSIX-standarden, och programmets upphovsman Richard Stallman tillfrgades. Han hade d ganska dlig erfarenhet av fristende implementationer av EMACS, och bad kommittn att ta bort EMACS ur POSIX, fr att slippa se dliga implementationer: han resonerade som s att de som nskade anvnda EMACS nd skulle installera hans version: GNU EMACS. Detta frklarar i ngon mn varfr EMACS, ven om det inte r en del av POSIX, oftast betraktas som en standard och per automatik medfljer de esta POSIX-system, dock inte alla. Flera professionella anvndare har en nrmast religis instllning till sin texteditor och missar sllan ett tillflle att p skoj racka ned p den andra editorn. Det r i sjlva verket inte mjligt att p objektiva grunder hvda att den ena editorn skulle vara bttre n den andra, det handlar mycket om tycke och smak. Det bsta r att behrska bde VI och EMACS, men att kanske hlla sig till att bara lra sig en av editorerna p djupet.44 Du mste hr vlja sjlv.
42 Dessa editorer har historiskt sett sitt ursprung i teleprintrarna, de frsta rent textbaserade telegraferna. (De kallades ocks fjrrskrivmaskiner.) Nr de frsta datorerna tillverkades tog konstruktrerna de delar som fanns till hands fr att lsa jobbet, och teleprintern var en sdan lmplig byggsten. 43 Fnstersystemen GNOME och KDE har exempelvis varsin egen texteditor, och ett stende skmt nr en ny programmerare vill ha tips om ett bra projekt att starta fr att lra sig r skriv en texteditor! 44 Det r fr vrigt ett terkommande fenomen i POSIX-vrlden att de populraste verktygen kommer i tv dominerande par: VI och EMACS, perl och python, GNOME och KDE, GTK+ och Qt, sed och awk. Alla dessa verktyg kan, oavsett vad apologeterna sger,

80

2.3 POSIX innehll

Figur 2.16: En l som editeras med VI. Editorn benner sig i inskjutningslge, vilket syns lngst ner till vnster.

Nr du hoppar in i en texteditor kan det vara vrt att tnka p att det alltid r mjligt att tillflligt ta sig tillbaka ut i skalet med Ctrl+z och sedan teruppta editeringen med kommandot fg s som beskrevs i avsnitt 2.3.2 om processer.

VI VI eller vi utlses visual editor och r som sagt POSIX-standarden fr texteditering. Den ursprungliga versionen av VI skrevs en gng i tiden av Bill Joy vid AT&T Bell Labs, baserat p enradseditorn ed. Du kan ltt brja editera en bentlig l i VI med kommandot vi foo.txt. (Om len inte redan nns kommer den att skapas.) VI r varken intuitivt eller ltt att lra sig. Det mste omedelbart sgas. Mycket f helt textbaserade datorprogram r intuitiva ver huvud taget, den som kan sin historia med exempelvis DOS-baserade ordbehandlingsprogram vet att det ofta levererades plastremsor med programmen som klistrades ovanfr funktionstangenterna p datorns tangentbord fr att anvndaren skulle kunna hitta funktionerna genom att titta dr istllet fr i manualen. Flera anvndare av texteditorer fr POSIX-system anvnder referenskort eller kaffemuggar(!) med kommandolistor fr att slippa hlla alla kommandon i huvudet. Det frsta du mste lra dig om VI r att den arbetar i tv olika lgen, vilka indikeras av texten lngst ner till vnster i terminalen: str det INSERT benner du dig just i inskjutningslge, annars i kommandolge:
i princip utfra samma arbete som de andra.

81

Kapitel 2 POSIX

kommandolge (engelska: command mode) detta lge anvnds fr att ytta sig runt i dokumentet och utfra kommandon som pverkar stora delar av texten. Det r alltid mjligt att ta sig till kommandolget genom att trycka tillrckligt mnga gnger p tangenten Esc (escape) hgst upp till vnster p tangentbordet.45 Kommandon i kommandolget kan skrivas direkt oavsett vart markren benner sig. Detta kan knnas ovant och farligt, men det r bara att exempelvis inleda ett kommando med att trycka ned : ngonstans mitt inne i texten. Fljande r basala kunskaper i VI:s kommandolge: Du yttar dig runt i len med piltangenterna. Skulle detta inte fungera kan tangenterna h j k l anvndas fr att manvrera markren vnster, nedt, upp och hger. Starta editeringen av en l med vi foo.txt. Om du bara skriver vi utan att ange en l kan du lsa in en l med :e foo.txt.46 Detta fungerar ocks bra om du editerat en l och vill byta till att editera en annan l. (Spara frst, annars mste du skriva :e! foo.txt fr att ignorera de ndringar du gjort.) Skriv ut len till disk (skriv ver den gamla) med :w. Fr att avsluta editeringen av en l: tryck frst Esc tills du hamnar i kommandolge och skriv sedan kommandot :q!. Om du har sparat innan rcker det med :q. Fr att ta bort innehllet i den rad du str p, tryck D (delete). Fr att ta bort raden helt och hllet, inklusive innehllet, tryck dd (tv sm d efter varandra). Om du gjorde ngot dumt och ngrar dig, tryck u (undo). Fr att foga in innehllet frn en annan l p den plats i bufferten dr du benner dig, skriv :r foo.txt. Du kan ven gra exotiska saker som :r !uname -a fr att lsa in namnet p
45 Om nu inte Esc skulle nnas p ditt tangentbord kan Ctrl+[ fungera under vissa omstndigheter. 46 Alla kommandon som brjar med : r ursprungligen frn den gamla, radbaserade ex-editorn.

82

2.3 POSIX innehll ditt POSIX-system (eller ngon annan utmatning frn vilket kommando som helst) i bufferten. Sk framt efter text med /foo fljt av ENTER, upprepa skningen efter samma ord med // fljt av ENTER. (Detta r samma sak som gller i kommandot more eller nr du lser manualsidor med man.) Sk bakt efter text med ?foo, upprepa skningen med ??. Sk och erstt en sekvens med exakt samma syntax som kommandot sed47 anvnder efter ett inledande : t.ex. :s/foo/bar/g fr att byta alla frekomster av ordet foo mot ordet bar. Alternativt kan du skriva g/foobar/s/foo/fnord/g fr att frst hitta alla frekomster av foobar och i dessa byta foo mot fnord s att det istllet str fnordbar. Fr att g ver i inskjutningslge, kan du trycka olika tangenter: att trycka i (insert) r det mest uppenbara sttet detta gr direkt ver i inskjutningslge och skjuter in tecken fre den bokstav markren str ver, a (append) gr samma sak men efter den bokstav markren str ver. I respektive A gr samma sak fast i brjan av raden eller i slutet av raden som du just str p. o skapar en ny tomrad under markren, placerar markren p denna rad och gr ver i inskjutningslge. Observera att det som s ofta i POSIX-vrlden r lite knsligt med skillnaden mellan stora och sm bokstver. inskjutningslge (engelska: insertion mode) detta lge anvnds fr att manuellt editera innehllet i len, d.v.s. fr att skriva och redigera text fr hand, utan hjlp av andra kommandon. Normalt r det fritt fram att bara skriva den text du vill ha, inklusive korrigeringar genom tryck p raderingstangenterna (delete, backspace) och liknande. Vissa implementationer av VI kommer att radera texten i bufferten samtidigt som du trycker p en raderingstangent, medan andra inte visar resultatet av sdana operationer frrn du tervnder till kommandolge. Du lmnar inskjutningslget p olika stt: tangenten Esc r det mest uppenbara, men i vissa varianter av VI medfr alla tryck p piltangenterna ocks att du omedelbart lmnar inskjutningslget. Dessa tv lgen vxlar du sedan fram och tillbaka mellan under tiden du editerar din l.
47 sed frklaras ingende p sidan 95, precis som i sed kan VI anvnda reguljra uttryck.

83

Kapitel 2 POSIX
vi foo.txt :q! :wq eller :x Esc Rudimentra kommandon Starta len foo.txt i VI. Avsluta VI ovillkorligen. Skriv till l och avsluta. Lmna inskjutningslge och terg till kommandolge. Bra att trycka p nr allt annat knns hopplst. G ver i inskjutningslge efter markren. G ver i inskjutningslge fre markren. G in i inskjutningslge i brjan eller slutet av raden. Sk framt efter texten foo. Sk bakt efter texten foo. Filhantering Editera len foo.txt istllet. Om len som fr tillfllet editeras inte sparats kommer kommandot att vgra. Samma sak men ignorerar faran med att det du sist jobbade med kommer att g frlorat. Skriver ut len till lsystemet. (Sparar.) Lser in innehllet i len foo.txt p den plats dr markren benner sig. Utfr kommandot cmd. Resultatet frn kommandot (d.v.s. stdout) hamnar dr markren benner sig. Sk och erstt Sk efter foo och erstt med bar i hela len utan att frga om saker skall ersttas. :s/foo/bar/c Samma sak, men frga frst, innan ersttning grs. Markering, radering och kopiering av text dd Ta bort raden under markren d3d Ta bort tre rader under markren yy Kopiera raden under markren y7y Kopiera raden under markren och de fljande 6 raderna (6+1=7) p Klistra in de kopierade raderna under markren P Klistra in de kopierade raderna fre markren Inklistringskommandona kommer ven att klistra in text som tagits bort vid radering med d-kombinationer. :s/foo/bar/g

i a I och A /foo ?foo :e foo.txt

:e! foo.txt :w :r foo.txt :r !cmd

Figur 2.17: De vanligaste kommandona i VI. De esta kommandona anvnds i kommandolget, vissa angivna i inskjutningslget.

Nr du ppnat din l syns det versta av lens innehll p skrmen. Om len skulle vara kortare n skrmen fyller VI utrymmet under sjlva len med ett -tecken p varje icke-existerande rad. Sedan r det bara att editera, spara, editera igen, o.s.v. En lista ver anvndbara VI-kommandon ternns i gur 2.17. Utver den standardiserade VI-editorn kommer mnga operativsystem med ngon eller ngra extra editorer som r kompatibla med VI, exempelvis VIM - VI Improved. Dessa har olika egenheter men fungerar i grunden likadant som VI. EMACS EMACS vilket skall utlsas Editor MACroS, r till programstorleken, bde betrffande faktisk storlek i bytes, anvnt minnesutrymme och komplexitet en betydlig strre editor n VI, p gott och ont. Det r inte utan anledning som EMACS ibland kallas operativsystemet listigt frkltt till texteditor. EMACS skrevs ursprungligen av Richard Stallman r 1976, fr operativsystemet ITS (Incompatible Timesharing System) vid MIT i Boston. Det r inte skert att EMACS r installerat i ditt operativsystem. I s fall fr du frst fundera ut hur detta gr till fr just ditt system. Detta r en anledning s god som ngon att ven behrska VI. Du kan starta editeringen av en l med EMACS genom att skriva emacs foo.txt. I fnstersystem startas EMACS ofta i ett eget fnster, och det kan drfr vara en god id att skriva emacs foo.txt& istllet, s att 84

2.3 POSIX innehll

Figur 2.18: En l som editeras med EMACS. Det som visas r den version av EMACS som anpassats fr GNOME.

du kan fortstta anvnda skalet till ngot annat eftert. Vill du prompt att EMACS inte skall starta i ett eget fnster skriver du istllet emacs -nw foo.txt (no window). Eftersom EMACS grna startar i ett eget fnster r det enklare att komma igng med EMACS som nybrjare. Den nns menyer fr att gra det mesta som i VI mste gras med tangentkombinationer, vilket fr nykomlingen kanske kan vara sknt att slippa. Det nns allts mjligheten att snabbt komma igng med EMACS fr att sedan lra sig tangentbordsmanvreringen lite efterhand. Frsta gngen du startar EMACS (utan att ange ngon l) erbjuds du dessutom ofta en sjlvstudiekurs i hur editorn fungerar. Nr nu EMACS r ett s pass stort program fredrar mnga att bara ha en EMACS-session aktiv t gngen, och att drifrn vxla ver till de olika ler (buffertar) de vill editera. Detta r ngot av en smaksak i dagslget med dagens mtt mtt r EMACS inget stort program och kan gott startas varje gng ngot skall editeras. Utmrkande fr EMACS r att programmet anvnder tangenterna Ctrl och Meta itigt, av historiska anledningar. Tangenten Meta fanns framfr allt p LISP-maskiner, en sorts datorer anpassade fr programsprket LISP som tillverkades mestadels under slutet av 1970-talet. P vra moderna datorer har oftast tangenten Alt tagit ver denna roll, och i vissa fall anvnds tangenten Esc. I EMACS-vrlden kallas alla dessa 85

Kapitel 2 POSIX substitut fr Meta nd kort och gott Meta eller bara M. P datorer frn Sun Microsystems motsvaras tangenten av diamanttangenten . I allmnhet kan du lugnt anta att Meta = Alt. Nr tangentkombinationer i EMACS refereras str det ofta saker som C-s eller M-x. Detta betyder Ctrl+s respektive Meta+x, d.v.s. du skall hlla inne tangenten Ctrl eller Meta och trycka p s respektive x. Det nns ett undantag: de operativsystem som anvnder Esc som Metatangent, krver att du frst trycker och slpper Esc, drefter trycker du p nskad Meta-kombination. Nr du startat EMACS kan du avsluta det med tangentkombinationen Ctrl+x Ctrl+c, vilket du utfr genom att hlla nere Ctrl-tangenten och sedan trycka p x-tangenten, slppa den och sedan trycka p ctangenten utan att slppa upp Ctrl emellan. Detta r ett ndvndigt handlag som du lr dig efterhand. Ngot som r viktigt fr att frst EMACS r konceptet buffert. EMACS kan hantera ett godtyckligt antal buffertar fr att utfra arbete i era ler samtidigt, och har drutver ngra extra buffertar. Nr du startar EMACS (se gur 2.18) syns tv buffertar: en vre som presenterar editeringsytan fr den l du editerar, alternativt den s.k. scratchbufferten, om du inte valt att editera ngon l. Nertill i EMACS-fnstret nns den en rad hga s.k. minibufferten som anvnds fr att skriva kommandon till EMACS. EMACS erbjuder sedan en rad mjligheter fr att se era buffertar samtidigt och kunna vxla mellan buffertar fr att du ska kunna arbeta s smidigt som mjligt. EMACS skiljer sig frn andra graska program p det viset att ler som sparats efter att de editerats frdigt fortfarande ligger och skvalpar i en egen buffert. Vill du hitta ngon motsvarighet till andra programs stng (close le) r detta nrmast kommandot kill buffer (Ctrl+x Ctrl+k) i EMACS. Fr att EMACS skall fungera riktigt snabbt mste du lra dig snabbkommandona, men menyerna rcker som sagt lngt till en brjan. De vanligaste tangentkommandona i EMACS nns sammanfattade i gur 2.19. Saker du frmodligen kommer att lra dig snabbt r att trycka Ctrl+k Ctrl+k (hlla nere Ctrl och trycka p k tv gnger i rask fljd) fr att radera en rad och Ctrl+s fr att ska efter text. Om du en dag nskar att ngot speciellt editeringskommando fanns till EMACS s visar det sig frmodligen att det redan nns om du bara orkar leta reda p det. Att trycka Meta+x och sedan ngot som du misstnker att ditt kommando kan heta, fljt av ett slag p tangenten TAB kan ibland snabbt avslja den mest hisnande ora av editeringskommandon. Tv ytterligare kortkommandon r viktiga att kunna: Ctrl+_ (understreck) r kombinationen fr att ngra senaste operationen. Hller 86

2.3 POSIX innehll


emacs foo.txt Ctrl+x Ctrl+c Ctrl+g Ctrl+s Rudimentra kommandon Starta len foo.txt i EMACS. Avsluta EMACS Avbryt aktuellt kommando i minibufferten. Sk efter text. Direkt efter att du tryckt Ctrl+s skall du brja skriva texten du vill ska efter, och EMACS hoppar d till frsta frekomsten. Avbryt kommandot med piltangenter, Esc eller Ctrl+g. Vlj godtyckligt kommando genom att skriva in det. Filhantering ppna en l i en ny buffert. Spara len i aktuell buffert till lsystemet. Spara len i aktuell buffert under nytt namn. (Save as) Spara alla ndrade buffertar till lsystemet. Ls in en annan l och infoga i bufferten vid markrens position. Dda bufferten som markren just nu benner sig i. (kill, Close le) Sk och erstt Sk och erstt. Frga fr varje sak som skall bytas om den skall bytas eller ej, svara med y eller n. Avbryt kommandot med ENTEReller piltangenterna. Sk och erstt ovillkorligen utan att frga om lov. Sk och erstt med reguljra uttryck. Markering, radering och kopiering av text Radera innehllet p aktuell rad frn markren och framt. Ctrl+k Radera raden och radslutet helt, ta bort en Ctrl+k rad helt ur bufferten. Ctrl+mellanslag Markera brjan av ett stycke frn den plats dr markren benner sig. Flytta sedan pilarna i bufferten fr att markera mer text uppt eller nedt. Ctrl+y Klistra in det du sist tog bort p den plats dr markren just nu benner sig. (Vanligaste sttet att ytta saker r att ta bort dem med ngot av ovanstende och sedan klistra in dem med detta kommando.) Bufferthantering Ctrl+x b Byt till en annan buffert (bra fr att t.ex. vxla fram och tillbaka mellan tv buffertar, den senast anvnda r standardalternativ). Ctrl+x 1 Det fnster dr markren benner sig blir det enda aktiva EMACS-fnstret. Ctrl+x 2 Dela fnstret du str i i tv delar i vertikalled s att tv buffertar kan visas samtidigt ovanp varandra. Ctrl+x 2 Dela fnstret i tv delar i horisontalled s att tv buffertar kan visas samtidigt vid sidan av varandra. Ctrl+x o Hoppa med markren frn det ena till det andra fnstret (other) Visa alla buffertar i olika fnster samtidigt. Ctrl+x Ctrl+b Ctrl+k

Meta+x ...

Ctrl+x Ctrl+f Ctrl+x Ctrl+s Ctrl+x Ctrl+w Ctrl+x s Ctrl+x i Ctrl+x k

Meta+%

Meta+x replacestring Meta+x queryreplaceregexp Meta+x replaceregexp

Sk och erstt med reguljra uttryck utan att be om lov vid ersttning.

Figur 2.19: De vanligaste kommandona i EMACS.

du nere Ctrl och hamrar upprepade gnger p _ kommer du snart att ngra dig igenom allt du gjort, fr EMACS har ett gott lngtidsminne. Den andra kombinationen r Ctrl+g, vilket avbryter ett kommando som lser in dig i en minibuffer (understa raden) s att du inte kan ta dig drifrn. Ctrl+g kan ven avbryta saker som t.ex. oavsiktliga avslutakommandon (pltsligt kommer texten Save le ...? upp fast den inte borde). Dessa tv kommandon r guld vrda nr du upplever att EMACS fastnat. Nr du editerar med EMACS sparas ibland skerhetskopior av dina ler, vilka innehller den gamla len fre senaste editeringen. Om len du editerade hette foo.txt kommer skerhetskopian att heta foo.txt. En del anvndare ogillar att det ligger sdana skerhetskopior och skrpar och sitter drfr ofta och plockar bort dem fr hand med rm *, en ovana som inte rekommenderas, eftersom det r ltt att missa det avslutande -tecknet. Det sparas ven med jmna mellanrum en l som innehller alla ndringar som gjorts sedan du ppnade len. Denna heter typiskt #foo.txt#. Om EMACS kraschar eller ngot annat otckt intrffar kan denna l terskapa de ndringar som gjorts fram till senaste automatiska undansparningen. EMACS kommer automatiskt att tipsa om att du 87

Kapitel 2 POSIX kan terskapa (engelska: recover) len nsta gng du editerar foo.txt. EMACS kommer ven med ett eget programsprk som minner om programmets ursprung EMACS LISP eller ELISP, vilket r det sprk som strre delen av programmet r skrivet i, och som anvnds av den som nskar skriva egna tillgg till EMACS. Som normal anvndare kommer du sllan i kontakt med ELISP, men ett stlle dr det anvnds r i instllningslen .emacs som ligger i din hemkatalog. Att gra instllningar i denna krver viss insikt i ELISP, alternativt att du bara kopierar exempel som andra gjort t dig. JOE, PICO, NANO, MCEDIT etc. Utver de tv stora texteditorerna nns det, framfr allt i Linux-system, era enkla editorer. Som nmnts erbjuder GNOME och KDE sina egna editorer, men det nns ocks andra, som kan nmnas som hastigast. Om du tycker att VI och EMACS r alldeles fr krngliga, kan det vara vrt att prova ngon av dessa. En varning skall dock utfrdas: ven om dessa verktyg rkar nnas i just ditt operativsystem, s r det ingen garanti fr att det kommer att nnas i alla andra POSIX-system, och allra minst att det skulle nnas frinstallerat. Drfr r det ofta ndvndigt att ven kunna behrska VI och/eller EMACS. mcedit r en editor som hr till lhanteringsprogrammet Midnight Commander (startas med mc). Midnight Commander r skrivet av Miguel de Icaza som senare kom att starta projektet GNOME. Svl mcedit som hela Midnight Commander r bekant fr den som tidigare i livet anvnt DOS-programmet Norton Commander. Om du tycker om detta verktyg s r det en lysande id att fortstta anvnda svl Midnight Commander som mcedit under POSIX. pico r en editor som hr till programmet pine48 som egentligen r till fr att lsa elektronisk post och nyhetsgrupper. Editorn manvreras med olika Ctrl+-kombinationer som pedagogiskt nog r uppradade lngst ned p skrmen s att du slipper komma ihg dem i huvudet. Det lurar en fara i Pico: det r gjort fr att editera textler som skall lsas av mnniskor och kommer drfr att infoga radbrytningar och avstavningar dr den nner det lmpligt. Det gr att g runt detta, men det orsakar mest problem. Pico kan drfr inte rekommenderas fr editering av systemler, instllningar och liknande. GNU-projektet som inte r speciellt frtjusta i den dis48 Se

avsnitt 11.3 p sidan 390

88

2.3 POSIX innehll tributionspolicy som gller pico har istllet skapat en egen klon som heter nano och som fungerar i princip exakt som pico. jed r en menybaserad texteditor som r liten, smidig, och imiterar funktionen hos andra editorer, frmst EMACS. joe r ytterligare en texteditor som frut var mycket populr bland de som inte orkade eller ville lra sig vare sig VI eller EMACS. Denna kan efter begran fylla vre halvan av skrmen med en lathund som gr det ltt att lra sig kommandona, som samtliga r beroende av Ctrl-tangenten. Dessa kommandon har inget gemensamt med vare sig VI eller EMACS.

2.3.8

Datum och tid

Det hnder inte s sllan att klockan i din dator gr fel, eller att du vill veta vad klockan r, samt vilken dag i mnaden det r. Av denna anledning nns kommandon fr att visa och justera datum och tid i alla POSIX-system. cal ger en kalender fr ett visst r, t.ex. get cal 2004 en kalender fr r 2004. En egenhet fr detta kommando r att det kan ge olika resultat fr r 1752 och 1753 d vi bytte frn juliansk till gregoriansk kalender. GNU-versionen av kommandot (gcal) tar hnsyn till de svenska specialiteterna och visar dessa r korrekt, om rtt parametrar ges. date ger datum och tid. Detta anvnds fr att ta reda p vad klockan r, genom att bara skriva date. Drutver anvnds date ocks fr att stlla klockan. Fr att stlla klockan skriver du date MMDDhhmm dr MM r mnad, DD r dagen hh r timmen p dygnet och mm minuten p timmen. Observera att alla parametrar skall anges tvstlligt, d.v.s. med inledande nolla om s behvs. Behvs mer noggrann instllning kan kommandot ta era parametrar. date MMDDhhmmCCYY.ss stller dessutom klockan till rhundradet CC, ret YY och sekunden ss p minuten, t.ex. date 072421042003.00. time har dremot inget med datum och tid att gra i vanlig mening! Detta kommando anvnds fr att ta tiden p hur lng tid ett visst kommando tar att kra, som med en kronometer. Betrffande datum och tid, se ven avsnitt 9.6 p sidan 335 om NTP. 89

Kapitel 2 POSIX

2.3.9

Rr, lter och skript


. . . vlj frst den l du vill kopiera och skriv sedan chmod iff /dev/null ; dc. dc ska sedan pipe:a till bg print $1 -la $PARAM exec temple trap. Processen kommer hr att fork:a och child kommer sedan att g vidare till rm -f optparse rmm typeset l1 -R.current scanf grep .sh -DSLACK, sen fork:ar processen igen och skickar resultatet i en pipe som du sedan kopplar till den l som du vill kopiera. Fejkad distanskurs i UNIX, allmnt spridd p Internet

I slutet av 1960-talet avsatte frsvarsorganisationen NATO stora resurser fr att lsa ett problem som kallades mjukvarukrisen. Med detta menades att stora mjukvarusystem exempelvis operativsystem, men ocks administrativa program och simuleringsprogram hade blivit omjliga att hlla samman. Programmen utvecklades till en grt som inte gick att underhlla. Ett annat problem var att utvecklingsarbetet inte gick att parallellisera, det var svrt att f olika delar av ett arbetslag att tillverka varsin liten del av ett strre projekt. Vid en konferens i Garmisch i Tyskland som sponsrats av NATO lade Douglas McIlroy fram ett frslag p lsning av mjukvarukrisen som gick ut p att datorprogram skulle skrivas som komponenter som fogades samman p samma vis som elektroniska komponenter i en elektrisk krets. McIlroy var tredje mannen bakom UNIX-utvecklingen p AT&T Bell Labs (jmte Ken Thompson och Dennis Ritchie), och infrde drfr detta tnkande i UNIX. Den strm som yter i en elektrisk krets ersattes med strmmar av bytes, vilket till exempel kunde vara text.49 Genom att leda sdana strmmar genom tnkta rr (engelska: pipe) och genom att bearbeta dem i olika lter, kan ett datorprograms bearbetning av information liknas vid det i en krets eller ett vattensystem, dr rren tillhandahlls av operativsystemet och ltren r olika sjlvstndiga datorprogram som bearbetar strmmen. Rren r i sjlva verket s.k. FIFO-ker, som vi ju stiftat bekantskap med tidigare; det som frst gr in i ena nden av ett rr kommer frst ut i andra nden, som i gur 2.20. Nr era rr och lter fogas samman bildas en rrledning (engelska: pipeline). Den fljd av tecken som skickas genom en rrledning kallas
49 McIlroys ider har sedan spridit sig till en mycket vid krets, pipes and lters r numera ett vedertaget s.k. designmnster, och den grundlggande tanken med mjukvarukomponenter r densamma fr exempelvis CORBA, COM, o.s.v. Miguel de Icaza[13] menar att detta system med rr och lter r frldrat och br ersttas med GNOME-systemets Bonobo, en CORBA-baserad arktikektur.

90

2.3 POSIX innehll

Infil

Rr

Filter

Rr

Filter

Rr

Utfil

Figur 2.20: Rr och lter processerar strmmar av information. Somliga kallar detta fr klla-de-vask efter engelskans source-ow-sink.

fr en strm. (Det r en strm av tal mellan 0 och 255 som avses, men dessa tal utgr oftast tecken och skickas radvis.) Frn dessa rr och lter, dr varje lter r en egen process, ett sjlvstndigt datorprogram, hrstammar den s.k. UNIX-loson om att skapa sm program som gr en sak men som gr det bra, fr att dessa skall kunna kopplas samman fr att f en vl fungerande helhet. Att anvnda rr och lter i POSIX-system r mjligt tack vare tre inbyggda specialler i skalet. Fr varje nytt skal du ppnar skapas tre nya sdana unika ler.50 Dessa specialler upplevs som vanliga ler av alla datorprogram, men existerar inte i lsystemet i egentlig mening, d.v.s. de nns inte i ltrdet. Dessa r: stdin utlses standard input och r den l dr ett kommando hmtar sin indata, om inget annat angivits. Om du startar ett kommando, exempelvis sh, s kommer tecken att lsas frn stdin. Om inget rr r kopplat till stdin, kommer programmet att anslutas till standardterminalen, det fnster dr du startade kommandot, och kommandot kommer att brja ltrera det som kommer frn tangenterna. Det r p detta vis skalet tar hand om tangenttryckningarna i en terminal. stdout utlses standard output och r den l dr ett kommando skriver sin utdata. Om du startar ett kommando utan att ansluta ngot rr till stdout, kommer denna l automatiskt att anslutas till standardterminalen, och p s vis kan du bde skriva kommandon p stdin och ta emot resultat frn stdout i exempelvis ett skal. Du uppfattar kanske aldrig att det r frga om tv ler, tangentbordet anslutet med ett rr till stdin och skrmen ansluten med ett rr till stdout, men det r faktiskt exakt s det hela fungerar.
50 D.v.s. dessa ler fljer med skalet, hr samman med skalet, inte med operativsystemet eller terminalen.

91

Kapitel 2 POSIX
Symbol | Namn pipe Funktion kopplar stdout frn kommandot till vnster om tecknet till stdin p kommandot som str till hger om tecknet. Kommandon grupperade med | kallas fr en rrledning (engelska: pipeline). Mnga rrstumpar ger allts en rrledning. Om det som str till hger om tecknet r en l i lsystemet, kopplas denna till stdin fr kommandot nrmast till vnster. Om det som str till hger om tecknet r en l i lsystemet, kopplas denna till stdout. Till vnster mste det nnas ett kommando med ngon form av utmatning till stdout. Om len redan existerar kommer innehllet att skrivas ver, om den inte existerar skapas en helt ny l med angivet namn. fungerar som > men lgger till resultatet i slutet av len om den redan existerar, annars skapas en ny l. ansluter lbeskrivare n till len som just nu anvnds av lbeskrivare m. Det vanligaste (enda?) anvndningsomrdet fr denna operation r sekvensen 2>&1 vilket ansluter stderr till stdout s att programutskrifter och felutskrifter blandas samman till en l, som i grep foo * 2>&1 > foo.txt ansluter lbeskrivare n till len som str till hger om >. Den vanligaste anvndningen r att skicka stderr till en egen l med t.ex. grep foo * > foo.txt 2> err.txt.

<

mindre n

>

strre n

>> n>&m

mycket strre n anslut l

n>

anslut l

Figur 2.21: De vanligaste tecknen fr omdirigering av strmmarna i rrledningar.

stderr utlses standard error och r avsedd fr felmeddelanden. Denna ansluts nstan alltid till standardterminalen: ven om stdin och stdout r anslutna till tv ler i lsystemet istllet fr att vara anslutna till terminalen, vill du ofta direkt se om och nr ngot gr fel i kommandot. Till varje speciall hr en lbeskrivare (engelska: le descriptor) vilket r ett nummer. I sjlva verket har alla ler operativsystemet anvnder sdana nummer, men en vanlig anvndare som inte r programmerare behver sllan anvnda eller bekymra sig om dem. stdin, stdout och stderr har lbeskrivarna 0, 1 och 2. De andra lbeskrivarna som anvnds av skalet brjar sedan frn 3 och uppt. Detta dyker upp i en del specialfunktioner nedan och kan drfr vara bra att knna till. Rr och lter anvnder ngra speciella tecken fr att indikera hur dessa specialler skall koppas samman. Dessa ternns i gur 2.21. De rrledningar som stadkoms med dessa teckensekvenser kan sedan grupperas i olika listor, vilket vi sett exempel p redan tidigare. Dessa ternns i gur 2.22. 92

2.3 POSIX innehll


; synkron lista semikolon kommer att separera tv rrledningar (d.v.s. enstaka kommandon eller hela sekvenser avskilda med |) och utfra kommandona i rrledningen till vnster frst, och sedan rrledningen till hger. gr frst det till vnster och sedan det till hger om ;. &-tecknet kommer att separerera en rrledning som str till vnster om &-tecknet och utfra denna asynkront, dvs parallellt med allt som fljer eftert. Detta knner vi igen som sttet att starta ett bakgrundsjobb, och givetvis r detta en och samma sak. fungerar precis som en vanlig lista, men rrledningen som fljer till hger utfrs bara om den till vnster lyckades. En ;-lista utfrs dremot ovillkorligen.

&

asynkron lista

&&

lista med villkor

Figur 2.22: De vanligaste tecken fr att stadkomma kommandolistor med rrledningar.

Med dessa kunskaper och ngra vanliga hjlpkommandon r det ltt att bygga rrledningar som utfr komplexa saker. Kommandona agerar ofta lter i rrledningarna, och jobbar vanligtvis p en textrad i taget. Eftersom POSIX-systemen normalt hller sig till textler r detta naturligt. awk (vilket r namngivet efter ursprungsfrfattarnas initialer: Al Aho, Peter Weinberger och Brian Kernighan.) r egentligen ett helt eget litet programsprk. Hela program kan tas som inparameter i form av en l, men nr rr- och lterkonstruktioner grs med awk skickas sjlva programmet oftast med i sjlva kommandot: awk {print $2} < foo.txt kommer att skriva ut andra kolumnen p varje rad i len foo.txt frutsatt att kolumnerna r separerade med mellanslag eller tabbar. Ett annat stt att beskriva samma form av rrledning r naturligtvis cat foo.txt | awk {print $2}. Om len foo.txt exempelvis innehller:
Erik Stemme Gunnar Ehrling Viggo Wentzel

Kommer resultatet att bli en lista med efternamn. Ett lite mer komplicerat exempel:
awk BEGIN{FS=":"}{print $1} < /etc/passwd

Detta skriver ut namnen p alla anvndare i operativsystemet. Frst stts fltseparatorn till :, drefter skrivs frsta kolumnen 93

Kapitel 2 POSIX ut. Om du jmfr med passwd-lens utseende p sidan 48 inser du nog hur programmet fungerar. Detta program kan frenklas med vxeln -F eftersom det r vanligt att byta just fltseparatorer. awk -F: {print $1} < /etc/passwd gr samma sak. Alternativt kan du skriva programmet (BEGIN . . . ) i en helt egen l med namnet prog.awk och kra det med exempelvis cat /etc/passwd | awk -f prog.awk. Rr och lter kombinerat med olika kommandoparametrar ger en uppsj olika mjligheter att stadkomma samma resultat, vilket r ngot av tjusningen. Fr att fullstndigt lra sig sprket awk krvs en del, och du fr lsa manualsidan eller ngon speciell bok i mnet om du vill lra dig mer. cat har vi sttt p tidigare, men nu kan vi prova att anvnda kommandot till att verkligen konkatenera, d.v.s. sl samman ler. cat l1.txt l2.txt l3.txt > foo.txt lser problemet. Ett annat stt att gra samma sak borde vara att skriva cp l1.txt foo.txt; cat l2.txt >> foo.txt ; cat l3.txt >> foo.txt och det nns er tnkbara varianter. Ett viktigt anvndningsomrde fr cat r att kopiera innehllet i en l till stdout, s att resultatet sedan kan skickas vidare i en rrledning, exempelvis cat foo.txt | grep bar som kommer att skriva ut alla rader i len foo.txt som innehller ordet bar. echo har vi ocks sttt p tidigare. D njde vi oss med att konstatera att kommandot skickar ut parametern p terminalen. I sjlva verket skickar ett kommando som echo foo texten foo till stdout dr den tas emot av skalet, som sedan skickar den vidare till terminalen, /dev/tty. Det vanligast sttet att utnyttja echo r genom omdirigering med rr. echo foo > /dev/null kastar ut strngen i datarymden, och echo foo > /dev/tty skickar den till terminalen. echo foo > foo.txt sparar texten i en l. Ett annat vanligt anvndningsomrde r som vi visat att underska miljvariabler, som echo $TERM till exempel. Vi skall behandla miljvariabler i nsta avsnitt. grep och egrep r na p att plocka ut rader ur en l: exempelvis kan du rkna antalet rader i en l som innehller ordet bar med kommandot grep bar foo.txt | wc -l. (Se mer om wc nedan.) Namnet grep betyder global regular expression print.51 egrep r sam51 Ursprungligen frn kommandot till ed fr att exekvera ett reguljrt uttryck ver en textl: g/re/p

94

2.3 POSIX innehll ma kommando som grep med skillnaden att det kan hantera utkade (extended) reguljra uttryck. Kommandot grep anvnds s mycket att vana POSIX-anvndare snart sger att de greppar i ler efter det ena eller andra. Fr att exempelvis hitta alla ler i ett lsystem som innehller foo som en del av den fullstndiga skvgen, skriver du nd / | grep foo, men du kan naturligtvis lika grna leta i din egen hemkatalog med nd | grep foo, och otalet andra varianter. grep kan anvnda alla former av reguljra uttryck, och ofta ven den utkade varianten av reguljra uttryck: grep f[no][o][rd]* foo.txt kommer exempelvis att skriva ut alla rader som innehller ngot av orden foo eller fnord. (Se avsnitt 2.3.6 om reguljra uttryck och tabellen p sidan 77 fr mer om reguljra uttryck och utkade reguljra uttryck.) more r ett nurligt textformateringskommando, liksom GNU-varianten less. Vill du se en llista ver hela ditt lsystem en skrmsida i taget nns inget bttre kommando n nd / | more, och vill du lista lerna i din hemkatalog en sida i taget fungerar ls -la | more utmrkt. (Mellanslag fre och efter |-tecknet r egentligen inte alls ndvndigt.) sed vilket utlses stream editor r ett mycket bra och vanligt lterprogram som anvnds i mnga rrledningar. Det absolut vanligaste anvndningsomrdet fr sed r att utfra sk och erstt-operationer av typen byt A mot B, som i ordbehandlarens sk och erstt. Vad som sker r att sed byter sekvenser i en rad som dyker upp p stdin mot andra sekvenser p den rad som sedan matas ut p stdout. cat foo.txt | sed -e s/ab/cd/g kommer att byta alla frekomster av strngen ab mot cd i len foo.txt. Den sista bokstaven, g, betyder att du vill byta globalt vill du bara byta frsta frekomsten p varje rad kan du skriva s/ab/cd/1 istllet. P samma vis byter en tva i sista positionen den andra frekomsten (om den nns) o.s.v. Den strng vi valde att stta till ab r i sjlva verket ett grundlggande reguljrt uttryck. Exempelvis kommer sed -e s/foo*/bar/ g"< foo.txt att byta alla frekomster av fo, foo, fooo o.s.v. mot bar.52 sort sorterar innehllet i en l i bokstavsordning. Sorteringen sorterar frn vnster till hger p alla tecken. Exempel: anvndarlista sorterad i bokstavsordning: awk -F: {print $1} < /etc/passwd | sort
52 Detta r terigen ett bra tillflle att repetera uppbyggnaden av reguljra uttryck i 2.3.6.

95

Kapitel 2 POSIX Observera att < kan fllas in i rrledningen p detta eleganta vis utan problem. tr r mer eller mindre en specialvariant av sed: det byter ut enstaka tecken i en strm mot andra tecken. Detta utbyte sker positionsvis med parametrarna till kommandot, exempelvis byter cat foo.txt | tr ab cd ut alla frekomster av a mot c och alla b mot d. uniq plockar bort dublettrader som kommer efter varandra i en l. Om det str samma sak p tv rader efter varandra tas den andra frekomsten bort. Exempel: cat foo.txt | uniq. Problem uppstr dock om du vill ta bort alla dubletter oavsett om de str efter varandra! Detta lses lmpligen genom att frst ltrera strmmen genom sort med rrledningen cat foo.txt | sort | uniq. P s vis fr du i den resulterande len en sorterad, unik lista. wc utlses word count och anger antalet rader, ord och tecken som en l innehller, om t.ex. wc foo.txt ger resultatet 15 12 109 betyder detta att len foo.txt innehller 15 rader, 12 ord och totalt 109 bytes. ven om wc kan jobba direkt p en l r det lika lttanvnt i en rrledning: cat foo.txt | grep fnord | wc -w kommer exempelvis att skriva ut det sammanlagda antalet ord p de rader som innehller ordet fnord i len foo.txt. Mjliga vxlar r -w, rkna ord, -l rkna antal rader, -m rkna antal tecken53 och -c rkna bytes. Med arkitekturen fr rr och lter nrmar sig anvndandet av skalet ett verkligt programmeringssprk. Nr vi s lter ett antal kommandon samlade i en l p datorns disk kras och terupprepas vid behov, har vi tagit steget fullt ut till ett verkligt programsprk. Detta kallas ett skriptsprk, vilket r namnet fr sprk som innehller en rad kommandon till operativsystemet som i sin tur anvnder frdiga komponenter fr att utfra dessa kommandon. Frvisso r detta inget fulldigt utrustat programsprk som C, perl, python eller java, men det r tillrckligt fr att tcka en avancerad anvndares direkta behov. Uppstr ytterligare behov r det naturliga steget att brja anvnda ett riktigt programsprk fr att skriva egna datorprogram, och s lngt dristar vi oss inte i denna bok. Innan vi presenterar skript skall vi frst titta p miljvariabler, som utgr de variabler, i betydelsen etiketterade informationsbehllare som anvnds i det enkla programsprk som ett skript utgr. De har ocks stor betydelse fr skalets beteende.
53 Med tecken menas i detta fall allt som en dator uppfattar som tecken, ven radbrytningar. Det r allts inte samma sak som funktionen rkna tecken i en ordbehandlare.

96

2.3 POSIX innehll Miljvariabler I skal av alla slag nns alltid ett antal miljvariabler denierade, och du kan om s nskas deniera nya sjlv. Miljvariabler kan sgas vara temporra lagringsutrymmen fr sm textfragment som skalet behver fr sin funktion. Vi kan exempelvis skapa en miljvariabel med kommandot:
FOO=bar

Detta kommando kommer att tilldela miljvariabeln FOO vrdet bar. Vi kan titta p vr nya miljvariabel med kommandot echo $FOO. Detta kommer frhoppningsvis att skriva ut texten bar i skalet. Miljvariabler anvnds till era praktiska ting, och i synnerhet vissa enkla instllningar. Den mest grundlggande instllningen som lagras i en miljvariabel r skvgen till olika kommandon i operativsystemet, PATH. Denna kan underskas med kommandot echo $PATH. Som synes refereras alla miljvariabler med ett $-tecken. Du kan se alla denierade miljvariabler genom att skriva kommandot env direkt fljt av ENTER. Vissa miljvariabler r tillgngliga fr andra program (processer), som startas frn skalet, andra r det inte. De r vad som kallas globala respektive lokala miljvariabler. Om ett annat program som startas skall kunna lsa av en miljvariabel som du satt mste den vara global, vilket normalt stadkommes med kommandot export. Detta r ngot frvirrande och anledningen r att skalet ven kan fungera som ett programsprk, och om du kr era program skrivna i skalsprket, s.k. skript (se 2.3.9), s kommer dessa ganska snabbt att drnka hela miljn med stora mngder miljvariabler, om de inte kan hllas lokala. Drfr fordras att du anger med export att en viss variabel skall exporteras, d.v.s. gras global, genom t.ex.:
export FOO=bar

Det r ven mjligt att exportera en variabel efter att den denierats lokalt:
FOO=bar export FOO

En lista ver exporterade (globala) miljvariabler stadkoms genom att skriva export utan argument. Ibland kommer skalet d att demonstrera en del interna detaljer, ssom att globala miljvariabler denieras genom att internt kra kommandot declare -x FOO=bar. Detta r normalt inte av speciellt stort intresse. 97

Kapitel 2 POSIX Ur rent teknisk synpunkt r miljvariablerna en s.k. symboltabell: kort och gott en lagringsplats med en etikett, s att en viss textstrng54 kan associeras med en viss annan textstrng p ett unikt vis. Ngra vanliga frdenierade miljvariabler ternns i gur 2.23, sidan 99. Av speciellt intresse r t.ex. miljvariabeln $LANG, som anvnds fr att vlja sprk. Fr Sverige kan fljande vrden p den variablen vara speciellt intressanta: Vrde sv_SE sv_SE.UTF-8 se_SE.UTF-8 yi_SE.UTF-8 Sprk Svenska, i Sverige, enligt teckenkodning ISO 8859-1. Samma sak, men med Unicodeteckenkodning enligt UTF-8. Samiska i Sverige, med Unicode-std. Jiddisch i Sverige, med Unicode-std.

Notera att sprkkoden se anvnds fr samiska, medan den som landskod betecknar landet Sverige. Fr vra vriga ofciella sprk saknas i princip sprkstd under POSIX idag, men fr romani chib borde sprkkoden vara rom_SE,55 menkieli dremot har jag inte ens kunnat hitta en sprkkod.56 Du kan f en lista ver tillgngliga $LOCALE-vrden med kommandot locale -a. Det nns en hel rad instllningar fr lokalitet, vilka alla visas om du skriver locale (utan parameter). T.ex. kan du stlla in vilken typ av tidformat och papper (USA anvnder ej A4) som skall anvndas p detta vis. Du kan ndra bara en viss sdan $LC_FOO-variabel, men om du ndrar $LANG s ndrar du dock allihop p en gng. Vissa miljvariabler vill du kunna stlla in i ditt skal s att de alltid r satta p ett visst vis. Detta grs normalt i en speciell l som lses in av skalet varje gng du loggar in. Fr Bourne Again Shell r det exempelvis den dolda len /.bashrc. Fr att stlla in standardeditorn till EMACS, sprket till unicode-anpassad svenska i Sverige, och skriva ut ett glatt hlsningsmeddelande vid varje inloggning infrs fljande rader i .bashrc:
export EDITOR=emacs export LANG=sv_SE.UTF-8 echo "Hejsan!" strng denieras som en ordnad sekvens av tecken. p att sprkkoden i ISO 639-2 anvnds istllet fr ISO 639-1. 56 Se ven sidan 251 fr att se hur du vljer motsvarande tangentuppsttning i fnstersystemet X.
55 Baserat 54 En

98

2.3 POSIX innehll


Namn $$ Innehll Innehller aktuellt processnummer fr det skal eller skript dr variablen anvnds. Du kan p ett brutalt stt sl ihjl det skal dr du sjlv benner dig med kommandot kill -9 $$ (om du nu har ngot emot Ctrl+d. . . ) Anger antal kolumner i terminalfnsret. Anger vilken texteditor som skall anvndas om ngot program behver editera ler. Lmnas denna variabel blank antas automatiskt att texteditorn vi skall anvndas. Skvgen till anvndarens hemkatalog. Om du skriver cd utan ngon parameter, r det i denna katalog du hamnar. Vilket sprk, land (lokalitet) och teckenuppsttning som anvnds p den ort dr datorn benner sig. I Sverige skall denna normalt innehlla vrdet sv_SE eller sv_SE.UTF-8. Formatet anger frst lokalt sprk med tv gemener enligt standarden ISO 639-1 och landet med tv versaler enligt ISO 3166. (Den senare anvnds ven fr t.ex. toppdomner p Internet och framfr postnummer p vanliga brev.) Andra exempel: amerikansk engelska: en_US, egyptisk arabiska: ar_EG, etc. Anger antalet rader i terminalfnstret

$COLUMNS $EDITOR

$HOME $LANG

$LINES

$LD_LIBRARY_PATH Skvgen till dynamiska lnkbibliotek fr olika installerade program. Detaljerna runt detta varierar med operativsystem, se 5.4.5. $LOGNAME Anger anvndarnamnet fr den som just nu r aktiv i detta skal. I era skal r detta synonymt med miljvariabeln $USER. Ibland nns ocks ett verktyg som heter whoami som skall rapportera vad den fr tillfllet inloggade anvndaren heter. Nr du stter p en dator som ngon lmnat utan att logga ut ordentligt, kan du ta reda p vem denne var med hjlp av denna miljvariabel eller kommandot whoami. Skvgar till versttningstabeller fr texten som ingr i olika program. Anvnds fr att kommandon och liknande skall ge svenska meddelanden istllet fr engelska, till exempel. Skvgar till program som kan kras i skalet eller frn ett skript. Skvgarna r separerade med kolon. Om ett kommando inte kan hittas antingen i sjlva skalet eller i dessa skvgar, fr anvndaren antingen ett felmeddelande eller ett frslag p ett kommando med liknande namn. Innehller aktuell katalog, d.v.s. vart jag benner mig i lsystemshierarkin. Denna variabel avlses ofta med kommandot pwd som i princip bara skriver ut denna miljvariabel. Anger vilket skal som anvnds, i form av hela skvgen till skalprogrammet. Anger namnet p den terminal som anvnds. Om du arbetar i ett vanligt fnster p en grask desktop kommer detta normalt att vara ngot i stil med xterm. Vid textlge i Linux heter terminalen helt enkelt linux o.s.v. Se vidare avsnitt 2.3.11 om terminalinloggning.

$NLSPATH

$PATH

$PWD

$SHELL $TERM

Figur 2.23: Ngra vanliga miljvariabler. Som anvndare kan du se alla satta miljvariabler med kommandot env eller enstaka variabler med kommandot echo $VARIABEL. Sjlva $-tecknet r inte en del av variabeln, utan den syntax som anvnds fr att beropa den.

99

Kapitel 2 POSIX
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

#!/bin/sh if [ "$1" = "off" ]; then if [ "x$DISPLAY" == "x" ]; then echo -e "\33[11;0]" else xset b off fi echo "Beep turned off." fi if [ "$1" = "on" ]; then if [ "x$DISPLAY" == "x" ]; then echo -e "\33[10;750]\33[11;250]" else xset b on fi echo "Beep turned on." fi if [ "$1" = "" ]; then echo "Usage: $0 <on|off>" fi

Figur 2.24: Skript som slr av/p pipandet i terminaler p de esta system.

Skript Efter ett tag kommer du att upptcka att era av dina kommandosekvenser blir vardagsmat. Du skriver samma sak om och om igen, och det r vl inte s jobbigt att skriva ls -l | less, det r ganska ltt att komma ihg att om jag stter ihop list-kommandot med GNU less, fr jag innehllet i en katalog listat en skrmsida i taget. Men en jobbigare harang som till exempel sekvensen fr att stnga av det irriterande blippandet frn terminalen, kan se ut shr: echo -e \33[11;0].57 Detta r inte mycket lngre, men innehller en del magiska siffror som inte r s enkla att hlla i huvudet. Att sl p blippandet igen r minst lika komplicerat. Av den anledningen skriver du skriptet i gur 2.24. Skript r en form av datorprogram, och har du skrivit datorprogram frut s knner du nog snart igen dig. Kommandona i skriptet ser bekanta ut: dr nns echo och ngot annat som heter xset. Men en sak i snder. versta raden i ett skript: #!/bin/sh r inget annat n en fullstndig skvg i lsystemet till det skal som skriptet skall kras i. Nr skrip57 Den exakta innebrden av denna kommandosekvens lmnar vi t sidan, nj dig med att veta att den stnger av pipandet.

100

2.3 POSIX innehll tet startas kommer det nmligen att kras i ett helt eget skal, som en helt egen process. Du kan mycket vl anvnda ett annat sprk till dina skript: #!/bin/awk eller #!/bin/ash hade fungerat lika bra. Du kan lika grna hitta ett mer komplext sprk angivet p versta raden: #!/usr/bin/ perl eller #!/usr/bin/python r lika tnkbara alternativ. Resten av len kommer att tolkas som om den var skriven i det sprk som anges p den hr #!-raden. Sprket anges genom att peka ut dess programl, den l i vilken sprkets kommandotolk ligger lagrad. S i det allra enklaste fallet r det samma sak som standardskalet: /bin/sh r den plats dr standardskalet ligger i de esta POSIX-system. Resten av programmet bestr av villkorssatser: ett uttryck som str inom if [ a = b ]; then ... else ... r villkorat: om a r samma sak som b kommer det som str efter ordet then att utfras, i annat fall kommer det som str mellan orden else och att utfras. Miljvariabeln med namnet $1 r den parameter som givits till skriptet. Om jag exempelvis kallar min programl fr beep.sh s kan programmet startas med beep.sh on eller beep.sh off. Beroende p vilket som skrivits kommer olika delar av skriptet att utfras, och om ingen parameter angetts kommer skriptet att skriva ut en liten hjlptext som upplyser om hur det anvnds. $DISPLAY r en miljvariabel som r satt till ngot om programmet startats under fnstersystemet X: i det fallet r sttet att stnga av blippandet ett annat, d anvnds programet xset. De underliga siffersekvenserna i echo-satserna talar om fr en ngorlunda normal terminal att sluta respektive brja pipa. (Se ven stycket lite lngre fram om terminaler.) Skript skrivna i sh eller bash r ngot svrhanterliga. Skriptet mste exempelvis skrivas exakt som i guren: hakparenteserna efter ifsatserna r ljligt knsliga fr mellanslag, det r ndvndigt att smlla in ett extra x i satser som if [ x$DISPLAY == x ]; av den enkla anledningen att skalet inte klarar av att hantera det specialfall som uppstr d $DISPLAY r en tom strng, utan helt sonika kraschar. Det svraste fr en nybrjare p skript brukar dock vara att ver huvud taget komma igng. Det nns lite sm detaljer att tnka p, drfr fljer en punktlista. Frst vill du ha en plats att lgga dina na skript p. Skapa en katalog i din hemkatalog som heter bin fr att flja de inofciella lsystemskonventionerna: detta r det vanligaste stllet att ha dem p: mkdir bin. Sedan mste du se till att skalet kan hitta dina program fr att kra dem. Som nmndes i avsnittet om miljvariabler s anvnder 101

Kapitel 2 POSIX skalet miljvariabeln $PATH till detta. Ett bra stlle att lgga till detta r i din /.bashrc-l som krs varje gng du startar ditt skal. (Om du anvnder ngot annat skal heter len ngot annat, exempelvis .zshenv fr Z Shell.) ppna .bashrc med en texteditor och skriv till:
export PATH="$PATH:$HOME/bin"

Detta kommer att lgga till skvgen till din nya skriptkatalog i miljvariabeln $PATH varje gng du loggar in. Fr att ndringen ska ta r du tvungen att logga ut och sedan in igen. Gr det! Kolla att miljvariablen $PATH blev korrekt instlld med echo $PATH. Finns skvgen till din hemkatalog med i variabeln? Annars: frsk hitta felet. Om $HOME inte r satt kanske du mste anvnda fullstndig skvg till din hemkatalog. Nu kan systemet hitta dina skript. G in i skriptkatalogen med cd /bin och editera len foo.sh med en texteditor. Skriv till exempel in ngot i stil med nedanstende och avsluta texteditorn. Du kan ven prova det mer avancerade beep.sh-skriptet i gur 2.24, men det kan bli svrt att hitta felen i det om du inte skriver av det rtt!
#!/bin/sh echo "Foo!"

Ditt skript nns nu i skriptkatalogen, men det gr inte att kra det! Varfr? Naturligtvis r det lrttigheterna som spkar. Du har inte talat om fr lsystemet att du har rtt att kra den hr len som ett program! chmod +x foo.sh lser problemet. Prova direkt att kra ditt skript med ./foo.sh. Fungerar det? Denna egenhet med ./ fre programnamnet r en fullstndig skvg det krvs nmligen nr programmet inte ligger i ngon av de kataloger som nns angivna i $PATH. Nu kan du prova skriptet frn vilken plats som helst i ditt operativsystem. Skriv bara foo.sh! Skriptet lokaliseras via $PATH och krs sedan. Nu r det bara att brja fylla din bin-katalog med roliga skript. Filnamnsndelsen .sh som har anvnts p skripten hr r bara en frtydligande sak. Du kan kalla ler fr bara foo eller liknande: om du tittar p de ordinarie programler som normalt ligger i /bin s ser du att de inte har ngra lnamnsndelser. 102

2.3 POSIX innehll


1 2 3 4 5

#!/bin/sh for file in *.foo; do base=basename $f .foo mv $file $base.bar done

Figur 2.25: Skript som kopierar alla ler med lnamn som slutar p .foo till samma namn men med ndelsen .bar.

Samma regler gller fr skript: r det en krbar l s kan den kras, oavsett vad den heter. r det inte en binr programl, s kommer skalet att se om frsta raden innehller uppgift om ngon kommandotolk i stil med #!/bin/sh och sedan frska kra programmet i den tolken. Anvndare av andra operativsystem r kanske instllda p att krbara ler skall heta ngot i stil med foo.exe detta gller inte i POSIXfamiljen. Aprops anvndare av andra operativsystem: i CP/M och MS-DOS nns en funktion fr att kopiera alla ler som har en viss trebokstavs lndelse till en annan, med move *.foo *.bar. Detta fungerar inte i POSIX. Skriptet i gur 2.25 gr dock samma sak.

2.3.10

Ntverket

Ntverket r intimt frbundet med operativsystemen i POSIX-familjen. Detta beror p att nr Internet i form av ARPANET en gng byggdes upp anvndes det fr att f datorer som krde frmst VMS och UNIX att samarbeta med varandra, och sedan dess har ntverksfunktioner varit en naturlig del av operativsystemen i POSIX-familjen, lngt innan det kom till andra operativsystem. Flera POSIX-system kan inte ens fungera utan ntverk: ven om ett fysiskt ntverkskort saknas i datorn krvs att operativsystemet nd emulerar ett ntverk med en enda dator fr att det skall fungera ordentligt. Det r bland annat p grund av detta som alla datorer i POSIXfamiljen har ett namn som mste stllas in vid installation. Fr det mesta ger kommandot echo $HOSTNAME eller echo $HOST information om vad datorn heter p ntverket. Hur ntverket fungerar i praktiken och hur du stller in det varierar mellan olika operativsystem. Linux har en relativt vletablerad standard som kommer att avhandlas i avsnitt 9.3. 103

Kapitel 2 POSIX Klient och server Ett relativt vanligt begrepp i POSIX-vrlden r konceptet med klienter och servrar. (Ibland anvnds ordet vrddator istllet fr server, men detta sprkbruk har inte slagit igenom.) Detta frutstter i sin tur att datorn i frga har ngon form av ntverk installerat. Tanken r denna: svra, tunga och driftskra tjnster som alltid mste nnas tillgngliga skall sktas av servrar, vilket r datorer som r installerade, kongurerade och utplacerade i syfte att tillhandahlla denna tjnst. Med tjnst menas ngot som anvndare eller andra datorer har nytta av. World Wide Web-servrar, databaser av ena eller andra slaget, lservrar som tillhandahller hela lsystem, epost-servrar som lagrar och skickar elektronisk post vidare, servrar som skter telefonnt, elnt och koordination av SJs tgtrak, biljettbokningssystem fr biografer och resebyrer: alla r de tjnster. Gemensamt har de att vi blir arga nr de inte fungerar. Nr vi irriterar oss p att Dagens Nyheters hemsida eller Swebus Express resbokning inte fungerar r vi klienter. Vi r klienter som ansluter oss till servrar, ofta via webblsare. Att vara klient eller server r dock ocks en roll: den server som bokar vra biljetter kan i sin tur vara klient till en annan server som tillhandahller adressen hem till dig frn ett speciellt adressregister, s att biljetterna kan skickas till rtt stlle. De tjnster som tillhandahlls av en server kommer i praktiken oftast frn ett datorprogram, som kr i en process p servern. Processen r i normalfallet en demon. Demonen startar och stoppar andra hjlpprocesser, kommunicerar ver ntverket med andra servrar och levererar begrda tjnster till klienter. Tjnsterna levereras ofta i form av strmmar av text: ett populrt exempel i dessa dagar r s kallade webbtjnster: strmmar av text i standardformatet XML som bearbetas av en demon och skickas via port 80 p servern, ver protokollet HTTP.58 Men webbtjnster och annat som glimmar guld kan vi skjuta t sidan: den ldsta tjnsten p internet heter telnet. Denna kan startas med kommandot telnet foo.bar.com (frmodligen kommer namnet frn ngot i stil med: teletypewriter over network) och kommer d att frska ansluta ditt terminalfnster till datorn p Internet med namnet foo.bar.com. Emellertid r det sllan en s bra id att anvnda telnet i dessa dagar, de esta anser detta system vara oskert och fredrar att anvnda SSH som gr ungefr samma sak (ssh foo.bar.com), men med hgre skerhet, autentisering och kryptering.
58 Denna

namedropping r kanske lite stressande. Ta inte terminologin p fr stort all-

var.

104

2.3 POSIX innehll Detta skall vi dock stifta bekantskap med vad det lider.

2.3.11

Terminalinloggning

War is peace. Freedom is slavery. Ignorance is strength. Delete is backspace. Travesti p George Orwell I brjan av detta kapitel tittade vi p skal, och nmnde d att dessa var kopplade till en terminal. Vi har ocks ftt veta att denna terminal symboliseras av en blockenhetsl med namnet /dev/tty och att den i normalfallet tar emot den information som skalet vill ha frn stdin och skriver ut resultatet p stdout. Vi har nu ocks sett att POSIX-system r ttt integrerade med ntverk, och att ntverket gr det mjligt att logga in i en annan dator via ett fnster som vi kallar fr en terminal. Vi nmnde ocks att terminalerna var ppningar in i datorn, frr genom en sladd ansluten till en port p datorn, som sedan var kopplad till en skrm och ett tangentbord av enklaste typ. Dessa enkla terminaler kallas ibland TTY:er. Anledningen till att de heter s r att det r en frkortning av namnet Teletypewriter, detta var en s kallad terminalskrivmaskin59 som kunde mata in och ut text p ett vldigt simpelt stt. Ordet kom sedan att bli synonymt med terminal. Alla program som krs inne i skalet tar en strm frn stdin och producerar en strm p stdout. Skalet skickar sedan detta vidare till terminalen. Undersk grna hur /dev/tty fungerar: echo foo > /dev/tty gr att foo skrivs ut p din terminal, och fljande texteditor kan vara vrd att tillgripa nr inget annat fungerar: cat /dev/tty > foo.txt. Avsluta sedan editeringen med Ctrl+d (lslut). I vra dagar behver terminalen inte vara ngon speciell utrustning kopplad till datorn med en sladd. Den kan dock vara det, det r normalt inte s avancerat att ansluta en stenldersterminal till en vanlig PC:s RS232-kontakt och faktiskt lyckas med att anvnda den. Mestadels anvnder vi i dag dock virtuella terminaler, i form av fnster som ppnats p datorn.60 Virtuella terminaler kan ocks ppnas i en grask milj, som fnstersystemet X (som vi kommer att avhandla i ett eget kapitel). Alla POSIX-system kan p ett eller annat vis stadkomma en terminal, det gller bara att komma underfund med hur. I ett graskt system
vidare sidan 79 har exempelvis ofta era sdana virtuella terminaler ppna som kan lokaliseras med Ctrl+Alt+F1, t.o.m. F6.
60 Linux 59 Se

105

Kapitel 2 POSIX nns den oftast i ngon meny, ibland undangmd fr att inte i ondan presentera maskinens komplexitet fr anvndaren.61 Du knner igen terminalen p att den omedelbart startar ett skal fr att du skall kunna anvnda den till ngot, vilket kan se ut som i gur 2.3. Vi skall nu nmna ngot om hur terminalen samarbetar med operativsystemet. Eftersom en terminal ansluten med en sladd r en hrdvarusak som krnan tar hand om, dyker den som sagt upp i /dev/tty. Krnan vet hur den skall bete sig fr att rent elektriskt prata med terminalen. Om terminalen inte skulle vara ngot elektriskt, kommer den nd att hamna som en enhet i /dev/tty. Drutver stts miljvariablerna $TERM, $LINES och $COLUMNS. Dessa talar om fr skalet vilka tecken som kan sndas till terminalen, samt hur mnga rader och kolumner terminalen har. Du kan underska din egen terminal med med echo $TERM och motsvarande fr rader och kolumner. Ett vanligt Linuxsystem har exempelvis ofta en virtuell terminal med $TERM=xterm (i fnstersystemet X) eller $TERM=linux (konsollen). Kommando stdin/stdout Skal /dev/tty Krna Fysisk terminal Ett namn som xterm eller linux ger dock inte operativsystemet ngon information om hur dessa terminaler egentligen fungerar hur yttas exempelvis markren runt? Hur byter texten frg? Vilka frger nns, eller r terminalen svart/vit? Sdana saker mste registreras undan speciellt fr att skalet och andra program skall kunna komma t att skriva ut och lsa text frn terminalen. Hr skiljer sig olika operativsystem t, men de allra esta anvnder endera av tv databaser: terminfo och termcap. Dessa r p intet vis delar av POSIX-standarden. termcap r det gamla systemet fr att hlla reda p terminalernas egenskaper. I en l som p de esta system heter /etc/termcap lagras alla terminalers egenskaper. Denna levereras med operativsystemet, och enskilda anvndare kan lgga egna termcap-ler i sina
61 Till och med MacOS X, som tidigare vgrade inkludera alla form av kommandoradsverktyg, har numera en virtuell terminal.

106

2.3 POSIX innehll hemkataloger fr att lagra andra terminalers egenskaper. rootanvndaren fr editera /etc/termcap fr att lgga till nya terminaler. terminfo r ett nyare system fr att hlla reda p terminalernas egenskaper. I de system som anvnder terminfo lagras terminalernas egenskaper i katalogen /usr/share/terminfo och sedan genereras /etc/ termcap automatiskt utifrn dessa ler. Med hjlp av kommandot tic (terminfo compiler) kan nya terminaler lggas till i denna databas, eller i en lokal databas som r unik fr varje anvndare och utgr dennes egna terminalbeskrivningar. Om du har en felaktigt angiven terminaltyp eller en terminal som programmet du anvnder inte knner till kan konstigheter uppst. Exempelvis kan VI f fr sig att du har en terminalskrivmaskin62 (d.v.s. smsta tnkbara terminal) och sledes bara tillta dig att editera en rad i taget. Ett annat vanligt fel r att all text blir inverterad. Detta beror p att alla terminaler som kallar sig xterm inte har samma egenskaper: xterm fr Solaris r t.ex. helt monokrom, medan xterm i GNU/Linux kan hantera frg. Om du misstnker att din terminal r felinstlld r det en bra brjan att kolla om den r instlld ver huvud taget med echo $TERM. Om denna variabel r blank har du hittat felet. Prova d ngra vanliga terminaltyper, exempelvis med export TERM=vt100, en mycket vanlig terminal, som anvnds mycket fr telnet, SSH och liknande.63 I Linux r det oftast linux (fr textfnster i konsollge) eller xterm (i fnstersystemet X) som gller som terminaltyp.

2.3.12

At- batch- och cronjobb

P POSIX-system skall det standardmssigt nnas tv stycken demoner, atd och crond. Dessa anvnds fr att schemalgga kommandon fr enstaka eller regelbundna krningar. Dessa kallas jobb med hrledning frn att processer som kontrolleras av ett skal kallas fr jobb. Atjobb kallas jobb som utfrs av atd och r av typen utfr detta kommando, men inte nu utan vid tidpunkten t. Vid en vald tidpunkt kommer atd att starta ett skal och kra ett visst kommando. Cronjobb kallas jobb som utfrs av crond och r av typen utfr detta kommando regelbundet, exempelvis gr detta dagligen eller
62 Se 63 Fr

sid 79 mer information om telnet och SSH, se sidan 328.

107

Kapitel 2 POSIX gr detta en gng i mnaden. Flera POSIX-system anvnder sig sjlva av schemalagda cronjobb fr att skta visst systemunderhll. Kommandot at som nns i POSIX-standarden r egensinnigt implementerat p olika plattformar och fljer sllan standarden. P Linux nns en uppsttning kommandon: at fr att lgga till atjobb, atq fr att lista dem, atrm fr att ta bort dem. Ngot som dremot fljer standard r kommandot batch, som schemalgger ett kommando fr att utfras nu (eller typ nu), men i ett separat skal. Om du vill slippa trixa omkring med jobbkontroll och disown fr att slppa dina jobb p grnbete, r batch ett utmrkt kommando. Svl at som batch r interaktiva kommandon. De tar instruktioner direkt nr du startar dem. Shr kan en batch-session se ut:
# batch at> find / > batch.txt at> <EOT> job 9 at 2003-07-27 23:48

Fr att slippa ifrn at-prompten tryckte jag Ctrl+d vilket betyder lslut. Om jag ngrar mig kan jag i vanlig ordning trycka Ctrl+c innan jobbet startats. Skillnaden med at-kommandot r att du kan ange en tidsangivelse som parameter s att programmet startar vid ett senare tillflle. Du kan schemalgga jobb era r in i framtiden om s nskas. Cronjobb skiljer sig frn atjobb genom att de r periodiska. De upprepas med vissa intervall. Typiska cronjobb r rotering av loggar: systemet anvnder cronjobb fr att spara undan gamla loggler (noteringar av systemhndelser) med jmna mellanrum. Nr de legat och skrpat tillrckligt lnge slngs de. Du kan anvnda dessa funktioner till exempel fr att gra backupkopior av din hemkatalog med jmna mellanrum, eller diverse andra saker. Det typiska fr cronjobb r att de utfrs nr du inte r inloggad, s frvnta dig inga direkta meddelanden av vad som sker, den gamla hederliga stdout brukar i allmnhet skickas som ett brev till dig, men har du inte stllt in funktioner fr elektronisk post p din dator kommer det brevet aldrig fram. Istllet hamnar det i ngon buffert i /var/spool/mail/ root64 eller liknande, dr det stannar i tid och evighet. Cronjobb startas frn en s kallad crontabell. Denna innehller ett kommando per rad, och de sex frsta positionerna symboliserar tidpunkter d jobbet skall kras. Drefter fljer sjlva kommandot. Alla
64 Om du inte har fungerande epost p din dator nns det anledning att d och d titta om det ligger en stor l som heter root i katalogen /var/spool/mail. Dr hamnar ibland lite allt mjligt.

108

2.3 POSIX innehll Crontabellens format Minut Timma Dag Mnad Veckodag Kommando 0-59 0-23 1-31 1-12 0-7 ... Exempel 1: Kr en gng i mnaden vid midnatt 0 0 1 * * foo Exempel 2: Kr varje mndag klocka 8:00 0 8 * * 1 foo Exempel 3: Kr var 10:e minut, alltid */10 * * * * foo Exempel 4: Kr en gng i kvartalet, kl 15:00 0 15 1 1,4,7,10 * foo
Figur 2.26: Crontabellens flt. Intervall kan anges med komma fr att rkna upp era 1,2,3,. . . - (bindstreck) fr intervall, 1-5 eller * fr att beteckna alla. Efter en asterisk kan ven ett intervall anges som i */2 varannan.

cronjobb hanteras med kommandot crontab. Det enda crontab-kommandot egentligen gr r att editera en l som underhlls av operativsystemet, och dr det hller reda p de cronjobb som nns och nr de skall kras. crontab -l listar crontabell s du ser hur den ser ut just nu. Normalt r den naturligtvis tom, och det r inte mnga anvndare som anvnder cronjobb. crontab -r raderar crontabellen och ddar alla framtida cronjobb. crontab -e editerar crontabellen med den editor som du har stllt in i miljvariabeln $EDITOR. Har du inte ndrat denna r det VI du mter. Du kan normalt f full information om det format crontabellen anvnder med kommandot man 5 crontab, men utseendet kan vara ngot t det hr hllet:
0 23 * * * foo

Denna crontabell sger att kommandot foo skall kras klockan 23:00 varje dag. Flten r uppdelade s som framgr av gur 2.26. Du kan ha kommentarer i crontabellen genom att inleda raderna med #, och ange att ett speciell skal skall anvndas genom att p en 109

Kapitel 2 POSIX ensam rad skriva SHELL=/bin/ash till exempel. Standardskalet fr anvndaren kommer att anvndas av bde at- och cronjobben om inget annat anges.

110

K APITEL

De fria mjukvaruprojekten

What sphinx of cement and aluminum bashed open their skulls and ate up their brains and imagination? Moloch! Solitude! Filth! Ugliness! Ashcans and unobtainable dollars! Children screaming under the stairways! Boys sobbing in armies! Old men weeping in the parks! Allen Ginsberg De tv viktigaste mjukvaruprojekten i denna framstllning r GNU och Linux. Dessa kommer att behandlas utfrligt i kapitel 5. Frutom GNU och Linux hmtar ett GNU/Linux-system mnga av sina vitala komponenter frn era andra projekt. Detta kan som nmnts uppfattas frvirrande om du r van vid att ett operativsystem levereras frdigfrpackat i en kartong. Emellertid ger denna organisation av autonoma projekt en oerhrd potential till diversiering och pverkan utifrn. Detta kapitel avhandlar de fria projektens organisation och karakteristika jmfrt med den organisation som knnetecknar s.k. traditionella mjukvarufretag. Detta kapitel avser endast att ge en kort introduktion till de fria mjukvaruprojektens dynamik och motivationer. Detta r ett krt diskussionsmne som alltfr ofta diskuteras p en lg niv, men som fascinerar alla. Ingen vet egentligen varfr det tillverkas fria mjukvaror: ju mer du studerar de fria projekten i mikroskop och frsker frst dem, ju mer

Kapitel 3 De fria mjukvaruprojekten undyr de betraktarens blick. Alltfr mnga var alltfr tidiga att helt dma ut GNU/Linux som omjligt, hopplst o.s.v. under de tidiga dagarna. Men dessa mnniskor refererade hela tiden till omjligheten att leva p att utveckla system som detta, och refererade till det hopplst dumma i att stta sig mot marknadskrafternas dynamik. Detta ingick kort sagt inte i deras uppfattning om verklighetens beskaffenhet. Nu r det annorlunda. Alla vet att fria mjukvaror nns, blomstrar och fungerar, att de har haft stor ekonomisk betydelse. Kanske inte nnu p skrivbordet, men p miljontals andra stllen. GNU-projektet (se avsnitt 5.1) har denerat termen fri mjukvara som anvnds ganska mycket i den hr boken. Den engelska termen free software har dock vllat en hel del problem i vrlden. Oavsett vad Richard Stallman menade med detta begrepp i begynnelsen, s har Free Software Foundation gjort fullstndigt klart i sin dention av fri mjukvara hur detta skall tolkas[11]: Free software is a matter of liberty, not price. To understand the concept, you should think of free as in free speech, not as in free beer. Free Software Foundation har ven lagt sig till med devisen Free as in Freedom (plockad frn titeln p Richard Stallmans biogra[39]) fr att ytterligare understryka detta. Var vnlig och gr aldrig misstaget att tro att fri i detta sammanhang betyder gratis, antikapitalistisk, eller ngot annat dumt. Dentionen fortstter[11]: Fri programvara handlar om en anvndares frihet att kra, kopiera, distribuera, studera, ndra och frbttra programvaran. Mer precist s handlar det om fyra sorters frihet fr anvndaren av programvaran: Friheten att kra programmet, fr ett godtyckligt syfte (frihet 0).1 Friheten att studera hur programmet fungerar och att anpassa det fr sina behov (frihet 1). Tillgng till kllkoden r ett villkor fr detta.
1 Detta gller i allmnhet inte proprietra mjukvaror, som ofta tfljs av en s.k. EULA (End-User License Agreement) som verkligen begrnsar vad anvndaren fr gra med programmet, t.ex. frbjuds ofta anvndning av programmet i brottsliga syften, ssom att anvnda ett bildbehandlingsprogram fr att kopiera sedlar. ven om det kan argumenteras fr och emot sdana avtal, nns det inget i de fria mjukvarulicenserna som begrnsar anvndandet p detta vis, t.ex. mste inte en slutanvndare godknna GNU GPL, dremot ger GNU GPL slutanvndaren en rad rttigheter, vilket inte r samma sak.

112

3.1 Ekonomisk frklaring Friheten att vidaredistribuera kopior s att anvndaren kan hjlpa sin nsta (frihet 2). Friheten att frbttra programmet och att ge sina frbttringar till allmnheten s att hela samhllet drar nytta av dem (frihet 3). Tillgng till kllkoden r ett villkor fr detta. Nr vi talar om fri mjukvara, r det denna denition som gller. Liknande begrepp som inte skall frvxlas med detta r t.ex.: public domain-mjukvara inkluderar kategorin fri mjukvara, men behver inte betyda att mjukvaran r fri i ovanstende bemrkelse (t.ex. saknas ofta kllkoden). shareware-mjukvara r i allmnhet program som krver att du betalar ngot till frfattaren, fr att f fullstndig tillgng till ett helt fungerande program. Detta i sig r inte ofrenligt med att mjukvaran r fri: tillverkaren kan exempelvis ge dig gratis tillgng till ett kompilerat, krbart program med begrnsad funktionalitet, men dremot enbart tillhandahlla kllkoden till det fullstndiga, och fullt fungerande programmet. (Som d kan kpas frdigkompilerat.) Dock upptrder termen oftast i ett sammanhang dr de ovanstende friheterna inte r med, och scenariot r s vitt jag vet helt teoretiskt.

3.1

Ekonomisk frklaring

I en artikel med titeln There Is No Open Source Community2 har John Mark Walker p ett utmrkt stt summerat den ekonomiska infallsvinkeln p begreppet fri mjukvara och ppen kllkod. Den grundlggande tes han driver r frmodligen identiskt med mnga av de tankegngar som frekommer p fretag som engagerar sig i fri mjukvara. Som bekant r det, i varje fall i teorin, de ekonomiska argumenten fr och emot ett visst system som till sist och ytterst avgr om ett vinstdrivande fretag skall handla p det ena eller andra viset. Ett fretag kommer, med rtt information och rtt bedmning av kostnader, risker, fr- och nackdelar att anvnda fri mjukvara om detta p det hela bedms bli mer lnsamt n att g till de proprietra alternativen.
2 Se Walker[37], en uppfljande artikel frn ett s.k. demand-pull-perspektiv har nnu inte publicerats i skrivande stund. Titeln r ngot missvisande (och antagligen avsiktligt provocerande), den betyder just bara att det inte nns en rrelse fr ppen kllkod, men det kan mycket vl nnas mnga, sinsemellan olika.

113

Kapitel 3 De fria mjukvaruprojekten Walker menar att den nuvarande beskrivningen av fria mjukvaror och ppen kllkod felaktigt fokuserar p en individualistisk berttelse: det r berttelsen om personer som Richard Stallman och Linus Torvalds, och i frlngningen en berttelse om en social rrelse. Han hvdar ocks att det skulle vara frgan om en David-motGoliat berttelse3 om hur de sm grsrtterna och smfretagen bekmpar de ondskefulla mjukvarumonopolen. P det hela taget ogillar han detta berttande och menar att det r bttre att hnfra den fria mjukvarans framgngar p rent ekonomiska faktorer.4 Han presenterar drfr ett resonemang i helt annorlunda termer, som kan stllas upp i punktform: Fri mjukvara agerar p samma marknad som all annan mjukvara och drivs av tillgng och efterfrgan. Mjukvarumarknaden har gtt frn att vara smal och vertikal till att vara bred och horisontell. Internet har gjort det mjligt att producera, paketera och distribuera mjukvara till en oerhrt lg kostnad jmfrt med tidigare system: disketter, CD-skivor, kassettband etc som skickades med vanlig postgng. Fri mjukvara anvnder nstan uteslutande denna produktionsmilj och distributionskanal vilker drar ned produktionskostnaderna till ett minimum. Denna form av distribution till anvndarna r dessutom snabbare, vilket ger det nnu en frdel ver de proprietra mjukvarorna. Internet gav ven mjlighet till omdelbar och global koordination av utvecklarresurser, ngot som tidigare var svrt och extremt dyrbart.
3 Inom postmodern teoribildning talas ofta om stora narrativ, d.v.s. berttelser som r s arketypiska att de styr upp vrt tnkande till vissa bestmda, invanda mnster. David-mot-Goliat r onekligen ett sdant stort narrativ. 4 Ytterst r detta nog en klinch mellan materialistisk och idealistisk historieuppfattning: den frra menar (in absurdum draget) att tillgng och efterfrgan styr historiska skeenden s att du bakom varje skeende nner att det egentligen handlar om tillgng till vissa nyttigheter (Karl Marx r knd fr att tillhra denna skola), och den senare menar (in absurdum draget) att historien drivs fram av starka individers bedrifter, varfr det blir ett evigt beskrivande av stora mn. (Herman Lindquist kanske kan tnkas tillhra denna tradition, ven om han knappast skulle skriva under p det.) Historievetenskapen frsker i allmnhet att stadkomma en syntes av dessa tv synstt. Walker erknner sig mycket riktigt som motstndare till det materialistiska synsttet i en kommentar till artikeln: I view this in much the same way that I view neo-libertarians who have a love affair with the self-made man (or woman). Just as I dont believe in the self-made man, I also dont believe in the supremacy of the individual open source author.

114

3.1 Ekonomisk frklaring Mngden mnniskor som anvnder datorer har kat, och detta kar naturligtvis ven mngden anvndare av fri programvara och mngden potentiella utvecklare i fria mjukvaruprojekt. (ven detta r till stor del en effekt av Internet.) Eftersom mngden programmerare har kat, s har priset fr den tjnst programmerare tillhandahller, sjlva programmeringsarbetet, minskat till fljd av lagen om tillgng och efterfrgan. Internet ger en mngd kommunikationskanaler som gr det mjligt fr den som vill att snabbt lra sig programmering, vilket driver p denna utveckling. Den stora mngden programmerare kar innovationstakten och minskar mjukvaruprodukternas livscykel: dessa mste stndigt uppgraderas.5 Detta r gynnsamt fr fri mjukvara som kan modieras och distribueras mycket snabbt och till lg kostnad. Detta sammantaget har drivit kostnaden fr alla de mjukvaror som tidigare sldes som shareware o.s.v. till noll. Ingen frvntar sig lngre att kunna slja ett mindre datorprogram. Priset fr alla standardmjukvaror gr asymptotiskt mot noll. Den stora anvndarbasen och tillgngen till en sdan stor mngd utvecklare gr att det blir omjligt att tillhandahlla standardmjukvaror p ngot annat vis n via fri mjukvara, eftersom anvndarbasen r s stor att den uppnr egenmakt6 d.v.s. den behver inte lngre frlita sig p mjukvaruproducerande fretag eller individer. De enda utvgar en mjukvaruproducent nner r till sist tv: antingen att tillhandahlla funktionalitet som ingen annan producent (inlusive de fria mjukvarorna) kan tillhandahlla, eller att slppa kllkoden fri och bli ett fritt mjukvaruprojekt,7 ty det terstr inga andra vrdeskapande mekanismer. ven om en utvecklare eller ett fretag vljer att flja det frsta alternativet kommer de att frlora gentemot alternativ tv, eftersom
5 Detta har noterats inom diskursen fr det s.k. moderna projektet och brukar sammanfattas i ett citat frn Karl Marx dr han sammanfattar den moderna tiden med orden: allt fast fryktigas. 6 Det engelska ord som hr verstts med egenmakt r empowerment. Ordet egenmakt anvnd i Sverige till exempel i egenmaktsutredningen som handlar just om det som p engelska kallas empowerment. 7 Ngon skulle kanske anvnda uttrycket If you cant beat them, join them. Bob Gifford anmrker i en kommentar att det nns ett tredje alternativ: att utveckla helt nytnkande mjukvaruprodukter, jfr. t.ex. IP-telefoniprodukten Skype. Detta kan mjligen ses som en variant av det frsta alternativet.

115

Kapitel 3 De fria mjukvaruprojekten den stora mngden deltagande anvndare, och drmed utvecklare, gr att det fria mjukvaruprojektet kommer att utvecklas mera ver tid. Eftersom Internet stndigt expanderar (nnu terstr strre delen av jorden befolkning) kommer anvndarbasen, och drmed utvecklarbasen stndigt att ka. Detta leder i frlngningen till att den fria mjukvaran tar ver allt mer. Summa summarum var det av ekonomiska skl alldeles oundvikligt att en stor mngd fri mjukvara skulle uppst i denna tid. Walker, liksaom andra observatrer talar om att mjukvara kommodieras8 vilket innebr att det r en konsumentprodukt: alla behver det, alla anvnder det, alla kommer att skaffa sig det i den variant som har hgst prestanda till lgst pris. F eller inga personer behver ngot extra frn mjukvaran som inte redan nns i alla tillgngliga alternativa produkter. Eftersom fri mjukvara tenderar att ge hgst prestanda till ojmfrbart lgt pris kommer den alltid att vinna. Bland de fretag och enskilda personer som vljer att anvnda och bidraga till fri mjukvara handlar det denitivt ofta om ett rent ekonomiskt avvgande och ingen altruistisk handling: de fretag som sljer Linuxdistributioner sljer konsultation, lngsiktighet och drift av infrastruktur. Mnga sljer en utvecklingskedja eller plattform fr inbyggda system. Vissa fretag sker bara en kostnadseffektiv bas att kra sina proprietra stordriftssystem p, ssom t.ex. Oracle eller SAP/R3 eller de otaliga Apache-webbservrar, PHP-skripfarmer, MySQL-databaser och liknande som erbjuds via mindre Internettjnstefretag. De fretag som slutit upp omkring projektet Eclipse har ofta gjort det av det sklet att de inte har rd eller lust (att det avviker frn krnverksamheten) att utveckla ngot eget graskt utvecklargrnssnitt. De som kommer till Linux frn andra POSIX-varianter sker ofta ett enhetligt, modernt och ordentligt standardiserat system. Ytterligare en bidragande faktor kan vara sjlva datorns kommodiering: p den tiden en ny persondator kostade 50.000 kronor var kostnaden fr operativsystemet och tillmpningsprogrammen i princip liten. I dag utgr denna kostnad allt strre del av det totala inkpet nr du vill skaffa dig en ny dator. Bland annat Eric S. Raymond har spekulerat i att kostnaden fr operativsystemet kommer att n en magisk grns. Nr t.ex. operativsystemet kostar lika mycket eller mer n sjlva hrdvaran, datorn, kommer ngot drastiskt att ske: leverantrer av datorpaket kommer att vlja att frinstallera fria mjukvaror fr att f ned kostnaderna och hja marginalerna.
8 En

svengelsk term med ursprung i det engelska ordet commodication.

116

3.2 Antropologisk, sociologisk, eller psykologisk frklaring

3.2

Antropologisk, sociologisk, eller psykologisk frklaring

Den mest utbredda och lsta artikeln om den fria mjukvarans sociala mekanismer r utan tvekan Katedralen och basaren9 (se [25]) av Eric S. Raymond. Artikeln handlar mycket om varfr fri mjukvara r s pass bra: bland annat framhlls att kvalitn kommer sig av att mnga granskar kllkoden,10 och att alla som kan r vlkomna att deltaga. Men vi skall hr frska frklara de deltagandes motivationer. Eric Raymond kallar sjlv sin analys fr antropologi (lran om kulturer och samhllstyper) men r nog snarare sociologisk (lran om samhllet) eller rent av psykologisk (lran om hur och varfr mnniskor tnker och handlar p vissa stt). Raymond r ingen srskilt renommerad antropolog, men har andra sidan gjort omfattande deltagande studier som utvecklare i era fria programvaruprojekt.11 Hans huvudpunkter fr varfr mnniskor tillverkar fri mjukvara12 r dock: Att programmerarna lser problem som de sjlva upplever, och inte tvingas till att vnda sig till tredje part fr att f dem lsta. Att de upplever en stark belningsknsla i form av uppskattning frn andra programmerare och anvndare av programmen, och i form av att andra blir imponerade ver vad de stadkommit. En stark knsla av att programmet, trots att det r fritt, r programmerarens egendom. Den ursprungliga programmerarens hvdartt till programmet (i form av dennes rtt att koordinera utvecklingen) erknns s gott som alltid inom den fria programvarukulturen. Raymond r som s mnga andra ekonomisk reduktionist och stller upp alla sina resonemang som om de rrde nyttigheter. Han talar t.o.m. om en nyttighetsfunktion (engelska: utility function) som bestr av ovanstende punkter. Notera dock den tydliga glidningen i begreppet
dess uppfljare Boplar i Noosfren samt Den magiska kitteln. detta sammanhang myntar han det han kallar Linus lag: med tillrckligt mnga gon, blir alla buggar synliga. (Given enough eyeballs, all bugs are shallow.) 11 Nr den s ansedde sociologen Manuel Castells hromret lt publicera boken Internetgalaxen, som delvis handlar om fri programvara och dess historia, vntade jag mig en mer grundlig analys om bakomliggande motivationer bland deltagarna. Castells njde sig emellertid med att terge vad Raymond och andra redan sagt och kan inte psts ha tillfrt ngonting alls till diskussionen om fri programvara. 12 Eric S. Raymond anvnder inte begreppet fri programvara utan open source. Resonemanget r dock detsamma.
10 I 9 Och

117

Kapitel 3 De fria mjukvaruprojekten egendom: Raymond anvnder detta ord ven om saker som varken rr rtten till ekonomiskt utnyttjande eller andra juridiska rttigheter, utan p ett vis som enbart refererar till sociala beteendemnster. Man kan tycka att detta r ett lite smtt underligt synstt, i varje fall gr jag det: den del av programmerarnas belning som handlar om gensvar frn anvndare och erknsla bland andra utvecklare kan lika grna kallas social interaktionism och frklaras socialpsykologiskt. Johan Asplund menar t.ex. i sin bok Det sociala livets elementra former att vr drift att interagera socialt med andra mnniskor r en fullstndigt grundlggande och nst intill mekanisk reex. Linus Torvalds beskriver ngot mycket snarlikt i slutet av sin egen bok Just for Fun dr han avhandlar orsakerna till att han skrev Linux, han identierar tre mjliga motiverande faktorer:13 1. verlevnad (Torvalds understryker att det inte handlar om pengar utan mat p bordet) 2. Sociala relationer, frn person-till-person till hela samhllet. 3. Underhllning. Det r roligt. Detta r ocks anledningen till att boken heter Just for Fun. Det har sagts att GNU/Linux gr att det terigen blir roligt att anvnda datorer, och det gller bde utvecklare och anvndare. Uppstyrningen, det abstrakta kund-tnkandet och den skoningslsa produktieringen som knnetecknar proprietr programvara frekommer inte inom projekt fr fri mjukvara, annat n som interna begrepp hos de fretag som deltar i dessa projekt p sina egna villkor. Grunden ligger alltid i en msesidig omedelbarhet och direkthet. Vad menar en programmerare med att det mste vara roligt att anvnda en dator? Genom att iaktta ngra av den fria mjukvarans portalgurer kan vi se ett mnster: de har drivit oavlnade programmeringsprojekt p sin fritid, eftersom det r s roligt att programmera. Nr de kommit i kontakt med den industriella mjukvaruindustrin och dess villkor har de upptckt att denna har tagit bort era av de element som gjorde programmeringsarbetet roligt. Denna motivation r ytterligt stark: Richard Stallman representerar en ldre generation av sdana programmerare och har mnga gnger beskrivit varfr han inte anstllde sig sjlv fr att arbeta fr Free Software Foundation: jag visste att jag kunde f Richard Stallman att arbeta gratis r hans motivation.14
ternns p sidan 250-251 i pocketupplagan av Just for Fun[33]. under ett fredrag vid Lunds Tekniska Hgskola. Det gr dock ingen nd p Richard Stallman eftersom han senare tilldelats ett livstidsstipendium.
14 Sagt 13 Dessa

118

3.3 Att deltaga i fria mjukvaruprojekt

Figur 3.1: Felrapporteringssystemet Bugzilla r vlknt och ndvndigt fr alla som aktivt anvnder fri mjukvara.

Flera fretrdare fr fria mjukvaruprojekt br p liknande historier. Mnga av dem kunde ha arbetat med bttre ln och status, men hade de d haft lika roligt, och hade de varit lika kreativa som de r i sina fria mjukvaruprojekt? Antagligen inte. Det r sklart mjligt att uttrycka detta som att denna frihet r vrd si-och-s mycket pengar, men det missar helt pongen.

3.3

Att deltaga i fria mjukvaruprojekt

Att anvnda fri mjukvara r till viss del frbundet med att vara deltagare. Om ngon annan skter installation och underhll av ditt operativsystem, s r det lmpligt att du vnder dig till denna person fr hjlp, men r du sjlv inblandad p ngot vis, r det lmpligt att du p ngot plan betraktar dig som deltagare i de fria mjukvaruprojekten. Om du anvnder en distribution av GNU/Linux tar distributren ocks ett visst ansvar fr att rtta till problem och felaktigheter som uppstr i mjukvaran. Detta gller naturligtvis bara om du har kpt GNU/ Linux p t.ex. en CD-skiva i ett paket fr ngra hundra kronor. Detta r en del av det som du betalar fr. Om du har laddat ned din distribution eller installerat nya program som inte fljde med den, r det enda sttet att avhjlpa fel att rapportera dem direkt tillbaka till projektet. Detta kan ske p era stt: dels via epostlistor dr du kan komma i kontakt med utvecklare direkt. Dels har utvecklarna personliga epostadresser via vilka du kan kontakta dem direkt. 119

Kapitel 3 De fria mjukvaruprojekten Strre projekt har ofta ett felrapporteringssystem dr du kan rapportera in felen och se till att de delges rtt utvecklare. I gur 3.1 ser du Mozilla-projektets Bugzilla; ett avancerat och bra felrapporteringssystem.15 I detta kan du ocks flja upp hur dina fel behandlas av utvecklare lngs vgen, och vad de gr t saken, eller om de rent av inte gr ngot t saken och i s fall varfr. Somliga personer klagar ibland p att detta system r godtyckligt, och att det inte nns ngra garantier fr att ett anmlt fel faktiskt blir rttat. Detta r sant, men handen p hjrtat: hur mnga proprietra program har du anmlt fel p och ftt dem rttade? Har du kanske rent utav inte ens tnkt tanken att kontakta t.ex. Adobe och be dem lsa ett problem du har med ett program? Om du arbetar fr ett strre fretag som anvnder ett visst program, och behver f ett fel rttat snabbt, eller snabbt behver fr ngot tillgg utarbetat, r fri mjukvara bttre n proprietr: fr det frsta kan en distributr av fri programvara slja garanti fr fast kostnad eller p lpande rkning fr att rtta till fel som uppstr. Om distributren misslyckas att tgrda ett fel, kan du sjlv hyra in en programmerare, som tar kllkoden till programmet och lagar felet. Lagningen kan sedan kommuniceras tillbaka till projektet s att felet inte intrffar igen. Att proprietra mjukvaruleverantrer skulle gra motsvarande operation gratis r inte sant: i de fall jag frt diskussioner med stora leverantrer om sdana saker har det alltid landat p att de frvntat sig speciell betalning fr att tgrda sdana fel snabbt. Minns ocks noga att fri programvara inte betyder att allt r gratis. Somliga fria mjukvaruprojekt gr det mjligt att betala en av projektets topprogrammerare fr att snabbt lsa ett specikt problem fr en engngssumma, men denna freteelse r nnu inte srskilt vanlig.

3.4

Licenser
t var och en efter behov, av var och en efter frmga. Klart Linux r kommunism (...) Det nns ett namn fr kombinationen av kommunismens krav p lika ekonomiska frutsttningar och frihet fr individen. Anarkism! Linux r allts anarkism. (...) Linux r liberalism, fr det r vl nd det som frst och frmst frknippas med frihet. (...) Linux r konservatism, det bygger ju p lastgammal Unix. (...) Li-

15 I branschen kallas detta ibland fr Change Management Tool. Lt dig inte luras av sdana oskler. Frga dig istllet vad systemet faktiskt gr. Ett felrapporteringssystem r ett felrapporteringssystem r ett felrapporteringssystem.

120

3.4 Licenser nux r nazism: Lt [bara] den bsta kllkoden verleva och dominera vrlden! Olika kommentarer i bloggen Gnuheter p frgan r Linux kommunism? De fria mjukvaruprojekten anvnder olika licenser vilka i korthet kan sgas vara juridiska avtalsvillkor kopplade till programmerarens upphovsrtt (copyright). Fr att programmen skall f anvndas, distribueras, kopieras o.s.v. krvs att anvndaren fljer licensen. Dessa villkor upprttas av den som skriver ett datorprogram, och som drmed r dess upphovsman. Dessa villkor r i stort sett inte annorlunda frn de som omfattas av proprietra mjukvaror. Rttigheterna fr en upphovsman denieras i upphovsrttslagen, och mjligheten att utforma licenser denieras och begrnsas av avtalsrtten.16 En juridisk individ som exempelvis ett fretag kan inte vara upphovsman till ett datorprogram, men kan dremot vara rttighetsinnehavare och tillmpa en viss licens p sina program. De programmerare som arbetar p fretaget har d verltit sin upphovsrtt till fretaget i ngon form av kontrakt som undertecknades i samband med anstllning vid fretaget.17 Innan du anvnder en fri mjukvara br du ha ngon slags uppfattning om dess licens. Detta avsnitt r tnkt att presentera ngra sdana licenser. Du r som anvndare tvungen att flja dessa villkor, det gr inte att komma eftert och frska kompromissa bort villkoren i licensen. Om du exempelvis ogillar GNU GPL av ena eller andra sklet, br du ocks i rlighetens namn undvika att anvnda program som har denna licens. (Vilket i praktiken r alla GNU/Linux-distributioner som nns.) Vissa frgor har rests om huruvida dessa programlicenser r frenliga med svensk rtt. Den enda mer systematiska utredning som gjorts av den frgan r rapporten Upphovsrttsliga aspekter p licenser fr fri programvara och ppen kllkod[23] av Jessica Olofsson vid institutet fr rttsinformatik p Stockholms Universitet. Denna r ltt att lsa och obligatorisk lsning fr den som behver veta mer om licenser av denna typ. Hennes slutsats r: Nr det gller datorprogram inskrnks avtalsfriheten (...) av de tvingande reglerna om skerhetskopior, observationsrtt
16 Avtalsrttslagen heter Lagen om avtal och andra rttshandlingar p frmgenhetsrttens omrde. 17 Upphovsrtten fr program skapade av en anstlld programmerare p ett fretag vergr per automatik till arbetsgivaren (40 a URL) men nrstende rttigheter och t.ex. regler om sekretess avtalas separat.

121

Kapitel 3 De fria mjukvaruprojekten och rtt till dekompilering (...) Licenserna fr fri programvara och ppen kllkod torde inte medfra ngon konikt med dessa, d anvndarens frfogandertt istllet utkas p dessa omrden. (...) Det torde i och med detta inte nnas ngot principiellt hinder mot att tillmpa licenser fr fri programvara och ppen kllkod i svensk rtt. I det fljande kommer ngra av de vanligaste licenserna att presenteras p ett kortfattat lekmannamssigt vis.

3.4.1

GNU General Public License, GPL

GNU General Public License, mest knd som bara GPL r den vanligaste och mest anvnda licensen fr fri programvara. Den anvnds fr c:a 70% av alla fria programvaror. Mnga programmerare anvnder regelmssigt GPL, eftersom det r en vanlig och accepterad licens som visat sig fungera bra. GPL anvnds bland annat av alla program framstllda inom GNU-projektet och av sjlva Linuxkrnan. De svenska fretagen MySQL AB och Axis Communications har bda producerat stora mngder programvara under denna licens. GNU GPL anses ocks vara den rent juridiskt sett mest vlskrivna av licenserna fr fri programvara. Den har formulerats med hjlp av jurister och har dessutom reviderats en gng och r drfr mycket genomtnkt. Den huvudsakliga avsikten med GNU GPL r dels att uppfylla de fyra friheterna som rknades upp inledningsvis, dels att stlla ett ytterligare krav, nmligen att all programvara som framstlls genom att bearbeta ett program som tcks av GNU GPL ocks mste uppfylla GNU GPL. Det r frbjudet att ndra licensen fr programvaran eller modierade versioner av den, och om t.ex. patent eller domstolsutslag fastslr att mjukvaran inte kan distribueras under GNU GPL, mste distributionen upphra helt. GNU GPL tillter ocks en hel del saker, dels explicit och dels implicit. Det r tilltet att slja garanti fr programvaran d.v.s. utlova att den skall uppfylla vissa krav mot en avgift. Det r ocks tilltet att slja sjlva programvaran p t.ex. en CD-skiva. Det r allts inte frga om ngot frbud att bedriva kommersiell verksamhet med mjukvaran. Det r ocks tilltet att blanda GPL-program och icke-fria program p en CD-skiva eller liknande, dremot r det frbjudet att lta ett ickefritt program lnka till18 ett fritt program under GNU GPL.
18 Se avsnitt 5.4.5 p sidan 195 fr en nrmare frklaring om vad som menas med lnkning.

122

3.4 Licenser Det r dessutom tilltet att bearbeta och ndra ett program fr internt bruk, t.ex. p ett fretag, utan att distribuera ndringarna. S fort programmet avsiktligt sprids eller sljs till en allmnhet eller t.ex. ett annat fretag, kommer dock villkoren om tillgng till kllkod o.s.v. omedelbart att trda i kraft. GPL innehller ven ett slags giftpiller mot mjukvarupatent: om ett program under GPL anvnder ngon patenterad metod, och om denna metod r patenterad av upphovsmannen till programmet, kommer licensen att innebra att upphovsmannen ven licensierar detta patent fr anvndande i detta program samt ven att ge alla andra GPLskyddade program fri tillgng till detta patent. Fretag som inte slppt sina program under GPL r det dremot fritt fram att stmma. Bara den som erhllit programmet i ngon form kan stlla krav p tillgng till kllkoden. Detta innebr, att om du t.ex. kper en DVDspelare som innehller ngon form av fri programvara licensierad under GPL, s har du rtt att f tillgng till kllkoden. Dremot har du inte rtt att krva det om du inte ger en sdan DVD-spelare. Det nns inget krav p att kllkoden skall nnas p Internet, ven om den s gott som alltid gr det. Fretaget som gjort DVD-spelaren kan nja sig med att skicka kllkoden till dig p en CD-ROM-skiva, men kan samtidigt inte frbjuda dig att i andra ledet publicera kllkoden p Internet. GNU GPL frbjuder inte upphovsmannen att samtidigt tillhandahlla programvaran under en annan licens, s.k. dubbellicensiering. S lnge ingen utomstende varit inblandad i projektet, kan den som skrivit ett program vlja att slppa det som bde fri programvara under GPL och som proprietr programvara. Denna princip anvnds t.ex. itigt av svenska MySQL AB, som sljer sin databas MySQL under dels en klassisk, restriktiv licens fr de som behver bygga proprietra system baserade p MySQL, dels under GPL fr alla som kan tnka sig att uppfylla villkoren fr fri programvara. Denna kombination har visat sig mycket framgngsrik. GNU GPL brukar anvndas av programmerare som anser att det program de utvecklar mste och skall frbli fritt, och drfr inte tvekar fr att tvinga de som bryter mot licensen att uppfylla kraven. De som inte gr det riskerar att stmmas av upphovsmannen till programmet i en civilrttslig process. De som har en mera pacistisk instllning till denna eventuella konikt brukar fredra BSD- eller MIT-licenserna. (Se nedan.) ven om brott mot licensvillkoren bara kan bli freml fr en civilrttslig process saknas inte resurser fr de personer och fretag som anvnder GNU GPL. Ett uppmrksammat fall rrde svenska MySQL AB, 123

Kapitel 3 De fria mjukvaruprojekten som anklagade NuSphere19 fr brott mot GPL. Detta ledde till att experter frn Free Software Foundation inkallades, och tvisten avgjordes till MySQL:s frdel. Om fallet r principiellt intressant kan FSF komma att inkallas. Det r allts inte p minsta vis s att licensen inte skall tas p fullt allvar, ven om den kan upplevas som oortodox. GNU Lesser General Public License, LGPL GNU Lesser General Public License, allmnt kallad LGPL r en modierad version av GNU GPL som tar bort villkoret om att icke-GPL-program inte fr lnka GPL-program. Denna licens skapades fr att sprida anvndandet av programbibliotek som framstllts inom GNU-projektet, framfr allt GNU C Library20 som var avsett att anvndas tillsammans med GNU C Compiler, en kompilator fr programsprket C. Fr att uppmuntra anvndandet av kompilatorn fordrades att programmerare skulle kunna anvnda GNU C Library utan att behva slppa alla sina program under GPL. Drfr utarbetades LGPL som en kompromiss. Avsikten med LGPL r allts, att sjlva programbiblioteket mste nnas tillgngligt p samma villkor som gller fr GPL. Program som i sin tur anvnder detta programbibliotek behver inte flja GPL eller LGPL.

3.4.2

BSD-licensen

BSD-licensen r mest knd fr att den just anvnds av de olika BSDvarianterna. Denna licens r mycket tilltande, den tillter i princip allt: det enda som ingr r en friskrivningsklausul fr eventuella fel i programvaran. Koden frn ett program som licensierats under BSD-licensen kan anvndas i proprietra program. S har ocks skett i mycket stor utstrckning: Microsoft anvnde exempelvis BSD:s TCP/IP-stack21 i tidigare versioner av Windows, eftersom det innebar en genvg att snabbt tillfra systemet Internetfunktionalitet. Programmerarens huvudsakliga syfte med BSD-licensen brukar vara att teknologin och loson med programmet skall spridas, i svl proprietra som fria mjukvaror. (En annan vanlig anledning redogrs nedan under MIT-licensen.)
19 NuSphere 20 Se

gs i sin tur av Progress Software. avsnitt 5.1 p sidan 173. 21 Se vidare avsnitt 9.2 p sidan 300 om vad detta kan tnkas betyda.

124

3.4 Licenser BSD-licensen innehll tidigare ett krav om att den som skapat det ursprungliga programmet skulle f erknnande i programmets dokumentation, eller via t.ex. en about-ruta i ett graskt program som anvnde BSD-kod. Detta krav har numera upphvts vad betrffar sjlva BSD. Utver detta innehller den en rad friskrivningsklausuler frn fel p programvaran etc. BSD r, sedan kravet p att upphovsmannen skall nmnas i programmet borttagits, vad som brukar kallas kompatibel med GNU GPL. Det innebr, att en programvara som licensierats enligt BSD-licensen kan licensieras under BSD-licensen plus GNU GPL, s att de strnga villkoren frn GNU GPL lggs ovanp de ursprungliga kraven, utan att ngon motsgelse uppstr mellan de tv licenserna.

3.4.3

MIT-licensen
Jag anser att folk skall gra sina egna val. Jag anser att friheten ligger i friheten att gra vad du vill med det du producerar. (...) Det r trevligt nr de [som anvnder mjukvaran] delar med sig i sin tur, men jag krver inget sdant p frhand.22 David Dawes

MIT-licensen23 r unik p s vis att det r den mest liberala (om uttrycket tillts) av alla licenser fr fri mjukvara. En variant av denna licens anvnds av det mycket viktiga projektet XFree86. Mnga av de som anvnder MIT-licensen (och ven mnga som anvnder BSD-licensen) r till synes inspirerade av Ghandi: de vill inte ptvinga ngon ngra villkor alls rrande mjukvaran, inte att den skall vara fri, inte att deras namn skall nmnas, egentligen ingenting alls. De tycks sga: Hr r en vacker blomma, tag den om du vill, tacka mig fr den om du vill, frstr den eller dda den om du vill. Jag tvingar dig inte till ngot. Detta resonemang tilltalar mnga utvecklare av fri mjukvara som drfr valt just MIT-licensen. De som r anhngare av GNU GPL brukar mot detta hvda att det r naivt, och att ingen producent av proprietr mjukvara kommer att ndra sin instllning till hur mjukvara skall
versttning, klla se: [3]. kommer frn Massachusetts Institute of Technology (MIT) i Boston, dr licenser av detta slag anvndes i projekt som Athena och dess fnstersystem X i syfte att sprida iderna i nringslivet.
23 Namnet 22 Min

125

Kapitel 3 De fria mjukvaruprojekten framstllas genom att programmerare frivilligt ger dem frukten av sitt arbete utan att stlla motkrav. Det kan vara vrt att nmna att Microsoft uttalat sig mycket positivt om BSD- och MIT-liknande licenser, och mycket negativt om GNU GPL. Detta prglar ocks mycket av tnkandet inom den traditionella programvarubranschen: ge oss grna era mjukvaror, men inte p ngra villkor alls. De esta programmerare som anvnder MIT-liknande licenser har dock inte denna instllning, utan vill just bara vara kravlsa i strsta allmnhet, d de anser att en sdan instllning r bst fr mjukvaruvrlden, eller rent av vrlden i stort.24

3.5

Versionsnummer

De fria mjukvaruprojekten delar ett sreget versionsnumreringssystem inspirerat av den proprietra vrldens mjukvaror. Ett versionsnummer fr en fri mjukvara kan se ut shr: XFree86 4.3.1 D r det frsta namnet p mjukvaran, i detta fall den fria implementationen av X Window System (fnstersystemet X), strre version 4, mindre version 3, revision 1. Numreringen brjar oftast fre 1.0, exempelvis fanns Linux 0.12 tillgnglig vid ngot tillflle under tidigt 1990tal, och webblsaren Mozilla hade lnge versioner under 1.0. Den sista siffran, revisionssiffran, brukar uteslutas om den r 0 men kan ibland inkluderas i alla fall, som i XFree86 4.3.0. Nr du laddar ned en fri mjukvara fr att kompilera den sjlv (vilket inte rekommenderas fr en nybrjare) kommer den ofta i en komprimerad l med namn som XFree86-4.3.0.tar.gz eller linux-2.4.22.tar.bz2. I bda fallen rr det sig om larkiv gjorda med kommandot tar och sedan komprimerade med gzip respektive bzip2. Det r en bra vning att ngon gng ladda ned ett sdant arkiv bara fr att titta p det, och f grepp om hur kllkoden fr ett fritt mjukvaruprojekt egentligen ser ut. Utver detta kan paketeringar som grs av olika distributioner (vilka kommer att avhandlas senare) ha ytterligare ett revisionsnummer, som gller sjlva paketet. Dessa har d t.ex. formen XFree86-4.3.1-1.rpm eller xfree86-common_4.3.1-13_all.deb. Detta betyder att det r RPM-paket
24 Frn och med version 4.4.0 av XFree86 ndrades deras version av MIT-licensen till en GPL-inkompatibel version som liknade den gamla BSD-licensen: det blev ndvndigt att namnge upphovsmnnen till programmet. Det r en ganska vanlig sikt bland utvecklare av fri programvara att upphovsmannen skall anges, och s sker ocks oftast. En kontrovers uppstod d XFree86 ville gra detta villkor tvingande. Situationen r nnu inte lst.

126

3.5 Versionsnummer nummer 1, respektive DEB-paket nummer 13 av huvudkomponenten i XFree86 4.3.1. Nr det gller exempelvis Linuxkrnan och skrivbordsmiljn GNOME, har dessa mindre versionsnummer som skall tolkas som att: udda nummer representerar utvecklarversioner som inte r frdiga och inte skall anvndas av vanliga anvndare, medan jmna nummer r avsedda som skarpa versioner, som skall kunna anvndas generellt. Exempelvis r versionerna 2.0, 2.2, 2.4 och 2.6 skarpa versioner av Linuxkrnan, medan GNOME 2.5 r en ren utvecklarversion som inte kan garanteras fungera ver huvud taget. Utver detta kommer sedan revisionsnumren. Som om detta inte var nog kan vissa utvecklare tycka att de trestlliga numren trots allt inte r nog. D dyker det upp paket och larkiv med namn som linux 2.4.3-pre23. Alla dessa underliga namnkombinationer kan omjligen listas, men hr r ngra: rc release candidate, ska vi slppa version 4.3.1? Vi gr frst en kandidat, 4.3.1-rc1 och om den funkar slpper vi den som 4.3.1, annars gr vi vidare med 4.3.1-rc2 o.s.v. tills vi sent omsider kan slppa 4.3.1. pre prepatch, samma som ovan, men lite mindre skert om detta kommer att likna slutresultatet eller ej. Namnet kommer av att det fordras en hel del programlappar (av engelskans patch; jmfr att lappa ihop ett hl i ett par byxor) innan denna version kan slppas, och dessa versioner levereras oftast ocks bara som sdana patchar. test vi testar innan vi slpper. Linux 2.6.0-test3 r den tredje testomgngen fr version 2.6.0 av Linuxkrnan. Nr vi till slut knner att den r frdig fr den heta 2.6.0.

127

Kapitel 3 De fria mjukvaruprojekten

128

K APITEL

4 Distributionerna

Ordet distribution r kritiskt fr att frst GNU/Linux-vrlden. Det r sant att det nns ett projekt som heter GNU och det r sant att det nns en krna som heter Linux, ett fnstersystem som kallas X, och ett par olika desktop-system, men det anvndaren upplever r i slutnden nstan alltid en distribution. Med en distribution menas vanligen ett krbart system, d.v.s. en uppsttning program levererade p ngot digitalt medium, som nr de installeras p en dator formar ett fullstndigt fungerande operativsystem och inkluderar ett antal standardapplikationer som utfr sdant som en normal anvndare vill kunna gra. Om du fr frsta gngen skall installera GNU/Linux r det frga om att du mste vlja en distribution, i annat fall r det svrt eller omjligt att komma igng med operativsystemet. Frvxla inte distributionen med Linux (vilket enbart r krnan), lika lite som du frvxlar den med ngot annat. Distributionernas historia brjade i februari 1992 med MCC Interim Linux1 , och fljdes snart av bland annat TAMU Linux2 och Softlanding Linux Systems Linux, SLS Linux, som sattes samman av Peter MacDonald. Syftet med dessa frsta distributioner var klart och tydligt: de var avsedda fr mnniskor som inte ville bygga ihop sitt eget operativsystem frn grunden, utan helst ville installera det frdigbyggt, s som
1 MCC 2 TAMU

utlses Manchester Computing Centre, England efter Texas Agricultural and Mechanical University

Kapitel 4 Distributionerna era andra operativsystem installeras. Innan distributionerna dk upp fanns inga sdana mjligheter den som ville kra Linux ck bygga det sjlv men det r d vrt att betnka att Linux 0.12 (som var den version som anvndes i de frsta distributionerna) inte bestod av srskilt mnga delar. Den mngd program som fanns till denna version av Linux var inte heller srskilt stor. Att bygga ett helt operativsystem sjlv med Linux som bas var faktiskt inte srskilt svrt, och hjlp fanns att f. Den tidiga distributionen SLS Linux underhlls inte, och av den anledningen tog Patrick Volkerding SLS och skapade en egen variant som han drefter underhll. Denna slpptes den 17 juli 1993 och nns n idag under namnet Slackware Linux. Volkerding underhller fortfarande Slackware, numera i samarbete med andra entusiaster. En annan person som inte kunde st ut med SLS var Ian Murdock. Denne startade drfr ytterligare ett projekt baserat p SLS, som ck namnet Debian. Detta namn var en sammanslagning av hans frus namn Debra, och hans eget, Ian. Detta r den nst ldsta distributionen, och brjade utarbetas den 16 augusti 1993. Drefter brjade allt er distributioner introduceras i en strid strm. I detta kapitel kommer ngra vanliga distributioner och deras respektive meriter att presenteras. Detta brukar vara en het potatis, och i princip skulle det kunna nnas lika mnga olika distributioner som det nns tekniskt kunniga GNU/Linux-anvndare, men majoriteten har nd valt ngon av de som presenteras hr. Det vore ortt att tala om dessa distributioners fr- och nackdelar, eftersom alla distributioner har en egen grundtanke och r i princip perfekta fr det som de r avsedda fr. Flera datortidningar gr ofta stort nummer av att lista hundratals olika underliga linuxdistributioner och deras respektive karakteristika, men sdana sammanstllningar ger sllan ngon vettig information. Det r bttre att g djupt in p ngra vanliga distributioner och de principer de bygger p, s att du frstr ngra vergripande huvudider bakom dem alla. Fr en fullstndig listning av alla existerande distributioner hnvisas till webbsidan Distrowatch.3 Du br ha en ganska klar uppfattning om vad du vill att din distribution skall kunna och vilka principer den skall bygga p innan du skaffar dig ett installationsmedia; ls drfr grna igenom de avsnitt som behandlar respektive distribution tminstone versiktligt.
3 Se:

http://www.distrowatch.com/

130

4.1 Hur distributionerna fungerar

4.1

Hur distributionerna fungerar

Fljande karakteriserar en GNU/Linux-distribution: Distributionen r inriktad p slutanvndare som inte vill bygga sitt eget operativsystem frn grunden. De kan vara prolerade mot olika anvndare med olika grad av tekniskt kunnande, men r alltid inriktad p att gra det enkelt att komma igng. (Undantag: Linux From Scratch, se detta avsnitt.) Distributionen har ett installationsprogram som kan startas frn installationsmediet. Med jmna mellanrum kommer det nya versioner av distributionen. Detta innebr att distributionerna frsker flja de fria mjukvaruprojekten och fra samman dem p ett stt som gr att de kan anvndas tillsammans utan problem. Distributionen bestr av ett stort antal olika mjukvaror, som frhoppningsvis fungerar tillsammans. Mjukvarorna kommer mestadels frn era olika fria mjukvaruprojekt, varav sjlva krnan Linux bara r ett. GNU-projektets mjukvaror r minst lika viktiga fr att en distribution skall fungera verhuvudtaget. De olika mjukvarorna ligger oftast inkapslade i andra, mindre programpaket. Dessa paket kan vara enkla tar-ler, eller komplexare paketstrukturer som RPM eller DEB. Paketen innehller ett antal ler och deras positioner i lystemet, kataloger som mste skapas, skrip som skall kras i samband med installation och/eller avinstallation samt information om vilka paket ett visst paket i sin tur r beroende av. Lngst ner i beroendekedjan brukar i allmnhet nnas ett paket som denierar rotlsystemet och dess kataloger. Programpaketen bygger upp det totala operativsystemet p samma vis som tegelstenar bygger upp ett hus: du kan vlja vilka delar du vill ha med i ditt bygge, men alla operativsystem mste ha tminstone vissa obligatoriska paket, som till exempel krnan och skalet installerade. Paketen kan normalt ocks uppgraderas individuellt. Detta faktum ger ocks anvndaren en mjlighet att plocka isr operativsystemet, lra sig en del om dess komponenter som vad de gr, ifall det r lmpligt att uppgradera dem o.s.v. Detta skiljer klart ut GNU/Linux-distributioner frn den solida kartong och 131

Kapitel 4 Distributionerna
Linux kernel X Window System GNU glibc GNU Compiler Collection tid Debian 2.0 Red Hat 8.0 1.3 2.95 2.0 2.2 4.0 2.1.3 3.0 4.1.0 2.2 2.4 4.2.0 2.3 3.2 4.3.0 2.3.2 3..3 2.6 4.3.1

Figur 4.1: Illustration som visar hur distributioner stts ihop som snitt av versioner av de olika fria mjukvaruprojekten. De projekt som ingr i en distribution r i sjlva verket betydligt er. Hr visas ngra mycket viktiga projekt jmte distributionerna Debian 2.0 (ven kallad Potato) samt Red Hat 8.0. Varje projekt resulterar i ett eller era paket med mjukvarukomponenter. Bilden gr inga ansprk p exakt historicitet, utan r menad som en illustration av ett mjligt frhllande mellan projekten i det gonblick en distribution slpps. Betrffande versionsnummer, se sidan 126.

monolitiska karaktr4 som utmrker andra operativsystem. Komponenttnkandet frn POSIX-vrlden syns hr mycket tydligt. Fr att hjlpa till med underhllet av systemet ingr det ofta en del sm smarta hjlpprogram fr att administrera systemet. Dessa r d ofta utvecklade av distributren, d.v.s. den organisation som ligger bakom distributionen. Med tiden har dock en strre del sdana smarta hjlpprogram tenderat att bli generella program fr allt er distributioner och drmed program i sin egen rtt, eller vergtt till att bli en del av skrivbordshanterare som GNOME och KDE. Distributionen har fr det mesta en funktion fr att uppgradera till en nyare version nr en sdan kommer. Det r ocks fr det mesta mjligt att lpande uppgradera de mindre paketen, exempelvis fr att tgrda programlss (buggar), och tppa igen skerhetshl i den distribution som anvnds. Distributionerna utgr ocks en naturlig del av den fria mjukvarans ekosystem, om uttrycket tillts: de personer som sammanstller distributionerna deltar ofta aktivt i de olika mjukvaruprojekten. I synnerhet
4 Med monolitisk karaktr menas hr att operativsystemet upplevs som gjutet i ett enda stycke.

132

4.1 Hur distributionerna fungerar testar de hur bra programmen fungerar tillsammans med andra program, och de lmnar oftast bde rttningar och utfrliga felrapporter till projektens utvecklare. Om det inte gr att f ett program att fungera i distributionen s kommer distributren att underhlla en uppsttning ndringar vid sidan av projektet om s krvs, men oftast r projektet villigt att integrera dessa ndringar. Distibutioner har olika fokus. En mjlig indelning r: Fokus p enkelhet distributionens ml r att den skall vara enkel att installera, och enkel att anvnda. Typiska exempel: Red Hat/ Fedora Core Linux, Mandrake Linux, Lindows, SuSE Linux. Fokus p skerhet och stabilitet distributionens ml r att den skall vara sker och stabil. Debian GNU/Linux r speciellt fokuserad p stabilitet. I begreppet stabilitet ingr ocks stordrift p stora fretag: hr har svl Red Hat som SuSE speciella produkter bara avsedda fr att anvndas i stor, stabil skala. Fokus p kongurerbarhet kongurerbarhet eller styrbarhet innebr att varje detalj i operativsystemet kan detaljstyras, vljas och ntrimmas fr hand. Slackware, Linux From Scratch och Gentoo r distributioner som kan sgas ha detta fokus. Dessa distributioner ligger i ngon mn nrmare projekten, de krver ocks ett ganska djupt tekniskt kunnande. Fokus p en uppgift distributionen r inte utformat fr att vara generell utan skall i princip bara gra en enda sak. Hit hr t.ex. NASLite5 som r avsedd att endast fungera som en lserver, oppyfw fr datorer som bara skall anvndas som brandvgg (se vidare sidan 366) eller FREESCO6 som endast r avsedd att fungera som en paketrouter. Dessa r ofta s sm att de kan starta frn en oppyskiva eller ett USB-minne. Man kan sga att en sdan distribution gr om en vanlig dator till ett inbyggt system. Vi ser detta vergripande mnster till viss del g igen i BSD-vrlden, dr OpenBSD r fokuserad p skerhet, NetBSD p stabilitet o.s.v. Det nns andra nischade GNU/Linux-varianter: DeMuDi, Debian Multimedia Distribution r en version av Debian GNU/Linux speciellt inriktad mot multimedia, FREESCO r utformad fr att efterlikna routrar frn Cisco, m..
5 Se: 6 Se:

http://naslite.sourceforge.net/ http://freesco.sourceforge.net/

133

Kapitel 4 Distributionerna

4.1.1

Installationsmedia

Fr att installera en distribution krvs ngon form av installationsmedia som innehller hela eller delar av den distribution du tnkt dig. Detta r de vanligaste stten att f tag i ett installationsmedia: Kp skivor det enklaste och mest intuitiva viset att ordna detta r naturligtvis att kpa eller lna en DVD- eller CD-skiva med den distribution du vill ha. Ofta kan sdana skivor medflja p omslag till datortidningar: de amerikanska Linuxmagasinen brukar ibland till och med ha tv. Att kpa en kartong med manual och DVD-skiva kan kosta cirka 500 kronor, och fr vissa distributioner r detta ibland enda sttet att f tag p en installationsskiva. I detta pris brukar d ing en viss support: ett telefonnummer dit du kan ringa och f rd och hjlp under installation och driftsttning. Om du bara kopierar skivan, fr den gratis med en tidning eller laddar ned den frn internet fr du ingen hjlp alls, du fr hjlpa dig sjlv, lsa dig till det du behver veta eller frga andra i samma situation. Tillggas skall vl att f eller inga distributioner kan erbjuda ngon support p svenska. Ladda ner skivor det nst vanligaste viset r att ladda ner en distribution frn Internet. Hr fr du dock se upp lite grand: en distribution r stor och om du inte har en mycket hgkapacitiv ntfrbindelse med god tillgng till omvrlden och utan problem kan ladda ner cirka 2 Gigabyte, br du inte ge dig p detta. Distributionerna brukar ha information p sina hemsidor om vart de kan laddas ned (om det r mjligt). Ett populrt stlle bland svenska anvndare r de olika nordiska universitetens FTP-arkiv. Fljande adresser brukar vara ngotsnr tillfrlitliga och snabba frn det svenska fastlandet: ftp://ftp.sunet.se/pub/Linux/distributions/ ftp://ftp.funet.fi/pub/Linux/mirrors/ ftp://ftp.ntnu.no/pub/linux/ I katalogerna hr nner du ett antal olika distributioner i form av s.k. ISO-ler, vilket r avbilder av hela CD- eller DVD-skivor som kan laddas ner och brnnas p svl GNU/Linux-, Macintoshoch Windowsdatorer. (Se avsnitt 7.4 p sidan 274 fr information om hur det gr till i Linux.) De esta CD-brnnarprogram till de esta operativsystem kan hantera sdana ler. 134

4.1 Hur distributionerna fungerar En distribution kan best av era iso-ler. I allmnhet behver du ladda ner och brnna alla fr att kunna installera distributionen, men Debian r ett viktigt undantag: den bestr i dagslget av inte mindre n nio skivor, men innehllet p dessa r rankat efter popularitet, och drfr behver du sllan mer n de tv frsta. DVD-skivor med distributioner har ocks brjat dyka upp, liksom DVD-avbildsler, som ocks r ISO-ler, fast strre. Att ladda ner en hel DVD-avbild frn Internet tar nnu lngre tid n att ladda ner en CD-ISO-l. Stora iso-ler r svra att ladda ner frn Internet p grund av att anslutningen ofta bryts och FTP-servrarna ltt blir verbelastade, i synnerhet i samband med att en ny version av ngon distribution kommer ut. Detta har lett till vissa fantasifulla lsningar, Debian anvnder t.ex. Jigdo,7 ett program som laddar delar av lerna frn olika stllen, och som fortstter dr det slutade om anslutningen bryts. Andra har anvnt BitTorrent (ett slags peer-to-peerprogram) fr att distribuera lerna. Stten r mnga. Disketter de esta distributioner kan i vrsta fall installeras frn disketter. Fr gamla datorer r detta ibland ndvndigt. Det nns ofta en speciell katalog med diskettavbilder, s.k. .img-ler,8 som kan sparas ned och verfras till disketter med hjlp av program som t.ex. rawrite som anvnds under Microsoft Windows. Om du redan har ett GNU/Linux-system kan du snabbt kopiera en imgl till en diskett med kommandot dd if=foo.img of=/dev/fd0 eller med nyare GNU/Linux-system kort och gott cp foo.img /dev/ fd0. (OBS! Skriv inget innovativt efter of=..., om du t.ex. skriver /dev/hda kommer du naturligtvis att frstra din hrddisk...) Ofta nns en hjlpl som beskriver hur detta gr till, samt en kopia av programmet rawrite tillsammans med diskettavbilderna. ven om det inte r ndvndigt att installera hela systemet frn disketter (vilket kan bli ganska mnga) kan det ibland vara ndvndigt att starta frn en diskett fr att f igng installationen frn ett annat media. I dessa fall krvs oftast bara 1-2 disketter. Ntverk mnga distributioner stdjer ven installation ver ntverk, p s vis att du startar frn en minimal uppsttning disketter eller en vldigt sparsam CD-skiva, och sedan laddar ned paketen efter hand som de behvs. Detta r frmst avsett fr de som har ett
7 Se: 8 Av

http://home.in.tum.de/~atterer/jigdo/ engelskans image, avbild.

135

Kapitel 4 Distributionerna eget internt ntverk med en kopia av operativsystemet tillgngligt via FTP, men den som inte r orolig fr att pltsligt frlora ntverksfrbindelsen eller nekas tilltrde till FTP:n kan ju grna prova detta.

4.1.2

Inventera din hrdvara

Innan du brjar installera en distribution p din dator br du ha ngon slags uppfattning om vilken hrdvara du har i datorn. Moderna PCdatorer r ofta ett hopplock av delar frn diverse leverantrer och det nns inte en chans att rkna upp dem alla hr. Distributionerna vi kommer att berra r till fr PC: om du har en Macintosh, Sun SPARC eller liknande s fordras specialkunskap utver vad som avhandlas hr. Tnker du installera GNU/Linux p ett inbyggt system r detta betydligt krngligare, men d r du sannolikt ocks en betydligt mer kvalicerad anvndare. Dessa system byggs ofta runt ett s.k. labbkort frn ngon processor- eller systemtillverkare, och d nns det fr det mesta ocks en minimal distribution som tillverkats av den leverantr som gjort kortet. (I annat fall r du i den roliga situationen att du fr vara frst med ngot, vilket inte r ltt.) Ngra bra stt att inventera hrdvara: Sm broschyrer, disketter, CD-ROM-skivor och liknande som fljde med datorn beskriver ofta den ingende hrdvaran i detalj. Du vill ha s mycket teknisk information som mjligt. Tillverkarnas webbsidor brukar ocks kunna innehlla servicemanualer och liknande tekniska dokument som kan innehlla ytterligare information. BIOS-menyn i din dator inehller ofta mycket information om hrdvaran, samt mjlighet att sl p och av den. BIOS-menyn aktiveras ofta genom ngon knapptryckning vid uppstart, t.ex. funktionstangent F1, F2, F10 eller Esc. Det r inte alltid denna tangentkombination r uppenbar, vilket i sin tur kan leda till en del experimenterande och informationsskande. Du kan starta ett minimalt GNU/Linux-system frn diskett eller CD-ROM och kra kommandot lspci. Detta kommando listar alla enheter som kan hittas av krnan p PCI-bussen, vilket r den mest anvnda bussen i dagens datorer.9 ven kommandot lsusb
9 Informationen om vilka kort som innehller vilka chipsets kommer frn en databas som hr ihop med programmet, och om ngon data i denna r felaktig eller saknas kan du faktiskt lgga till det sjlv (om du lyckas ta reda p det p annat vis). Varje enhet p

136

4.1 Hur distributionerna fungerar kan vara anvndbart, eftersom det frekommer USB-enheter som byggs in i datorer och inte sitter i de externa portarna. (Se vidare sidan 166 om Knoppix/Gnoppix.) Om du tidigare haft ett annat operativsystem p din dator kan detta ge lite information om vad som nns i datorn. I Microsoft Windows nns i kontrollpanelen ofta en ikon fr ngot som kallas system. Ls igenom och anteckna saker som str dr.10 Du kan titta p den fysiska utrustningen genom att ta loss korten ur datorn och underska dem, titta p baksidan av bildskrmar o.s.v. Med utgngspunkt frn detta kan du ofta ska efter mer information om hur du kr GNU/Linux p din hrdvara p Internet. Har du en specik hrdvara som exempelvis en viss Compaq-modell, r sannolikheten stor att andra har installerat GNU/Linux p den fre dig och har mnga bra tips.11 Om du lyckats installera ett system men har svrt att f vissa delar att fungera nns andra trick som blir mjliga tack vare medfljande program: XFree86 -congure som beskrivs p sidan 229 och vidare p sidan 243 kan anvndas fr att detektera svl grakkort som bildskrmstyp. ven om detta inte r en hrdvarubok kan det vara p sin plats att nmna ngra saker som du br ta reda p innan du installerar din distribution: Om ditt moderkort har speciella funktioner och vilka dessa d r. Sdana funktioner kan vara: speciella energisparfunktioner ssom ACPI,12 inbyggda modem, ntverks-, radiolan-, bluetooth- och ljudkort (speciellt i brbara datorer) samt temperatursensorer. Vilket grakkort som sitter i datorn, samt eventuellt hur mycket minne som sitter internt p detta kort, och vilka upplsningar och frglgen det kan leverara.
PCI-bussen har ett unik ID-nummer (tv sextonbitarstal, ett som identierar tillverkare och ett som identierar produktnummer) och ett unikt subsystem-nummer (tv andra sextonbitarstal som anvnds d en viss hrdvara byggs in i en annan hrdvara, t.ex. i en laptop). Om du hittar en ny hrdvara kan du registrera den p webbsidan http: //pciids.sourceforge.net/. 10 Om ngra speciella ntverksinstllningar krvs fr att ansluta din dator till ett lokalt ntverk eller en uppringd frbindelse, r det frvisso en bra id att stjla ven dessa frn ett annat operativsystem, ifall du inte har tillgng till den informationen p annat vis. 11 Om du installerar en brbar dator r det alltid bra att ska hjlp p http://www. linux-laptop.net/. 12 ACPI, Advanced Conguration and Power Interface anvnds speciellt i vissa brbara datorer, men ven allt mer i stationra skrivbordsdatorer.

137

Kapitel 4 Distributionerna Vilken bildskrm du har ansluten till datorns grakkort, mer specikt vilka uppdateringsfrekvenser den klarar av och vilken rekommenderad upplsning den r tillverkad fr. Vilket ntverkskort som sitter i datorn, i form av tillverkare och modell. Vilket ljudkort som sitter i datorn, i form av tillverkare och modell. Om du har styrkort fr SCSI13 -enheter i datorn. Vilken typ av tangentbord du har anslutet till datorn. (I allmnhet r detta p vra breddgrader ett 101- eller 102-tangenters svenskt tangentbord.) Saker som du dremot inte behver veta, r vilken processor som sitter i datorn, vilka portar som nns direkt p moderkortet, huruvida det nns IDE14 -kontakter p moderkortet och vilka hrddiskar och/ eller CD-ROM eller DVD-enheter som sitter anslutna p dessa IDEkontakter, om det sitter en diskettstation ansluten till moderkortet och andra saker kopplade till moderkortet. Dessa saker r s basala att Linuxkrnan i 99 fall av 100 kan hantera dem standardmssigt.

4.1.3

Bootstrap loader och multiboot

Din distribution med alla dess paket skall ju installeras ngonstans, och denna plats r i det normala fallet din dators primra hrddisk. I detta och nsta avsnitt skall vi drfr bekanta oss med hur ett operativsystem lagras p en hrddisk p IBM-kompatibla PC-datorer (kort IBM PC), och hur det startas frn denna hrddisk. Om du inte tnker installera p en PC, eller om du redan kan allt om hur hrddiskar fungerar kan du hoppa ver dessa tv avsnitt. Frst betraktar vi frgan om hur vr dator egentligen lyfter sig sjlv i hret med en bootstrap loader p det vis vi pratade om redan i inledningen p sidan 11. IBM PC-arkitekturen denierar ett 512 byte stort huvudbootblock (engelska: master boot record eller bara MBR), ven kallat bootsektor som pla13 SCSI str fr Small Computer System Interface och r en standard fr att verfra data mellan hrdvaruenheter ver en buss, typiskt anvndningsomrde: hrddiskar, CDROM-enheter, scannrar. 14 IDE str fr Integrated Drive Electronics, och r ett alternativt namn fr ATA (Advanced Technology Attachment) vilket r det i srklass vanligaste sttet att ansluta hrddiskar, CDROM-enheter och diskettstationer till en dator idag.

138

4.1 Hur distributionerna fungerar


Huvudbootblocket
Offset 0x000 0x1BE 0x1CE 0x1DE 0x1EE 0x1FE Innehll Bootblockskod i x86-maskinkod. 16 byte-post som beskriver den frsta partitionen 16 byte-post som beskriver den andra partitionen 16 byte-post som beskriver den tredje partitionen 16 byte-post som beskriver den fjrde partitionen 2 byte ID som alltid r 0xAA 0x55, och avsljar att detta r en partitionssektor.

Partitionsposterna
Offset 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0c Betydelse Partitionsstatus: 0x80 betyder aktiv (primr) 0x00 betyder inaktiv (logisk). Vilket lshuvud som anvnds p partitionens frsta sektor. Frsta sektorn som anvnds av partitionen. Frsta cylindern som anvnds av partitionen. Partitionstyp. (t.ex. 0x05 = utkad partition.) Vilket lshuvud som anvnds p partitionens sista sektor. Sista sektorn som anvnds av partitionen. Sista cylindern som anvnds av partitionen. Placering av bootsektorn i partitionen (4 byte). Totala antalet sektorer som anvnds av partitionen (4 byte).

Figur 4.2: Uppdelningen av de 512 byten (0x200 hexadecimalt) i huvudbootblocket, och hur de 16 byte (0x10 hexadecimalt) stora partitionsposterna r indelade.

ceras allra frst p den frsta (primra) IDE- eller SCSI-hrddisken.15 Dessa 512 byte innehller ett datorprogram som startas automatiskt16 av datorns BIOS och drutver oftast en partitionstabell. Se gur 4.2 fr en illustration av det faktiska utseendet. I DOS och Microsoft Windows fungerade programmet som lg lagrat i detta huvudbootblock s att det i sin partitionstabell slog upp den aktiva partitionen, vilket normalt bara skall vara en. Drefter laddades bootblocket frn den aktiva partitionen, vilket r 512 utpekade byte, angivet med en offset frn partitionens start. Detta innehll i sin tur nnu ett program och startades sedan p samma vis som huvudbootblocket, fr att sedan i sin tur starta upp operativsystemet som var installerat p just denna partition. Detta gller inte de tv bootstrap loader-program som anvnds i
15 Den primra hrddisken namnges i GNU/Linux-vrlden fr /dev/hda om det r en IDE-enhet eller /dev/sda om det r en SCSI-enhet och i Microsoft Windows kort och gott C:. Enheten kan ven vara en RAID-enhet o.dyl. men sdana krngligheter gr vi inte in p hr. 16 Programmet laddas in p adress 0x7c00 i minnet och startas i real-mode.

139

Kapitel 4 Distributionerna GNU/Linux, nmligen LILO, vilket betyder LInux LOader, och r skrivet av Werner Almesberger respektive GNU GRUB vilket utlses GNU GRand Unied Bootloader och r ett universellt bootprogram, ursprungligen skrivet av Erich Boleyn. Dessa anvnder visserligen huvudbootblocket p samma vis som DOS och Windows, men startandet av GNU/ Linux-partitionerna skter de efter eget gottnnande, t.ex. struntar de i vilken partition som markerats som aktiv och startar direkt ett sekundrt program frn ngon egendenierad partition, som i sin tur startar ett operativsystem frn ngon annan partition. De lagrar dock partitionstabellen (se nsta avsnitt) p ett vis som r kompatibelt med andra, inte fullt lika frslagna operativsystem. Det r mjligt att med bde LILO och GNU GRUB stadkomma kongurationer s att mer n ett operativsystem kan startas frn din dators hrddiskar. Om du kan starta tv olika operativsystem kallas detta dual boot, men alla kongurationer som kan starta mer n ett operativsystem kan lika grna kallas multiboot, i synnerhet br du anvnda det begreppet om er n tv operativsystem kan startas. Det existerar ingen egentlig standard fr hur multiboot skall g till, och utvecklarna av GRUB har drfr skrivit en: the multiboot specication. (Se [22].) Frgan r om andra operativsystemtillverkare kommer att flja denna specikation, eller ens gnar frgan srskilt stort intresse. Om du vid installationen av din distribution behver vlja mellan att anvnda LILO eller GNU GRUB r valet enkelt: GRUB. Detta program r betydligt mer sostikerat n LILO, som i princip bara fredras av de som anvnder det av gammal vana. GRUB r dessutom betydligt enklare att kongurera. Om du inte kan initiera GRUB via ett installationsprogram s r principen denna:
# grub grub> root (hd0,0) grub> setup (hd0)

Frsta raden startar GRUB, andra raden talar om fr GRUB att du vill boota frn primra diskens (hd0) frsta partition. (Listigt nog numrerad s att frsta partitionen fr nummer noll.) Den tredje raden ber GRUB att installera sig sjlvt i huvudbootblocket p den primra disken. Du mste drefter ven skapa en kongurationsl till GRUB p den plats dr du valt att installera det: de esta vljer att installera GRUB i /boot (mnga lgger ocks /boot p en egen partition, se nedan) och d skall kongurationslen heta /boot/grub/grub.conf. Om GRUB r ordentligt installerat skall det nnas en exempell som heter /boot/grub/grub.conf.sample att utg ifrn. Kopiera och anvnd denna som frebild. 140

4.1 Hur distributionerna fungerar Om du tnker installera ett annat operativsystem frutom GNU/ Linux typiskt Microsoft Windows br du installera detta frst (och lmna d plats t GNU/Linux, se nedan) och GNU/Linux eftert. Anledningen till att det skall gras i denna ordning r att LILO/GRUB r mer exibla, och krver sitt eget huvudbootblock, medan andra operativsystem, typiskt Windows, grna fr fr sig att skriva ver huvudbootblocket med sin egen favoritkod utan att frga. Nr ditt installationsprogram fr en viss GNU/Linux-distribution frgar om det skall skriva ver huvudbootblocket, skall du normalt svara ja, och sedan lta LILO eller GRUB starta andra eventuella operativsystem p din dators hrddisk. Du kan eventuellt nja dig med att skapa den startdiskett som de esta installationsprogram kommer att propsa p att du behver, och drefter starta GNU/Linux frn den disketten. Detta r inte srskilt slugt, lt bli om du inte mste. Startdisketten skall dock skapas och anvndas i prekra situationer (ven om en bootbar installationsskiva fr det mesta duger lika bra i dessa trngoml). Kanske vill du gra en kopia av ditt huvudbootblock, det gr i s fall bra att skapa detta med dd if=/dev/hda of=MBR bs=512 count=1, vilket kopierar huvudbootblocket frn /dev/hda till en l med namnet MBR. Om programmet hexdump nns installerat i ditt operativsystem kan du titta nrmare p innehllet med hexdump MBR. Om du r nyken p hur Linuxkrnan sedan startas upp av LILO eller GRUB s kan du blddra fram till avsnitt 5.4.2 p sidan 184. Utver LILO och GRUB nns fr mycket modern hrdvara ven ELILO. Detta r en version av LILO som skrivits om fr att stdja den nyare varianten av BIOS, Extensible Firmware Interface (EFI). Om du har en hrdvara som anvnder detta17 br du ven se till att hela din distribution r anpassad fr det. GRUB r i dagslget nnu inte anpassad fr EFI.

4.1.4

Partitionering

En hrddisk kan partitioneras i olika logiska enheter. Detta innebr att delar av en och samma hrddisk ur operativsystemens synvinkel ser ut som separata enheter. Varje sdan separat enhet kallas fr en partition. En vanligt frekommande missuppfattning r att partitionering har ngot med formatering att gra, detta r felaktigt, varje partition fr sedan formateras om den skall innehlla ett visst lsystem.18
anvnder de nyaste Intel x86-baserade MacIntosh-datorerna uteslutande EFI. 1980-talet och tidigt 1990-tal fanns hrddiskar som ibland krvde en s.k. lgnivformatering, vilket innebar att MFM-mnstret (kodningen av ettor och nollor p
18 Under 17 T.ex.

141

Kapitel 4 Distributionerna Detta skts p olika vis i olika datorarkitekturer, men p IBM PC nns idag mjlighet att anvnda maximalt fyra olika grundpartitioner p en viss hrddisk eller hrddisk-liknande enhet.19 Informationen om varje partition lagras i en partitionspost. Dessa sammanlagt fyra poster utgr den information som kallas partitionstabell och lagras som nmnts i den frsta hrddiskens huvudbootblock. (Se gur 4.2 fr att se hur partitionsinformationen lagras i huvudbootblocket.) Varje partition har en typ, vilket i praktiken bara r en siffra. En av partitionerna skall markeras som aktiv eller primr. (De vriga kallas vanligen fr logiska partitioner.) Eftersom moderna operativsystem ofta krver betydligt er n fyra partitioner uppfanns tidigt en magisk partition med typen 5, vilken kallades utkad partition. Denna pekar i frekommande fall ut en plats dr ytterligare fyra partitioner kan lagras (utanfr huvudbootblocket) i form av en egen partition, d.v.s. det r rent fysiskt bara en vldigt liten partition, som innehller en partitionstabell fr maximalt fyra partitioner. Denna placeras efter de tre frsta normala partitionerna. Den sista av dessa fyra nya partitioner kan ocks vara av typ 5, o.s.v. s att ett obegrnsat antal partitioner kan skapas i en form av lnkad lista.20 Hr skall jag som hastigast nmna ngot om hur hrddiskar fungerar. Dessa anger en position p hrddisken med tre siffror: cylinder, sektor och lshuvud. Inuti en hrddisk sitter ett antal skivor. Varje skiva lses med tv lshuvuden: ett p ovansidan och ett p undersidan. Varje skiva har tv egna huvuden. Alla huvuden rrs simultant ver skivornas yta. Positionen lngs skivornas radie kallas fr en cylinder, eftersom skivorna d de roterar med hg hastighet och lses av p alla huvuden samtidigt fr formen av en informationscylinder med magnetiskt lagrad data. Om vi betraktar ena ytan av en enda skiva kallar vi detta fr ett spr (engelska: track) dr lshuvudet kan g fram. P varje spr nns ett antal sektorer (vilket har exakt samma betydelse som i geometrin), och varje sektor r 512 byte stor. Som du skert inser kan allts varje position p hrddisken i tre dimensioner anges med dessa
sjlva skivan) preparerades fr alla spr och sektorer. Sdant sker numera enbart i fabrik och berr inga slutanvndare. P den tiden lgnivformateringar gjordes mste detta gras innan sjlva partitioneringen, vilket kanske har bidragit till sammanblandningen av partitionering och formatering. 19 ven s.k. USB-drivar och helt vanliga disketter brukar hanteras som om de vore vanliga hrddiskar och har drfr vanligen ett huvudbootblock och en (ensam) partition. Huvudbootblocket p disketterna var fr vrigt under 1990-talet en vanlig infektionsvg fr diverse datorvirus. 20 P grund av denna klumpighet har den nya IA64-arkitekturen ett annorlunda partitioneringssystem som heter Extensible Firmware Interface (EFI) varom litet eller inget r knt av frfattaren, men som skerligen kommer att bli vikigt att kunna hantera i framtiden.

142

4.1 Hur distributionerna fungerar

Figur 4.3: Hr ser vi till vnster lshuvudenas lge i y-led. Cylindrarna som tnkta snitt genom alla skivor, och till hger en skiva med en enstaka sektor av ett spr markerad.

tre vrden: lshuvud, cylinder och sektor.21 Kanske kan gur 4.3 ka den intuitiva knslan fr hur detta fungerar en aning. Du behver normalt inte bekymra dig om huvuden, cylindrar och sektorer nr du installerar ditt system, men i hndelse att du vill stadkomma ngot utver det vanliga r det viktigt att knna till ungefr hur hrddisken och bootsektorerna hanteras. Visssa versioner av BSD krver exempelvis att du anger installationspartitionens plats i form av lshuvud, cylinder och sektor. Detta ngot tillyxade system anvnds av de allra esta operativsystem, inklusive GNU/Linux bootstrap loaders ssom LILO och GNU GRUB. Dock kommer de inte att respektera uppgiften om vilken partition som r primr, eller bry sig om att Microsoft DOS och Microsoft Windows bara kan hantera boot frn grundpartitionerna och inte de utkade. Istllet presenterar de oftast en lista ver tillgngliga operativsystem och erbjuder anvndaren att vlja vilket som skall startas, s som beskrevs i fregende avsnitt. En distribution behver vanligen ett ertal hrddiskpartitioner att installera sig p. Om du har ett opartitionerat omrde p din hrddisk brukar det inte vara s svrt att installera distributionen dr: de esta moderna distributioner kan automatiskt partitionera och formattera detta utrymme p ett stt som passar distributionen. Det utrymme som krvs brukar variera beroende p hur mycket av din valda distribution du vill lgga in, men minimistorleken brukar i dagslget ligga runt en gigabyte. Om du redan har ett annat operativsystem installerat p din dators hrddisk str du infr ett problem. Givetvis kan du ta bort det gamla operativsystemet helt, och detta r ocks det enklaste alternativet. Om det andra operativsystemet har lmnat tomt, opartitionerat utrymme
21 Verkliga hrddiskar r numera ganska sostikerade och fljer kanske inte dessa angivelser alls, men den brande tanken r densamma, s ven om hrddisken internt verstter dessa angivelser till ngot helt annat s anvnds nd denna adressering.

143

Kapitel 4 Distributionerna p hrddisken, kan du sklart installera GNU/Linux dr. Ett alternativ som inte alla tnker p r att kpa en extra hrddisk den behver inte vara speciellt stor, c:a sex gigabyte rcker ju gott och vl fr att starta GNU/Linux p, och installera denna i din dator. Dock kan det bli problem om du vill kunna starta operativsystem frn era olika hrddiskar, till skillnad frn era olika partitioner: inte alla datorers BIOS r gjorda fr detta. GRUB eller LILO brukar dock kunna reda ut detta problem under frutsttning att de installeras i den primra hrddiskens huvudbootblock. Om du har ett annat operativsystem som i och fr sig har lagt beslag p hela hrddisken, men som inte anvnder allt utrymme, brukar du normalt nska att du kunde gra en ickedestruktiv ompartitionering, s att innehllet i de partitioner som redan nns p hrddisken inte skadas. Detta r ocks mjligt: programmet GNU Parted klarar detta. Eftersom Parted r gjort fr att kras under GNU/Linux krvs dock Linux. Detta moment 22 lser de esta genom att starta GNU Parted frn en startdiskett eller CD-ROM som innehller en minimal Linuxkrna. En vanlig lsning r att anvnda GParted LiveCD22 som innehller det helt graska GParted eller System Rescue Cd23 som innehller QtParted. Bda dessa program anvnder i sin tur GNU Parted och ntfsresize (se vidare nedan). GParted och QtParted r skrivna fr att efterlikna Windows-programmet Partition Magic. GNU Parted kan i dagslget inte hantera NTFS vilket r det lsystem som anvnds av Microsoft Windows 2000, Windows XP och senare varianter. Istllet anvnds programmet ntfsresize fr detta. Det programmet r i sin tur helt fristende, men baserat p samma kllkod som NTFS-drivrutinerna fr Linux-krnan och utvecklat av samma personer.24 Fr att utfra ompartitioneringsmanvrar fordras naturligtvis att du vet vad du hller p med. Gr inte detta om du r osker p slutresultatet! En annan sak som mnga glmmer r att gra backup p hrddisken innan de ompartitionerar. Gr det! Om du vill gra en avbild av hela hrddisken som du sedan kan terstlla kan du anvnda programmet Partimage,25 ett fritt program som fungerar som det populra programmet GHOST. ven detta program nns p System Rescue CD. Nr du sedan installerar din valda GNU/Linux-distribution kommer du att f frgor om partitionering. Ofta kan du vlja att lta installationsprogrammet partitionera det lediga utrymmet t dig. Om detta
22 Se: 23 Se:

http://gparted.sourceforge.net/livecd.php http://www.sysresccd.org/ 24 Se: http://linux-ntfs.sourceforge.net/ 25 Se: http://www.partimage.org/

144

4.2 Debian GNU/Linux

Figur 4.4: En illustration av hur hrddisken kan partitioneras upp i en dator. En hrddisk partitioneras dock inte i sdana hr cirkelsektorer, utan i cylindrar, vilket r koncentriska cirklar med kande radie.

inte r mjligt kan du vara tvungen att bestmma saker som storlekar p rotpartition, och hur stor swappartition du vill skapa. Den senare anvnds av Linuxkrnan fr att vxla ut minnessidor (engelska: paging) nr/om det fysiska minnet tar slut och br enligt en tumregel vljas till den dubbla storleken av datorns internminne, d.v.s. har du 256 megabyte internminne i din dator skall den gras 512 megabyte stor. De partitioneringsprogram som anvnds vid installationen brukar vara fdisk (vilket inte p ngot vis r DOS-programmet med samma namn, men snarlikt i funktionalitet), eller Red Hats disk druid vilket r ett lite hjlpsammare program. Modernare distributioner har partitioneringsverktyget inbyggt i installationsprogrammet. Det nns tre andra partitionsprogram utver dessa: sfdisk r ett program som liknar fdisk i det mesta och cfdisk r ett menystyrt, textbaserat och ganska lttanvnt program som br fredras framfr fdisk om det nns tillgngligt. (Det fredras bl.a. av Debian.) GNU Parted (krs med kommandot parted kan ocks anvndas fr all form av partitionering, s summa summarum nns det inte mindre n fem olika partitioneringsprogram fr att gra i stort sett samma sak. cfdisk och disk druid r lite mer graska, medan GNU Parted r lite mer kraftfullt.

4.2

Debian GNU/Linux
Ofciell hemsida: http://www.debian.org/

Debian GNU/Linux r en av de f distributioner som verkligen kallar 145

Kapitel 4 Distributionerna

distributionen fr GNU/Linux snarare n bara Linux. Efter att projektet startades 1993 har en hel del hnt med Debian. Den huvudsakliga loson bakom projektet presenteras i Debian Social Contract[8], och innebr i korthet: Att Debian anvnder fri mjukvara enligt Debian Free Software Guidelines, vilka i sin tur r i princip samma denition som anvnds av Free Software Foundation och godknner svl BSD-licensen som GNU GPL och Perl och Apache:s artistiska licenser. Att Debian stdjer fri mjukvara, genom att terfra information till de ingende projekten, hjlper dessa att hitta och rtta till buggar (vilket av deltagarna kallas upstream), och till sist: Att projektet r helt ppet, ven rrande skerhetsbrister och andra fel. All information om Debians interna organisation och granden r publik, inga beslut fattas i det frdolda. Alla anvndare kan om de vill delta i Debianprojektet, d.v.s. utvecklingen av Debian drivs inte slutet, s som ofta r fallet i distributionsfretagen, utan r lika ppet fr nya deltagare som GNU och Linux r. Arbetet med Debian delas rent konkret mellan utvecklarna p s vis att olika personer r huvudansvariga (engelska: maintainer) fr olika paket vilka r av varierande komplexitet och viktighet. Exempelvis r Linuxkrnan och fnstersystemet X exempel p vldigt stora, komplexa och viktiga paket, medan dremot paketet med skmtsamma manualsidor26 inte r srskilt viktigt. Utver detta har Debian en omfattande
26 Detta

paket heter funny-manpages och innehller uppslagsord som rtfm, sex o.s.v.

146

4.2 Debian GNU/Linux beslutande organisation fr policyfrgor och liknande, dit olika personer vljs med utgngspunkt frn meriter. Ytterst ansvarig r projektledaren, vilket ursprungligen givetvis var Ian Murdock, men som nr detta skrivs fr tillfllet r Branden Robinson. Det nns en fullstndig konstitution utarbetad fr hur alla frivilliga deltagare i Debianprojektet skall samarbeta, och ett omfattande policydokument som beskriver hur utvecklarna skall skta paketen. Bland utvecklarna nns era svenskar. Fr att skerstlla autenticiteten i paket som laddas ned frn projektet signerar utvecklarna sina paket med GPG-kryptonycklar, och signaturerna verieras sedan vid installationen. P s vis kan du lita p att Debianpaketen verkligen r en del av projektet. Utvecklarna har signerat varandras nycklar korsvis fr att bygga upp den msesidiga tillit som krvs.27 Distributionen bestr av tre olika deldistributioner: unstable, testing och stable. Nr en utvecklare just har gjort ett paket frdigt placeras det i unstable-distributionen. Nr det testats dr i 10 dagar och portats till alla de datorarkitekturer som stdjs av Debian yttas det till testing-distributionen dr det testas ytterligare. Nr en testing-distribution anses tillrckligt stabil byter den namn till stable.28 Varje testing-distribution har ett kodnamn frn lmen Toy Story (t.ex. Potato, Woody, Sarge etc.) men nr den slutligen slpps fr den istllet ett versionsnummer, t.ex. Debian GNU/Linux 3.1 (som tidigare hette Sarge). Det r hr du kommer att upptcka att Debian r en distribution med fokus p stabilitet: det tar evigheter fr testing att frvandlas till stable. Debians operativsystemrevisioner r knt segdragna och kan ta bortt tvtre r. Givetvis r det d mjligt att trots allt kra testingversionen: det ger ingen strre skillnad fr en normal anvndare, och r mer jour med utvecklingen. Var och en av deldistributionerna unstable, testing och stable innehller sedan tre underkataloger fr paketkategorierna main, non-free och contrib: den fria mjukvaran nns i main men drutver tillhandahller Debian tv kataloger med presumptivt icke-fri mjukvara, kallade contrib och non-free. Skillnaden mellan contrib och non-free r att contrib r fri programvara som i sin tur r beroende av ofri programvara. De anvndare som vill kan helt vlja bort denna typ av mjukvara. Existensen av dessa kataloger r inte srskilt omtyckt av Free Software Foundation, men de som arbetar i projektet tycker sjlva i allmnhet att detta r en bra kompromiss. main r den katalog som innehller det egentliga Debian och bestr enbart av fri programvara, medan de andra r att be27 I dagslget fungerar detta kanske inte riktigt som det ska. Paketen signeras innan de skickas till byggservrar, dr paketen fr de olika arkitekturerna byggs. Resultatet frn byggena r i dagslget helt osignerat. 28 Under en kortare period har denna namnet frozen, men blir sedan slutligen stable.

147

Kapitel 4 Distributionerna trakta som extra godis (eller som Richard Stallman skert skulle sga: frgiftat godis). Som nmndes i frbigende stdjer Debian en uppsj datorarkitekturer: i dagslget frutom de vanliga Intel och AMD-baserade PCmaskinerna29 ven de esta gamla Macintosh-datorer, Digital Alpha, Hewlett-Packards arbetsstationer, Amiga, olika MIPS och PowerPC-baserade system, Sun SPARC och stordatorn IBM S/360. Flera av dessa r Debian ensamt om att stdja. Nr det gller hjlp och support r tanken med Debian framfr allt att anvndarna skall hjlpa varandra. P webbsidan http://lists. debian.org/users.html nns en rad epostlistor fr olika kategorier av slutanvndare, och fr svenskar passar listan debian-user-swedish som hand i handske. Om du tnker anvnda Debian mycket br du g med i denna epostlista. Det nns ven fretag som sljer support fr Debian, men kanske inte till enstaka slutanvndare, utan till andra fretag och organisationer. P sidan http://www.debian.org/ consultants/ nns en lista ver sdana konsultfretag ver hela vrlden, varav i dagslget 14 r svenska. Konsulttjnster av det hr slaget r ganska dyrt och inget en hemanvndare har rd med, men fr ett fretag kan sdan hjlp naturligtvis vara vl vrt pengarna. Det skall ocks nmnas att Debianprojektet r progressivt p mnga vis, till exempel r det teoretiskt sett inte ens begrnsat till Linuxkrnan: i dagslget pgr tester med svl FreeBSD-krnan som GNU Hurdkrnan.

4.2.1

Installation av Debian

Installationsprogrammet i Debian kan upplevas som ngot gammaldags bde fr nybrjare och fr den som tidigare anvnt exempelvis Red Hat Linux. Det r inte graskt och innehller idiomatiska inslag, ven om det radikat frbttrades i och med version 3.1 av Debian. Dremot har det goda kongurerbarhetsegenskaper, eftersom bara en absolut minimal bottenplatta av GNU/Linux-komponenter installeras till att brja med. Efter detta startas Debian Task Installer som gr det mjligt att vlja ut hela grupper av paket som r gjorda fr att fungera tillsammans. Du vljer hr exempelvis skrivbordsmilj om du vill ha en fungerande skrivbordsmilj med fnstersystemet X, GNOME och/eller KDE. Detta ger en ganska grovkornig kontroll ver systemet och om du vill styra det hela mer i detalj mer mts du av ett program som heter dselect (Debian package selection tool) och dr du frvntas vlja vilka paket
29 Hit

hr naturligtvis ven 64-bitaras IA64 och Opteron-baserade PC-datorer.

148

4.2 Debian GNU/Linux

Figur 4.5: Hr syns det ngot skrckinjagande programmet dselect som anvnds fr att vlja paket under Debian-installation.

du vill ha installerat p din dator, genom att vandra runt i menyer med piltangenterna. Det r inte enkelt att kongurera brandvggsinstllningar och annat som egentligen borde gras under installationen. Dremot r skerhetstnkandet hgt: om du har en Internetfrbindelse kommer Debian automatiskt att krva att f ladda ner och installera mngder av skerhetsuppdateringar fr att se till att ditt system r ordentligt skert. Under hela installationsprocessen fullkomligt krks programmen ur sig komplicerade tekniska frgor om bde det ena och det andra, som till exempel om fontrenderaren FreeType2 skall anvndas i Mozilla, vilket en novis kanske blir ganska rejlt frvirrad av. Den avancerade anvndaren tycker dremot skert att det r trevligt att f skruva p alla dessa sm instllningar. Efter att all installation r avslutad kommer inte graken att fungera ver huvud taget, ven om du valt en skrivbordsinstallation. Det krvs frst att du manuellt installerar och kongurerar delar av fnstersystemet X, vilket i sin tur krver ytterligare specialkunskaper.30 Att f X att fungera under Debian kan vara ganska jobbigt och det r ibland enklare att lita till egna kunskaper om X-servern n att frska anvnda Debians kongurationsverktyg. En viss bot p Debians svrinstallerbarhet kommer frmodligen i och med att fretaget Progeny har tagit sig fr att konvertera Red Hats installationsprogram Anaconda s att det kan anvndas ven fr Debian. I dagslget r detta dock mest ett experiment.
30 dpkg-recongure

xserver-xfree86 kan ge en viss hjlp.

149

Kapitel 4 Distributionerna

4.2.2

DEB, dpkg och APT-systemet

Debian har ett eget och ganska unikt paketeringssystem som ocks r det ldsta. Detta system bygger p programpaket som kallas DEB-paket, och vilka normalt har lndelsen .deb. Paketen ligger installerade p era platser i lsystemet, mestadels under /usr men ocks direkt i roten, t.ex. i /bin. I princip tillhr de esta ler i systemet ett paket, men innehllet i /home, /usr/local, /proc, /tmp, och ndrade kongurationsler gr det exempelvis inte. En central databas hller reda p vilka paket som r installerade samt vilka ler som hr ihop med vilka paket.31 P s vis r det enkelt att lgga till och ta bort paket utan att skada andra installerade program. Paketlerna har fljande egenskaper: De r kompilerade fr en och endast en datorarkitektur. Debian stdjer som sagt era olika arkitekturer. Eventuellt har Debianutvecklarna ocks ndrat lite i programmen, s det r inte helt skert att resultatet blir exakt detsamma som om du kompilerat och installerat programmet helt p egen hand. De innehller ofta en del specialskript som krs fre och efter det att sjlva lerna som ingr i paketet har installeras. Dessa skript kan f fr sig att stlla frgor under svl installation som borttagning, och d fr du lov att svara p dem. Frgorna kan vara kryptiska och svrbegripliga, men d presenteras ofta ngot standardiserat svarsalternativ som du kan vlja om du skulle vara osker. Paketlerna har namn i stil med foo_2.0-12.deb vilket skall utlsas som version 2.0 av paketet foo, och 12 r revisionen av sjlva paketet.32 Fr manipulation, tillgg och borttagning av DEB-paket anvnds fljande kommandon: dpkg r den universella schweiziska armkniven fr DEB-paket. dpkg --list plockar fram en lista ver alla paket som r installerade p Debiansystemet. Vill du bara se vissa kan du ange det med ett reguljrt uttryck, exempelvis dpkg --list foo*, s syns bara paket vars namn brjar med foo. dpkg --install foo_2.0-12.deb installerar det angivna paketet. Innan paketet installeras kontrollerar dpkg ifall ngot annat paket mste installeras frst, eller om paketet r beroende av att en annan version av ngot paket skall vara installerat. (D kan det bli problem.)
31 Denna 32 Se

databas ligger i /var/lib/dpkg. vidare avsnitt 3.5, sidan 126 om versionsnummer.

150

4.2 Debian GNU/Linux dpkg --remove foo tar bort det angivna paketet. Nu behvs inga lnamn, eftersom det abstrakta paketet inte har ngot att gra med vad len det installerades ifrn hette. Nr du tar bort ett paket raderas inte instllningar fr paketet; det beror p att du kanske bara tnkt dig att ta bort paketet fr att installera ett nyare, och d vill du ju typiskt behlla kongurationen du hade innan. Fr att radera ven kongurationslerna (vilka d normalt nns i /etc) skriver du dpkg --purge foo. dpkg -L foo ger en lista ver alla ler som paketet foo har installerat i ditt operativsystem. dpkg -p foo ger detaljerad information om paketet foo. Exempelvis vem som gjort paketet och vilken arkitektur det r avsett fr, samt vilka beroenden (krav p andra paket) det har. dpkg -S /usr/bin/foo talar om vilket paket den dr len /usr/bin/ foo kom ifrn. Fungerar ven med globbning, dpkg -S /usr/ bin/fnord* t.ex. dpkg-recongure foo kr kongurationsskriptet frn paketet foo en gng till. Om du skrev fel eller av annan anledning vill gra om paketkongurationen (om det nns ngon sdan) r detta din hjlp i nden. Typexempel: dpkg-recongure xserver-xfree86. Normalt vill du inte anvnda dpkg direkt. Anvnd apt-get (se nedan) istllet. dselect nmndes redan under installationsbeskrivningen, detta program vars utseende ternns i gur 4.5 kan inte anses vara intuitivt av ngon mnniska annat n Debianextremister. Det enda dselect egentligen gr r att gra en lista ver operationer som skall utfras av dpkg, som sedan gr det faktiska jobbet. De kryptiska tecknen *** lngst ut till vnster under rubriken EIOM skall utlsas E rror en stjrna (*) i denna kolumn anger att paketet r trasigt (vilken tur att inget paket r trasigt i guren). Ett R istllet fr en stjrna anger att det r vldigt trasigt och mste installeras om. I nstalled en stjrna (*) anger att paketet r installerat. Andra tecken: - (bindestreck): programmet har varit installerat, det r borttaget men kongurationslerna som hr till programmet r dremot inte borttagna. Bokstverna U, C och I bety151

Kapitel 4 Distributionerna der att paketet r trasigt p olika vis och antagligen behver installeras om. O ld vad som stod angivet fr detta paket i kolumnen I innan vi startade dselect och brjade pilla runt. M ark vad du tnker dig att gra med paketet hrnst: *: installera eller uppgradera paketet, -: ta bort paketet, =: gr ingenting, _: rena (purge), d.v.s. ta bort bde paket och konguration, n detta paket r nytt och du fr lov att bestmma dig fr vad du vill gra med det. Personligen anser jag att dselect gr att leva utan, undantaget under sjlva installationen (tyvrr) d en mngd paket mste processas p en gng. Det kanske mest strande med dselect r dock hjlpsystemet som krver saker som att du skall vlja hjlpmenyer genom att trycka p bokstavskombinationer och avsluta program genom att trycka p punkt (.). apt-get r ett program inom konceptet Advanced Package Tool, APT33 , och r ett centralt, bra, och mycket viktigt program: det laddar ned och installerar den senaste versionen av ett program som nns i en sjlvunderhllande lista ver tillgngliga program. Det har ocks frmgan att lsa upp konikter i de fall att olika paket r beroende av varandra eller inte kan samsas av andra skl. Ibland kallas detta fr att APT-sviten r ett beroendehanteringsverktyg. Frutom de paket som tillhandahlls av Debian sjlva nns det andra listor som du kan vlja att plocka hem paket ifrn. Den enda nackdelen r att en hyfsat snabb ntverksfrbindelse krvs fr att detta skall fungera ngotsnr kvickt. Naturligtvis anvnder ven apt-kommandona dpkg i slutnden, men apt tillfr mjligheten att hlla sig automatiskt uppdaterad. Alla Debiananvndare lr sig snart fljande kommandon: apt-get update uppdaterar listorna ver tillgngliga program frn de kllor som angivits i len /etc/apt/sources.list. Detta skall du normalt skriva frst. apt-get install foo laddar ned och installerar senaste versionen av paketet foo. Kommandot kommer ven att kontrollera ifall ett annat paket mste installeras frst fr att det hela ska fungera, och kommer i s fall att ladda ner och installera dem ocks, eventuellt efter att frst ha frgat om lov. Enklare blir det inte.
33 Strikt taget r APT i sig ett programbibliotek skrivet i C++, som andra program, dribland apt-get och Synaptic anvnder sig av.

152

4.2 Debian GNU/Linux apt-get upgrade laddar ner och installerar senaste versionen av alla paket som har en tillgnglig uppgradering. Utomordentligt fr att hlla programmen frscha och skerhetspatchar installerade. apt-get remove foo tar bort paketet foo frn systemet. Samma funktion som dpkg --remove foo. Instllningsler som tillhr paketet kommer inte att tas bort. apt-get dist-upgrade r som upgrade men avsedd fr mer prekra situationer d inte alla program kan uppdateras. APT kommer d att sjlv vlja mellan olika paket fr att genomfra de viktigaste uppgraderingarna p bekostnad av mindre viktiga. Typiskt anvndningsomrde: att byta frn stable till testing: byt ut kllorna som pekas ut i /etc/apt/sources.list (med apt-setup om du vill) och skriv apt-get update fr att lsa om paketkatalogerna, skriv sedan apt-get dist-upgrade fr att byta till testing. Namnet p funktionen kommer antagligen frn detta stt att byta distribution. Notera att det rcker med att byta pekare i /etc/apt/sources.list fr att en helt annan version av Debian skall brja anvndas. P ett liknande vis innebr en pekare till stable eller testing att du frr eller senare kommer att tvngsuppgraderas till en ny version av Debian en vacker dag d du kr apt-get upgrade. (Du mrker detta p att APT kommer att frga om den fr lov att byta ut ngra hundra paket.) Fr att undvika att detta hnder kan du peka ut en plats med din distributions namn istllet fr stable eller testing: anvnd d namnen potato, woody, sarge o.s.v. apt-get source foo laddar ned kllkoden fr paketet foo om nedladdningsplatser fr kllkod nns angivna i sources.list. apt-setup hjlper dig att stlla in vilka kllor du skall plocka hem alla paket ifrn. Vlj en server som ligger i Sverige. Krs normalt bara enstaka gnger. aptitude r ett annat textbaserat installationsprogram. Det liknar dselect i sin obegriplighet och kryptiska utformning, men r inte fullt lika illa, och anvnder dessutom apt-get fr att plocka hem program frn listor av tillgnglig programvara. synaptic r en anvndarvnlig och grask motsvarighet till aptitude, byggd p GTK+. Anvnd detta program istllet fr dselect om du har fnstersystemet X startat. r det inte redan installerat s installera det med apt-get install synaptic. (Se gur 4.6.) 153

Kapitel 4 Distributionerna

Figur 4.6: Synaptic r det frmodligen mest ltthanterliga pakethanteringsprogrammet fr APT-systemet.

Det nns nnu er funktioner i APT, men de angivna r de klart viktigaste. APT har blivit s populrt att det t.o.m. nns portat till Red Hat Linux, dr det anvnds med RPM-systemet. Fr att manipulera paketdatabasen och lsystemet krvs att du r inloggad som root-anvndaren i ditt Debiansystem. Du kan dock som vanlig anvndare tminstone underska vilka paket som r installerade. Tack vare dels den hga stabiliteten och skerheten i Debian, samt det lttsktta APT-systemet fr systemunderhll och skerhetsuppdateringar, anses det vara ett mycket bra system fr servrar som skall installeras och sedan fjrradministreras. Du vill frmodligen inte grna rka ut fr att en skerhetsuppdatering som du installerar kraschar en dator som benner sig p andra sidan jordklotet, och med Debian r den risken minimal. ven som vanlig skrivbordsdator r Debian-distributionen populr, men d anvnder mnga testing-versionen fr att hlla mjukvaran ngotsnr aktuell. Du byter med apt-get dist-upgrade som beskrevs ovan.

4.2.3

Felrapportering

Om du hittar ngot fel i Debian, ven om det kanske inte beror p Debian i sig utan p underliggande mjukvaror, s skall du som god projektdeltagare rapportera felet. Fel i Debian rapporteras fr nrvarande via epost, i ett egensnickrat felhanteringssystem som nns beskrivet p http://www.debian.org/Bugs/. Ofta fr du feedback snabbt p rapporterade fel, och ombeds d att veriera att felet r lst i testing154

4.3 Red Hat Linux / Fedora Core

distributionen, om du har den. Tnk p att felrapporteringen r avsedd fr verkliga fel. Behver du bara hjlp med att begripa hur ngot fungerar ska du frga p epostlistan istllet.

4.3

Red Hat Linux / Fedora Core


Ofciella hemsidor: http://www.redhat.com/ http://www.fedoraproject.org/

Den frsta rent kommersiella GNU/Linux-distributionen som ngonsin tillverkades var Yggdrasil Linux, framstllt av Yggdrasil Computing med Adam Richter som huvudman. Nr denna distribution brjade sljas p en CD-ROM-skiva fr $99 under 1993 ndrades lget radikalt fr fri mjukvara. Detta visade fr frsta gngen p allvar att det faktiskt gick att tjna pengar p fria mjukvaror. Samma r grundade Marc Ewing rman Red Hat, namngiven efter hans fars skrmmssa (ngot i stil med en baseballkeps) som var rd och vit, som rnderna i den amerikanska aggan. Mssan hade han anvnt p college och sedan slarvat bort, s fretaget dptes till Red Hat fr att hedra den borttappade mssan. Den andra huvudsakliga initiativtagaren till Red Hat var kanadensaren Robert Bob Young, nansiren bakom bl.a. tidningen Linux Journal. Youngs fretag ACC Corporation slogs r 1995 samman med Red Hat till ett gemensamt fretag, varvid Young tog rollen som VD. I november 1995 utkades fretaget nnu en gng genom att g samman med Cygnus Solutions, ett fretag som specialiserat sig p GNU-projektets kompilatorer och utvecklingsverktyg fr bland annat inbyggda system. I dagslget har fretaget runt 700 anstllda p 22 olika orter runt om i vrlden, bland annat USA, Australien, England och Japan. 155

Kapitel 4 Distributionerna Huvuddelen av nansieringen till detta mellanstora fretag kommer frn konsultverksamhet. Red Hat tjnar pengar p att hjlpa andra fretag att byta till Linux frn andra operativsystem, reguljr IT-drift, utbildning av Linuxtekniker samt avancerat anvndarstd och konsultation fr utveckling av inbyggda system. Distributionen Red Hat Linux, som en gng var anledningen till att fretaget startades r numera nedlagd till frmn fr projektet Fedora Core (se nedan). Gamla Red Hat Linux var avsedd fr vanliga IBM PCslutanvndare, men fretaget tillverkar nu endast olika former av Red Hat Enterprise Linux, som r avsedd fr svl klienter som serverdrift av stora system (i s fall typiskt Oracle och SAP R/3), och som sljs dyrt i form av en halvrsprenumeration som inkluderar installationsmedia34 och med support (f.n. nns denna support i England fr svenska kunder). Det vanliga Red Hat Linux vars sista version var Red Hat Linux 9 nns dock fortfarande tillgngligt gratis. Bland anvndare upplevs Red Hat Linux och Enterprise Linux vldigt ofta som en produkt, och anvndaren knner sig som en kund, till skillnad frn Debian GNU/Linux som upplevs som ett projekt dr anvndaren r deltagare. Red Hat prolerar sig mot storanvndare: typiskt fretag med tusentals datorer. Andra anvndningsomrden r stora serverparker och kluster fr storskalig berkningskapacitet. Detta till trots upplever mnga anvndare Red Hat Linux som en utomordentlig hemmaprodukt. Den frsta versionen av Red Hat Linux kom ut den tredje november 1994 och kostade d $49.95 p CD-ROM. Sedan dess har fretaget introducerat nya versioner c:a 1 gng per r, rknat efter huvudversionsnumret. I och med version 9 slutade Red Hat helt att tillverka Red Hat Linux fr hemmabruk, och fokuserade all verksamhet p Red Hat Enterprise Linux, som fr nrvarande r uppe i version 3. Under en period (runt huvudversion 6 och 7) ansgs Red Hat Linux vara ganska instabil och program som ingick i distributionen kraschade tyvrr ofta. Sedan dess har stabilitetsproblemen ordnat till sig. Red Hat Enterprise Linux har sedan utvecklingen p denna variant startades varit inriktad mot hg stabilitet. Utvecklingen av Red Hat Linux skttes fram till sensommaren 2003 p ett traditionellt vis: fretaget tillverkade allt innanfr sina egna vggar, och slppte inte in utomstende utvecklare annat n som felrapportrer. Vid denna punkt slogs projektet samman med ett fristende initiativ kallat Fedora Core, och blev ett ppet projekt, dit alla anvndare
34 Du kan skert f tag p Red Hat Enterprise Linux i form av svl installerbart media som kllkod, men detta r inget som Red Hat hjlper till med, och sedan str du garanterat utan varje form av hjlp ifall fel uppstr.

156

4.3 Red Hat Linux / Fedora Core har tilltrde, p samma vis som fr exempelvis Debian. Huvuddelen av de som arbetar p projektet r dock anstllda p Red Hat, exempelvis hela styrgruppen. Det administrativa och nansiella huvudansvaret fr Fedora Core har emellertid avsndrats till en fristende stiftelse. Frn att ha varit ett projekt inriktat p strikta leveransdatum och marknadsfring vergick Red Hat Linux, omstpt till Fedora Core, till att vara ett funktionalitetsdrivet projekt. Detta har uppenbarligen samband med att Red Hat yttat fokus frn sin grunddistribution till andra delar av verksamheten. Fedora fungerar numera som en farmardistribution till Red Hat Enterprise Linux Red Hat plockar med jmna mellanrum ut strre delen av Fedora Core, lgger till och/eller tar bort saker och redistribuerar resultatet som Red Hat Enterprise Linux. Om du vill installera det som en gng var Red Hat Linux fr hemmabruk skall du installera Fedora Core. Denna distribution r inte lika stabil som Red Hat Enterprise Linux, r du ute efter maximal stabilitet, eller skall anvnda systemet i en strre organisation, s br du vervga ett inkp av Enterprise-produkten. Med Core i namnet antyds att krnan av paket som bygger upp Fedora Core har ett komplement: Fedora Extras, som tillhandahller en stor mngd paket som inte anses vara absolut ndvndiga. Grnsen mellan de tv delarna Core och Extras r ngot ytande och mellan tv utgvor av huvudsystemet Core kan paket yttas frn den ena delen till den andra. De delar som ingr i Core tenderar att vara paketerade av anstllda p Red Hat, medan Extras innehller mnga paket som i princip underhlls p frivillig basis.

4.3.1

Installation av Red Hat & Fedora Core

Red Hat prolerade sig tidigt mot att vara en installationsvnlig distribution. Detta resulterade i diverse halvgraska installationsprogram och sedermera det helt graska Anaconda som kan beskdas i gur 4.7. Anaconda r s pass enkelt att anvnda att det inte torde krva ngon ytterligare kunskap eller beskrivning utver det som redan nmnts i brjan av detta kapitel om bootstrap loader och partitionering. Om du vill ndra ngot i efterhand nns det graska verktyg som kan startas frn operativsystemets Systemverktyg-meny. Alla dessa ligger i /usr/ sbin eller /usr/bin och tenderar att byta namn och utseende hela tiden, men heter oftast system-cong-foo i Fedora Core. En frdel som skiljer Anaconda frn andra installationsprogram r att det skapar en s kallad kickstartl. Detta r en receptbeskrivning av hur installationen gjordes, och kan sedan kras automatiskt om du ns157

Kapitel 4 Distributionerna

Figur 4.7: Anaconda r ett fullgraskt installationsprogram som anvnds av Red Hat och de esta Red Hat-kopior.

kar installera era datorer med exakt samma konguration, fast helt automatiskt. Nr du installerat ett Red Hat-system hittar du kickstartlen i /root/anaconda-ks.cfg. Kickstartlen r ganska enkel att frst, och enkel att modiera.35 Om du vill kan du via kickstart lgga in extra paket som skall installeras ovanp standardinstallationen, och du kan ocks stta upp en lserver som lagrar alla de RPM-paket som anvnds av installationen, plus ngra egna, om du vill. Pongen med det hr r att en stor organisation ofta kper in en stor mngd likadana datorer som alla skall installeras p ett standardmssigt vis, ven om var och en av datorerna skall ha en del instllningar som avviker frn Red Hat Linux standard. Eftersom anvndare i en strre organisation oftast har sina hemkataloger lagrade p NFS-servrar och loggar in via NIS och liknande katalogtjnster,36 kan en arbetsstation installeras om ifall det r ngot problem med den, eller om exempelvis hrddisken har kraschat eller skall bytas till en strre. D kan en administratr bara starta kickstartskriptet och sedan gra ngot annat medan Red Hat installerar sig sjlvt. Vid manuell installation mste varje installation vervakas, och det tar en hel del arbetstid. Kickstartler kan anvndas bde fr installation frn CD-ROM och frn ntverket. De anvnds genom att kopiera len till en vanlig diskett, och boota installationsskivan frn bootprompten med kommandot:37
35 Arbete pgr ven p en grask kickstartkongurator, med namnet system-congkickstart (tidgare redhat-cong-kickstart). 36 Se vidare avsnitt B.1 p sidan 418. 37 Fr mer information om bootprompten i Linux, se sidan 184. Fr fullstndig infor-

158

4.3 Red Hat Linux / Fedora Core

boot: linux ks=hd:fd0/ks.cfg

Huvuddelen av de instllningar som grs i Red Hat Linux sparas i /etc/syscong. Till exempel skerhetsniver, brandvggsinstllningar, tidszon och sprk, o.s.v. Detta stt att lagra instllningar r inte standard p ngot vis och ingr heller inte i Filesystem Hierarchy Standard. (Se sidan 199.)

4.3.2

RPM-systemet

Red Hat (och sedermera Fedora) har det absolut mest vlknda programpakethanteringssystemet: RPM vilket betyder RPM Package Manager, och allts r en rekursiv akronym p samma vis som GNU. En frenklad version av RPM ingr ocks i standardiseringsinitiativet Linux Standard Base (se sidan 198). RPM bygger p programpaket som normalt levereras med lndelsen .rpm, och som installeras i lsystemet. Mestadels hamnar de ler som nns i paketen i strukturen under /usr men ofta nog ven direkt i rotkatalogerna ssom /etc och /bin. En egen databas med information om installerade paket hller reda p vilka paket som r installerade samt vilka ler som hr ihop med vilka paket.38 P s vis r det enkelt att lgga till och ta bort paket utan att skada andra installerade program. Paketlerna har fljande egenskaper: De r kompilerade fr en och endast en datorarkitektur. Red Hat stdjer ett ftal arkitekturer, s huvudsakligen r det Intel 32-bitarsarkitekturen eller varianter av denna som avses. Ibland har Red Hat ndrat lite i programmen, s det r inte helt skert att resultatet blir exakt detsamma som om du kompilerat och installerat programmet helt p egen hand. De innehller ofta en del specialskript som krs fre och efter det att sjlva lerna som ingr i paketet har installeras. Till skillnad frn Debianpaketen r det ovanligt att RPM-paketen brjar stlla frgor till anvndaren, p sin hjd lmnas ngra meddelanden. Ett vanligt meddelande r att signaturen39 inte kan verieras, eller
mation om hur kickstart anvnds, se Red Hats dokumentation, http://www.redhat. com/docs/manuals/linux/ plocka fram din distributions Customization guide[27]. 38 Denna databas ligger i /var/lib/rpm. 39 RPM-paket kan signeras kryptograskt med en digital signatur fr att veriera avsndaren, framfr allt signeras alla paket frn Red Hat sjlva.

159

Kapitel 4 Distributionerna att programmet kompilerats fr en anvndare som inte nns p systemet (de skall i allmnhet kompileras som root). Paketlerna har namn i stil med foo-2.0-12.i386.rpm vilket skall utlsas som version 2.0 av paketet foo, dr 12 r revisionen av sjlva paketet, fr i386-arkitekturen.40 Fr att hantera manipulation, tillgg och borttagning av RPM-paket anvnds fljande kommandon: rpm -i foo-1.0-1.i386.rpm installerar den frsta versionen av paketet foo fr i386-arkitekturen i operativsystemet. Innan paketet installeras kontrollerar rpm ifall ngot annat paket mste installeras frst, eller om paketet r beroende av att en annan version av ngot paket skall vara installerat. D kan det bli problem och du tvingas i vrsta fall installera en lng rcka olika paket, som alla mste anges i en lng rad efter rpm -i-kommandot.41 rpm -e foo tar bort (engelska: erase) paketet foo ur operativsystemet. Om ngot annat paket r beroende av att foo nns, kommer detta inte att tilltas utan vidare. Fr en applikation p hg niv r det dock fr det mesta okomplicerat. rpm -U foo-2.1-1.i386.rpm uppdaterar paketet foo till en nyare version. Att bara skriva rpm -i foo-2.1-1.i386.rpm ifall en ldre version av foo r installerat kommer inte att fungera. Du mste ange explicit att det r frga om en uppgradering. rpm -q foo frgar (engelska: query) om information rrande vilken version av paketet foo som r installerat. rpm -qf /usr/bin/foo tar reda p vilket paket den dr len /usr/bin/foo kom ifrn. rpm -qi foo visar fullstndig information om paketet foo. rpm -ql foo visar en fullstndig lista ver ler som kom med paketet foo, och vart de har installerats. rpm -qa visar en fullstndig lista ver alla paket installerade i ditt system. ven globbningsvarianter som rpm -qa foo* fungerar bra. Tidigare anvndes kommandot rpm ven av distributrer fr att bygga paket, men denna funktionalitet har numera separerats ut till det separata kommandot rpmbuild. Fr ytterligare information om RPMsystemet, se http://www.rpm.org/.
vidare avsnitt 3.5, sidan 126 om versionsnummer. kan frvisso skriva rpm -i -nodeps foo-1.0-1.i386.rpm men det rekommenderas inte. Gr bara detta om du r absolut sker p vad du sysslar med.
41 Du 40 Se

160

4.3 Red Hat Linux / Fedora Core

4.3.3

Up2date och YUM

Huvudtanken med det ursprungliga Red Hat Linux var att uppdateringar av operativsystemet skulle ske i form av nya versioner av hela distributionen, och inte kontinuerligt. I begynnelsen ck skerhetsuppdateringar drfr laddas ned frn en webbsida och installeras manuellt med rpm-kommandot. I lngden blev det ohllbart att kunderna varje dag skulle beska en webbsida och sedan manuellt installera uppdateringar p alla datorer. Fr att lsa detta uppfanns up2date-funktionen, som p varje dator kontinuerligt kontrollerar om uppdateringar nns tillgngliga, och gr anvndare uppmrksamma p om dessa behver installeras. Detta sker i form av en liten ikon p varje dators skrivbord. Up2date r dock inget perfekt verktyg: det r oklart om avsikten r att alla anvndare skall kunna kra det hur som helst, bara root kan ju installera uppgraderingarna, s varfr skall alla anvndare gras uppmrksamma p ngot de inte kan tgrda? I Fedora Core nns ytterligare ett installationsverktyg med namnet YUM, av Yellow Dog Updater, Modied, vilket betyder just att det r uppdateringsprogrammet frn Yellow Dog Linux i en modierad variant. Det r liksom APT ett beroendehanteringsverktyg som kan installera ett paket och alla dess beroenden vid begran. Om du installerat Fedora Core r det YUM du i frsta hand skall anvnda fr att installera nya paket utver de som nns p grundsystemets CD-skivor, och fr att uppdatera dina bentliga installerade paket.42 YUM anvnds vanligen manuellt som root med:
yum update

vilket uppgraderar de paket som eventuellt kommit i nya utgvor. Det apt-get r fr Debian r YUM fr Fedora Core.43 yum install foo har t.ex. den frvntade effekten att installera paketet foo och med yum list *foo* listar alla paket frn alla tillgngliga paketkllor med namn som innehller strngen foo. yum remove foo tar bort ett paket men kan lika grna ersttas med rpm -e foo. Ngot bra graskt verktyg i stil med Debians synaptic nns i dagslget inte, och fr att stlla in paketkllor fr YUM krvs i princip att du manuellt gr in och editerar len /etc/yum.conf eller lgger till en l i
42 I stora organisationer anvnder mnga ven Novells verktyg ZENworks Linux Management, med ursprung i fretaget Ximians verktyg Red Carpet fr att massuppdatera stora mngder datorer. Detta system skter ven sdana administrativa uppgifter som registrering av anlggningstillgngar i form av datorer (engelska: asset management). 43 apt-get nns ven portat till Fedora Core och RPM-systemet och anvndes mycket under en period d inget annat alternativ fanns. Den kande betoningen av YUM frn Red Hats sida har dock gjort detta till den dominerande metoden.

161

Kapitel 4 Distributionerna katalogen /etc/yum.repos.d som innehller de paketkllor du vill anvnda. Detta r dessutom ngot som en snittanvndare ofta blir tvungen att gra: tillgngen till paket frn Fedora Extras r frn och med Fedora Core 4 pslagen per automatik, men ofta r ngon oberoende paketklla som Livna44 eller FreshRPMS45 ndvndig fr att installera mediaspelare, MP3-std, Java, drivrutiner fr exotiska grakkort och annat som av principskl inte ingr i Fedora Core. Den inofciella FAQ:en p http://www.fedorafaq.org/ tillhandahller en egendenierade instllningsler och ger en viss vgledning i detta ofta helt ndvndiga moment.

4.3.4

Felrapportering

Om du hittar ett fel i Red Hat Linux eller Fedora Core s br detta rapporteras tillbaka till projektet. Problemrapporterna skall vara precisa, hrledda till exakt ett paket, och innehlla en beskrivning av hur felet kan reproduceras. Du hittar Red Hats felrapporteringssystem p http: //bugzilla.redhat.com/. Detta system anvnds ven av Fedora Core.

4.4

Linux From Scratch


Ofciell hemsida: http://www.linuxfromscratch.org/

Vissa mnniskor bor i elementhus, d.v.s. hus byggda av standardkomponenter. De esta av oss bor i ett hus som vi inte sjlva har byggt eller varit med om att gra ritningar till. Men en del av oss r individualister som faktiskt bygger vra egna hus. Ja, vi kanske tar hjlp av en rma fr att gjuta grunden, installera elektriciteten och kapa plank, men i grund och botten formger och bestyckar vi kanske vra egna hus. Beundrar vi sdana mnniskor? Kanske. Tycker vi att de besitter ngon verjordisk kunskap, fr den skull att de lyckas bygga sitt eget hus? Nej, inte precis. Vi kan alla frestlla oss att ven om det frmodligen tar en frskrcklig tid och kostar mer n ett standardhus, s gr det visst att lra sig sdana saker som fordras under tiden som bygget pgr. Sledes borde vi inte bli frvnade om somliga mnniskor bygger sina egna operativsystem. Men ngon form av vgledning behvs kanske, lite ritningsfrslag, tips om hur andra har gjort, vilka saker som mste nnas fr att en del basala ting skall fungera. Den distribution
44 Se: 45 Se

http://www.livna.org/ http://www.freshrpms.net/

162

4.4 Linux From Scratch som kallas Linux From Scratch erbjuder just detta. Det engelska uttrycket to do something from scratch betyder ungefr att gra ngot frn grunden upp. Linux From Scratch r en bok inga disketter, ingen CD-ROM, inga ISO-ler, ingenting annat. Frfattaren r huvudsakligen Gerard Beekmans. Det r rent faktiskt ett paket med HTML-ler (eller rtext eller liknande) som du laddar ner och lser dig igenom. De ger en steg-frsteg-beskrivning av hur GNU/Linux byggs upp frn sm atomer (som bash och gcc) till allt strre molekyler, tills en hel, sjlvstndig GNU/ Linux-installation till sist har skapats p din dator. Boken r p engelska och drfr fordras det att du r hyfsat bra p att lsa detta anglosaxiska sprk. Det nns goda skl att installera Linux From Scratch. Vill du bli en riktig expert p hur GNU/Linux fungerar r detta ett av de bttre stten, kanske det bsta. Vill du bygga Linux fr inbyggda system eller fr ett annat ndaml som krver att det skall vara extremt vlanpassat och litet, till exempel en X-terminal, s r Linux From Scratch den perfekta guiden till att frsta gngen prova p allt det som du behver kunna. Efter att du installerat Linux From Scratch har du en milj som liknar den som utvecklarna av Linuxkrnan i allmnhet sjlva anvnder. Filoson bakom boken r att du skall veta vad varje paket som ingr i distributionen r till fr, och exakt varfr det behvs. Drfr frklaras det lite versiktligt vad varje paket har fr funktion innan du fr instruktioner som talar om hur det skall installeras. Linux From Scratch frutstter att du redan har ngon annan installation krande p din dator. Vilken installation som helst som innehller gcc, make, och liknande programmeringsverktyg duger. Det krvs utrymme fr att skapa en ny partition p din hrddisk dr det nya operativsystemet skall ligga, c:a 1 gigabyte, s terg grna till avsnitt 4.1.4 fr att repetera ngot om hur detta gr till. I vrigt r det mesta i denna installation upp till dig sjlv. Linux From Scratch har gjort en del programlappar (patchar) fr olika program som behvs fr installationen, och dessa nns ocks hnvisade till i boken, s s lnge du fljer steg-fr-steg-anvisningen borde inga strre problem uppst. Uppstr problem eller frgor i alla fall, s nns det era olika epostlistor knutna till Linux From Scratch som du kan f hjlp ifrn. Nr det gller mer avancerade hgnivprogram som fnstersystemet X och GNOME s ger Linux From Scratch ingen srskild hjlp med dessa. Istllet nns det ytterligare en bok: Beyond Linux From Scratch som beskriver hur du installerar X, en hoper grakbibliotek, GNOME och/eller KDE, texteditorer o.s.v. Den som verkligen gtt igenom he163

Kapitel 4 Distributionerna la denna procedur fr snart knslan av att det kanske inte kan vara s svrt att stta ihop sin egen GNU/Linux-distribution.

4.5

Alla de vriga

Det lr nnas ungefr 1000 olika GNU/Linux-distributioner. Det nns ingen mjlighet att ta upp alla hr, men jag passar p att nmna ngra hyfsat populra varianter och hur de relaterar till de tv fregende: SuSE Linux skapades 1996 av konsultfretaget Software- und SystemEntwicklung, som i sin tur grundades av bland andra Roland Dyroff runt 1992. SuSE bestod i brjan av en mngd programlappar fr SLS Linux fr att bland annat hantera tyska sprket ordentligt. Fretaget var offensivt p USA-marknaden, och lyckades etablera ett samarbete med IBM innan det sldes i sin helhet till Novell i november 2003. Novell hade d redan tidigare kpt upp Ximian och positionerar sig drmed som en av de kanske viktigaste aktrerna infr framtiden. Specika egenheter med SuSE r det egna installationsprogrammet YaST (Yet another Setup Tool) som r ungefr likvrdigt med Red Hats Anaconda. SuSE anvnder Red Hats paketsystem RPM. Liksom Red Hat Enterprise Linux mste SuSE Linux kpas, det kan inte laddas ned p Internet, ldre versioner kan installeras via FTP. Novell har dock aviserat att en fritt nedladdningsbar variant skall skapas under namnet openSUSE i analogi med hur Fedora Core fungerar fr Red Hat.46 Yellow Dog Linux kallas bland anvndare fr Red Hat fr PowerPC och skapades r 1999 av Coloradofretaget Terra Soft Solutions. Denna version av GNU/Linux gr ltt att installera p alla Macintosh-datorer med en PowerPC-processor, och r av den enkla anledningen en av de snabbaste GNU/Linux-distributioner som nns att tillg. Frutsatt att den krs p en splitterny Mac r den i dagslget frmodligen den snabbaste Linux som kan fs fr rimliga summor pengar. Yellow Dog Linux anvnder ocks den Red Hats RPM-system och r naturligtvis ocks anfader till beroendehanteringsverktyget YUM som ingr i Fedora Core. Mandriva Linux r en Red Hat-baserad distribution ursprungligen skapad av Gal Duval i Caen, Frankrike i juli 1998 p basen av Red Hat Linux 5.1, och kallades drfr med konsekvens fr Mandrake Linux 5.1. (Namnet Mandrake ck verges r 2004 eftersom detta var ett varumrke som gdes av serietidnings-holdingfretaget
46 Se:

http://www.opensuse.org/

164

4.5 Alla de vriga King Features.) I princip var Mandrake d bara en Red Hat-installation plus skrivbordsmiljn KDE, som Red Hat d vgrade anvnda. Liksom Red Hat anvnder det RPM-systemet, och i December 1998 grundades fretaget MandrakeSoft fr att underhlla och distribuera Mandrake Linux. En egenhet med Mandrake r att det r kompilerat exklusivt fr att fungera p Intel Pentium-processorer och senare, det r allts mycket prolerat mot skrivbordsanvndare med vanliga IBM PC-kloner. Ett pakethanteringssystem kallat urpmi har i Mandriva Linux ungefr samma egenskaper som Debians apt-get eller Fedora Cores yum. Gentoo Linux skall vara ovanligt populrt i Sverige. Denna distribution har en totalt annorlunda instllning och prol n andra: Gentoo levereras i princip okompilerat. Under installationen kompilerar Gentoo i allmnhet sjlvt alla programpaket som behvs fr att kra det, och det optimeras d samtidigt fr den dator dr det installeras. Om du har erfarenhet av att kompilera saker inser du kanske att det drfr inte gr srskilt snabbt att installera Gentoo, i synnerhet inte p en ldre maskin, och av den anledningen nns numera ven mjligheten att anvnda vissa frkompilerade paket. Fr att klara av allt kompilerande anvnder Gentoo ett eget pakethanteringssystem kallat portage som r baserat p det portssystem som anvnds av BSD-projekten, och som allts bara innehller okompilerad kllkod och en l som stller in och startar kompileringen. Gentoo stdjer era olika datorarkitekturer, dribland Sun SPARC och PowerPC. Gentoo r frmodligen en bra kompromiss om du vill ha hg grad av kontroll ver ditt system, men nd inte vill kmpa dig igenom allt handarbete som krvs av Linux From Scratch, men som nd kan tillrckligt mycket om GNU/Linux-system fr att nd skriva ordentligt med skalkommandon fr att komma igng. Jag har sjlv anvnt det till exempel fr att bygga ett system fullstndigt optimerat fr en ren PentiumMMX-dator, vilket ju inte r s vanligt.47 Gentoo Linux lmpar sig ven speciellt fr den som tycker att pakethanteringssystem som RPM och/eller DEB r rena skrpet och stller till mer problem n de lser. Linspire (tidigare Lindows OS) r inriktat p s hg grad av Windowslikhet som mjligt, fr att gra ett byte ltt fr den som bara anvnt Windows tidigare. Liksom Red Hat Enterprise Linux eller
47 D.v.s.

GCC kompilatoragga -march=pentium-mmx, och arkitekturbeteckning i586.

165

Kapitel 4 Distributionerna SuSE Linux mste Lindows kpas, och kan inte laddas ner frn Internet. Knoppix eller Gnoppix r tv distributioner baserade p Debian, som dock r avsedda att kras direkt frn en CD, utan att installera operativsystemet p hrddisken. Om du laddar ned och kr Knoppix eller Gnoppix kan du testa om det verkar som att GNU/ Linux skulle kunna fungera bra p din dator. Detta rekommenderas dock inte om din dator har ett litet internminne 256 megabyte eller mer och en snabb dator krvs fr att det skall vara ngon mening med detta, annars kommer systemet att vara outhrdligt lngsamt. Idn med att kunna starta GNU/Linux direkt frn CD r verkligen inte ny, Yggdrasil Linux kunde gra detta redan r 1993, men distributioner av detta slag har nu ter blivit populra. ven SuSE Linux nns i en version som kan kras direkt frn CD, vilket r avsett fr att anvndas som test, innan du beslutar om du skall kpa det riktiga SuSE. En extremare variant r LNX-BBC (av engelskans Bootable Business Card) som r speciellt framtagen fr att passa p en vistkortsCD (en vldigt liten CD) och som r till fr att plocka fram ur plnboken nr du behver komma in i en maskin som benner sig i ett osunt lge, ungefr som en bootdiskett. Som du kan se har vi SuSE Linux frn Tyskland och Mandriva Linux frn Frankrike, vilket har gett dessa tv distributioner ett speciellt gott std fr tyska respektive franska. (SuSE har en lial i Tjeckien och drfr ven bra std fr tjeckiska.) Denna lokaliseringstendens r inte unik fr SuSE och Mandrake: Connectiva Linux: bra spanska, Red Flag Linux och Turbolinux: bra kinesiska, ASPLinux: bra ryska och slaviska. Fler exempel saknas skert inte, och mngden distributioner uktuerar varje dag.

4.6

Program utanfr distributionen

Distributionerna tillhandahller allts frdigkompilerade, och ibland ven hyfsat testade programpaket som stts samman till ett helt operativsystem. Vad hnder d den dag d ett program inte nns som ett frdigt paket till ditt operativsystem, eller om du pltsligt vill ha en nyare version av ett program n det som fljde med distributionen? 166

4.7 GNU/Linux fr inbyggda system Frsta alternativet r att titta efter inofciella paket. Detta innebr att du brjar leta efter paket som tillverkats av ngon som inte r involverad i respektive distribution. Fr Red Hat nns stora mngder paket som inte alls framstllts av Red Hat, och som ltt kan laddas ned och installeras. En populr nedladdningssajt r http://freshrpms.net/ och via http://www.rpmfind.net/ kan du hitta mnga lustiga paket. Till Debian r utbudet inte lika stort, en samlingspunkt fr inofciella Debian-paket nns p http://www.apt-get.org/. Det nns inget som garanterar kthet och kvalitet p dessa paket. Andra alternativet r att ska efter kompatibla paket. Ett RPM-paket gjort fr en Mandrake-installation kan heta exempelvis foo-1.2-13mdk.rpm och r vl frvisso bara garanterat att fungera med Mandrake, men oddsen r nd goda fr att det fungerar lika bra med Red Hat. Det nns till och med ett program som heter alien och som kan konvertera mellan DEB och RPM-paket, s att Debian-anvndare kan anvnda RPM:er och vice versa. Det kan ven hantera Stampede Linux SLPpaket och de enkla .tgz-ler48 som anvnds i Slackware Linux. Denna metod fungerar vl sisdr. Det nns viss risk fr att du kladdar till ditt system rejlt p detta vis. Tredje alternativet r att installera en frkompilerad binr l, som inte ingr i ngot paket alls. En del proprietra program till GNU/ Linux brukar levereras enbart p detta vis, exempelvis RealPlayer och Macromedia Flash. Lgg sdana program direkt i katalogen /usr/local/ bin om du fr mjlighet att vlja vart de skall placeras. Ibland vill dessa program rent av installera sig i din hemkatalog. Fr denna typ av program saknas en etablerad standard, och alla leverantrer gr p sitt eget vis. Det sista alternativet, som varje GNU/Linux-anvndare frr eller senare kommer att begagna sig av, r att kompilera program sjlv, med utgngspunkt frn kllkodsarkiv. Detta ganska komplicerade tillvgagngsstt avhandlas i kapitel 8 p sidan 283. Detta alternativ r ofta det bsta om du inte kan f tag p ett paket fr just din distribution.

4.7

GNU/Linux fr inbyggda system

Nr det gller inbyggda system och med detta menas en digitalteknisk apparat som utfr en viss uppgift, ssom en mobiltelefon eller ett kylskp har GNU/Linux kommit att spela en allt strre roll. Att installera och utveckla under GNU/Linux p ett inbyggt system r na48 En .tgz-l r en gnuzippad .tar-l, dvs detsamma som en .tar.gz-l, bara med ett frkortat namn.

167

Kapitel 4 Distributionerna turligtvis inget fr den vanliga anvndaren, och vi skall hr bara gra en snabb orientering fr att skaffa oss en frstelse fr hur detta gr till. Om du inte r intresserad av inbyggda system eller upplever detta avsnitt som obegripligt kan du hoppa ver det. Inbyggda system har speciella egenskaper: operativsystemet skall vara s litet som mjligt, d.v.s. krva s lite minne och hrddiskutrymme som mjligt. Vidare behver alla som utvecklar inbyggda system en skallad verktygskedja (av engelskans toolchain) vilken utgrs av de kompilatorer, avlusare och andra specialverktyg som krvs fr att utfra utveckligsarbete p ett visst inbyggt system. Denna verktygskedja innehller i allmnhet: Kablar, anslutningsdon och annan elektronik som behvs fr att ansluta ditt inbyggda system till en vanlig PC. Vissa inbyggda system anvnder en mycket okomplicerad serieport till detta, andra anvnder USB, men det vanligaste idag r att anvnda JTAG49 vilket r ett standardgrnssnitt som tillhandahller en speciell serieport med fyra eller fem pinnar, vilken via ett standardiserat lgnivprotokoll kan ta rent elektronisk kontroll ver systemet. Mjukvara som kan kommunicera med systemet via t.ex. JTAG. Det nns ett ertal JTAG-orienterade projekt fr GNU/Linux, beroende p vad det skall anvndas till. Vissa system anvnder ven en s.k. hrdvarudebugger, vilket krver ytterligare anslutningsdon och gr det mjligt att styra processorn i det inbyggda systemet fram och tillbaka i exekveringsdet, lsa av minnesinnehllet och hur det frndras vid krning av vissa kodsegment o.s.v. Detta r ofta en helt ndvndig (och dyrbar, samt proprietr) utrustning. En kompilator och lnkare (i allmnhet ngon variant av GNU Compiler Collection) som kr p din vanliga PC, men som inte kompilerar kod till den processor och det C-bibliotek och det utlformat som en vanlig PC anvnder, utan som matar ut ngot som ditt inbyggda system kan anvnda sig av. Detta har i allmnhet varit ganska jobbigt att stadkomma, men fr nya projekt brukar det g bra att anvnda crosstool, ett skript som skrivits av Dan Kegel och som hjlper till med alla dessa detaljer.50
49 Joint Test Action Group, IEEE-standard 1149.1 utvecklades ursprungligen fr att testa hgskaligt integrerade kretsar, men anvnds numera fr allt mjligt som har med utveckling av inbyggda system att gra. 50 Se: http://www.kegel.com/crosstool/

168

4.7 GNU/Linux fr inbyggda system Nr du vl har din verktygskedja p plats kan du brja plocka de bitar som behvs fr ditt inbyggda system. Processen pminner om att bygga upp Linux From Scratch (se sidan 162) fast i nnu ngot mindre skala. Fr inbyggda system krvs i allmnhet en anpassad (mycket liten) Linuxkrna, vilket betyder att du mste kongurera samt kompilera den sjlv. Du fr dessutom sjlv skriva drivrutiner fr all speciell hrdvara som ditt inbyggda system kan tnkas anvnda. Om processorn i ditt inbyggda system har en MMU (av engelskans Memory Management Unit, minneshanteringsenhet) kan du anvnda den helt vanliga standardkrna som nns p kernel.org. Har din processor inte en minneshanteringsenhet fr du anvnda dig av den modierade krna som CLinux (utlses micro-controller Linux) tillhandahller.51 . Denna r sedan version 2.6 av Linuxkrnan integrerad i standardkrnan, men projektet tillhandahller nnu stora mngder tillggskod och specialverktyg fr att anvnda Linux p inbyggda system, vilket gr att ven den som anvnder en processor med MMU br vara bekant med detta projekt. Utver krnan behvs naturligtvis ett C-bibliotek. Det som brukar anvndas r uClibc (vilket utlses micro-controller C library). Nr vl dessa komponenter har kommit p plats vill du skert prova att ppna ngon form av skal i ditt nya operativsystem. Det som brukar anvndas r GNU-projektets Bourne-Again Shell (bash), kompilerat frn kllkod. Fr vriga ndvndiga verktyg ssom ls, chmod o.s.v. brukar ett stort grtpaket innehllande alla vanliga kommandon i nedskalade versioner anvndas. Detta gr under namnet BusyBox.52 BusyBox har byggts genom att ta kllkod frn BSD och GNU-projektet och komprimera och prioritera innehllet s att bara det absolut ndvndigaste nns med. Filsystemet i ett inbyggt system brukar vara av romfs-typ. Det innebr att det r extremt kompakt och enbart avsett fr lsning, s innehllet kan inte modieras. Detta gr fr det mesta ingenting: nr lsystemets innehll skall bytas mste i allmnhet hela mjukvaran i systemet bytas, svl operativsystem som lsystem, och d utgr dessa saker tillsammans en s.k. rmware som mste bytas i ett stycke. Om delar av lsystemet skall vara skrivbara, t.ex. i form av loggar och liknande, kan de ju monteras ovanp det bentliga, enbart lsbara lsystemet. Om allt detta verkar jobbigt kan det kanske vara en trst att det sljs kompletta s.k. labbkort, vilket r ett kretskort med en processor, lite minne och (vanligen) en JTAG-port och kanske en display, som r anpas51 Se: 52 Se:

http://www.uclinux.org/ http://busybox.net/

169

Kapitel 4 Distributionerna sat fr att utgra grunden till ett inbyggt system. Labbkorten levereras med en viss Linuxkrna, ett C-bibliotek och en komplett verktygskedja. Tanken med labbkorten r att det som nns p dem sedan kan krympas ned till storleken p det (oftast mycket mindre) inbyggda system dr det skall anvndas. Labbkorten kps drfr ofta tillsammans med kretsscheman och komponentlistor s att det r ltt att bygga sm system som fungerar precis som labbkorten. Labbkort av det hr slaget tillhandahlls vanligen av processortillverkarna, t.ex. ARM, IBM eller svenska Axis. Flera inbyggda system krver realtidsrespons, vilket i tekniska krav motsvaras av preemptiv multikrning.53 Linux har p senare tid ftt ett ordentligt std fr preemptiva trdar och processer, och det nns drfr mnga anvndare av ldre realtidsoperativsystem som brjat titta p att migrera sina bentliga lsningar till GNU/Linux. Ett fretag som har detta som specialitet r MontaVista som inriktat stora delar av sin verksamhet p att skapa kompatibilitetslager mellan GNU/Linux och andra realtidsoperativsystem ssom Wind River Systems VxWorks.

53 Detta innebr att krnan kan avbryta mindre viktiga aktiviteter och drtill rknas ven mindre viktiga aktiviteter som utfrs av krnan sjlv till frmn fr viktiga aktiviteter, t.ex. en signal i en pacemaker eller dylikt som mste prioriteras framfr andra arbetsuppgifter.

170

K APITEL

5 GNU/Linux-projekten

Det hr kapitlet avhandlar de tre strsta och viktigaste projekten som tillhandahller den mjukvara som bygger upp ett GNU/Linux-system: GNU, Linux och BSD. Av dessa r GNU och Linux s viktiga, att de ftt ge namn t operativsystemet som helhet. Dessa tv r vad som krvs fr att f igng ngonting som r tillrckligt avancerat fr att du skall kunna starta ett POSIX-kompatibelt skal och kra dina mest grundlggande kommandon.

5.1

GNU-projektet
Ofciell hemsida: http://www.gnu.org/

GNU-projektet, vilket utlses GNUs Not Unix, annonserades den 27 september 1983 och startades formellt i januari 1984 med mlet att bygga ett fullstndigt, fritt, UNIX-kompatibelt operativsystem. Den ursprungliga annonsen frn Usenet-gruppen net.unix-wizards brjar:1 Fri Unix! Med brjan denna Thanksgiving kommer jag att skriva ett fullstndigt Unix-kompatibelt mjukvarusystem kallat GNU
1 Min

versttning

Kapitel 5 GNU/Linux-projekten (betyder Gnus Not Unix), och ge bort det fritt2 till var och en som kan anvnda det. Tillskott av tid, pengar, program och utrustning behvs i stor grad. Till att brja med kommer GNU att vara en krna plus alla verktyg som behvs fr att skriva och kra C-program: texteditor, skal, C-kompilator, lnkare, assemblator och ngra andra saker. Efter detta kommer vi att lgga till en textformaterare, en YACC, ett Empire-spel, ett kalkylark, och hundratals andra saker. Vi hoppas i slutnden kunna tillhandahlla allt anvndbart som i vanliga fall kommer med ett Unix-system, och allt annat anvndbart, inklusive online och tryckt dokumentation.[32] Enmansorganisationen bakom detta tillknnagivande var Richard M. Stallman, bland vnner kallad RMS. Denne hade bakom sig en lngre fejd med LISP-maskintillverkaren Symbolics som hade anstllt alla hans kollegor frn laboratoriet fr articiell intelligens vid Massachusetts Institute of Technology (MIT). Stallman uppfattade detta som en aggresiv handling mot den arbetskultur som frodades dr, och ville drfr skapa en fristad fr programmerare som jobbade med datorprogram med utgngspunkt frn att de skall vara fritt tillgngliga, modierbara och anvndbara.3 Det frsta GNU-programmet som skrevs var Bison, en ersttning fr det ngot obskyra programmet YACC, vilket str fr Yet Another Compiler Compiler, och r ett verktyg fr att skapa kompilatorer fr olika programsprk. Bison frbttrades av Stallman fr att kunna hantera kompilatorbeskrivningar gjorda fr YACC. Bison var liksom era andra program i det tidiga GNU donerade av ursprungsfrfattaren, som varit positivt instlld till projektet. Under sitt arbete med sina nsta tv projekt, GNU C Compiler och GNU EMACS, brjade Stallman slja kopior av dessa mjukvaror p band fr ngra hundra dollar styck fr att p s vis kunna betala mat och hyra fr sig sjlv och projektet. En arbetsplats fr honom sjlv tillhandahlls av MIT. r 1985 instiftade Stallman tillsammans med ngra vnner organisationen Free Software Foundation, som ck i uppdrag att frvalta och
2 Stallman anvnder det engelska, och i dessa sammanhang s omtvistade ordet free, och markerar hr inte srskilt tydligt att det handlar om frihet och inte om pengar, drav kan slutsatsen dras att denna skillnad i begynnelsen kanske inte var srskilt tydlig ens fr Richard Stallman, utan var ngot som utvecklades efter hand. 3 Den psykologiska grunden till varfr Stallman startade detta projekt utreds nrmare i biogran Free As In Freedom[39], arbetskulturen vid MIT-laboratoriet beskrivs utfrligt i boken Hackers Heroes of the Computer Revolution[17].

172

5.1 GNU-projektet utveckla GNU-projektet. En mngd program brjade att utvecklas inom GNU, de tv viktigaste r med strsta sannolikhet GNU C Compiler (senare omdpt till GNU Compiler Collection men oftast kallad bara GCC efter hur den anvnds i skalet med kommandot gcc) och GNU C Library, ibland kallat glibc. Dessa tv komponenter gjorde den fortsatta utvecklingen av projektet mjlig, eftersom nstan alla GNU-program r skrivna i programsprket C. Fr att utveckla C-kompilatorn bad Stallman Andrew Tannenbaum om lov att f anvnda hans C-kompilator Amsterdam Compiler Kit. Detta fll inte vl ut, och han beslutade drfr att skriva sin egen kompilator, vilket gick med raketfart. GCC blev snart internationellt ryktbar. Samma r uppstod en konikt med den som senare kom att bli upphovsmannen till programsprket Java, James Gosling. De tidiga versionerna av GNU EMACS hade nmligen baserats p en fri version kallad Gosling Emacs, vilken Stallman ftt ett muntligt lfte frn Gosling om att f anvnda i GNU-projektet, och nu hade Gosling slt sin implementation till fretaget UniPress, vilka snabbt frbjd Free Software Foundation att sprida GNU EMACS. Detta gjorde att stora delar av GNU EMACS ck skrivas om frn brjan. Denna och andra incidenter ledde till frfattandet av GNU General Public License, vilken beskrivs utfrligare i avsnittet om licenser p sidan 120. Sedan dess har Free Software Foundation inom ramen fr sitt GNUprojekt successivt utvecklat och uppdaterat alla de verktyg och program som ternns i gur 5.1, och drutver en hel rad andra, till exempel GNU EMACS, Autoconf, Automake, GNU Make o.s.v. De viktigaste programmen r samlade i kllkodspaket4 , exempelvis innehller programpaketet GNU Fileutils kommandon som ls, chmod o.s.v. som r helt oumbrliga fr att anvnda ett POSIX-system. Det ojmfrligt viktigaste av dessa kllkodspaket r GNU C Library, ofta kallat glibc, vilket r ett programbibliotek skrivet av huvudsakligen Roland McGrath och Richard Stallman och som anvnds av i princip alla Linuxprogram. Om du installerar hela Linux frn kllkod (som med Linux From Scratch-distributionen) r glibc normalt det allra frsta du installerar fr att stadkomma ett sjlvstndigt system. Om du aldrig programmerat sjlv kan vikten av glibc kanske vara svr att frst, nj dig i s fall med att konstatera att det r mycket viktigt. Lt dig heller inte frledas av namnet C Library, ty glibc anvnds i praktiken av alla programsprk, eftersom andra programsprks kompilatorer och standardbibliotek i allmnhet r skrivna i programsprket C, och drfr i slutnden nd anvnder glibc. ven stora delar av Bourne Again Shell
4 I praktiken r detta ett larkiv, ofta ngot i stil med foo.tar.gz, det r inte frga om samma paketbegrepp som fr distributioner.

173

Kapitel 5 GNU/Linux-projekten

Kommandon frn GNU-projektet


alias break chown csplit dirname exit fg grep join ls nice patch readonly set strings time tsort uname wc ar c99 (gcc) cksum cut du expand nd hash link m4 nl pathchk renice sh strip times tty unexpand who awk cat comm date echo export fold head ln make nm pr return shift stty touch type uniq xargs basename cd command dd env expr gencat iconv locale mkdir nohup printf rm sleep tail tr ulimit unlink yacc (bison) bc chgrp continue df eval false getconf id localedef mkfo od pwd rmdir sort tee trap umask unset zcat bg chmod cp diff exec fc getopts jobs logname mv paste read sed split test true unalias wait

Kommandon frn Linuxutvecklare


at newgrp batch ps fuser write ipcrm ipcs mesg

Kommandon frn BSD-projektet


cal man yacc crontab more ed pax le renice kill talk logger tput

Kommandon frn andra projekt


ctags ex (vim) lex/ex lp vi (vim)

Figur 5.1: POSIX-verktyg (kommandon) som utvecklats av de olika delprojekten i en vanlig distribution (Red Hat Linux 9). = ingr som del i Bourne Again Shell, bash, = ingr som del i GNU libc.

174

5.2 Linuxprojektet och alla andra skal r beroende av anrop till frdiga konstruktioner i glibc. Utver glibc r ditt system i allmnhet beroende av alla GNU-projektets programmeringsverktyg fr att ver huvud taget bli till. GNU C Compiler (gcc), Binutils, Fileutils, Textutils, Sh-utils, Gettext, Tar, Grep, Gzip och dess programbibliotek Zlib, Make, Autoconf och Automake r alla kllkodspaket som f programutvecklare klarar sig utan. De installeras ocks ofta tillsammans med din distribution eftersom de kan vara bra att ha, i synnerhet om du vill kompilera saker sjlv (se kapitel 8). Utver detta har vi redan nmnt GNU GRUB och GNU Parted som r oumbrliga vid installation, och som tidigare nmnts fredrar GNUprojektet ocks ofta att dokumentera sina program i texinfo istllet fr som man-sidor.5 r 1990 hade projektet redan frdigstllt strre delen av det operativsystem som skulle f namnet GNU OS det slutgiltiga operativsystemet GNU. Emellertid hade krnan HURD (se sidan 23) kraftigt frsenats. Svrigheterna med att skriva en mikrokrna hade grovt underskattats, och frdelarna med metodiken hade verskattats. Stallman hade d nnu en gng kontaktat Andrew Tanenbaum i syfte att f honom att dela med sig av krnan till det operativsystem med namnet Minix som denne skrivit, och som skickades med hans bcker om operativsystemteori. Tanenbaum frhll sig ven denna gng kallsinnig till Stallmans frfrgan.

5.2

Linuxprojektet
Ofciell hemsida: http://www.kernel.org/ Talk is cheap. Show me the code. Linus Torvalds6

Det var i detta lge som Linus Torvalds, fdd 1969, brjade fundera p operativsystem. Denne hade brjat studera vid universitetet i Helsingfors 1988, och hade dr mtt UNIX i form av Digitals UNIX-variant Ultrix.7
5 Denna policy har dock lagts om ngot: det nya XML-baserade dokumentationsformatet DocBook skall framledes anvndas, men kan vid behov exporteras till svl texinfo som man-sidor. Frndringen kommer att ske s fort projektet funnit ett bra stt att konvertera sina bentliga texinfo-ler till DocBook. 6 Frn Linux Kernel Mailing List. 7 Frfattaren delar frnamn, modersml och frsta POSIX-operativsystemupplevelse med Torvalds. Ngra andra likheter existerar vad jag vet inte, Torvalds har exempelvis namnet efter Linus Pauling, medan mitt kommer frn en brllopsannons.

175

Kapitel 5 GNU/Linux-projekten

Figur 5.2: Pingvinen Tux valdes som logotyp fr Linux i och med introduktionen av Linux 2.0. Logotypen ritades av Larry Ewing.

Torvalds frsta dator hade varit en Commodore VIC-20, drefter en trotjnande Sinclair QL, men infr studierna i Helsingfors behvde han en ordentlig dator, s i januari 1991 kpte Torvalds en ny IBMkompatibel PC.8 Den nya datorn anvnde han till en brjan mest fr att spela Prince of Persia i Microsoft DOS. Med hjlp av denna maskin skrev han en del program i assembler fr att testa processbytesmekanismen som fanns inbyggd i Intel 80386, och som gjorde det mjligt att programmera ett mer avancerat operativsystem n DOS p denna maskin. I mars ck han en kopia av Tanenbaums operativsystem Minix som han genast installerade och brjade programmera med. Ett av de frsta programmen han installerade var GNU C Compiler version 1.37. Med kompilatorn implementerade han terigen sitt processbytessystem. I april ck han behov av en terminalemulator fr Minix fr att kunna ringa upp universitetet via modem och lsa nyhetsgrupper p Internet, framfr allt comp.os.minix, den plats dr Minix diskuterades. Han skrev d om processbytessystemet till en terminalemulator med tv processer: en som lste frn modemet och en som samtidigt skrev till det. Lite senare lade han ven till diskhantering, eftersom han ville kunna ladda ner nya program. Han passade ven p att uppnna ett eget lsystem i samband med detta. Ungefr vid denna punkt brjade han p allvar vervga att utveckla detta embryo till ett fullstndigt operativsystem.
8 En Intel 80386-baserad DX, 33MHz med 4 megabyte RAM-minne utan matematikprocessor (Intel 80387).

176

5.2 Linuxprojektet Linus kallade sitt operativsystem fr Linux, men vervgde till en brjan att byta namnet till Freax. Vnnen Ari Lemmke skapade dock en FTP-katalog t projektet p datorn ftp.funet. som senare skulle anvndas fr projektet, och dpte denna till /pub/OS/Linux, och drmed etsades detta namn fast. Sndagen den 25 augusti annonserade Linus s slutligen projeketet:9 Hej allihopa dr ute som anvnder Minix Jag bygger ett (fritt) operativsystem (bara som hobby, det kommmer inte att bli stort och professionellt som GNU) fr 386 (486) AT-kloner. Detta har legat och pyrt sedan i april, och brjar bli frdigt. Jag skulle uppskatta all terkoppling rrande saker som folk gillar/ogillar i Minix, eftersom mitt OS pminner om det (samma fysiska struktur p lsystemet (av praktiska skl) bland annat). Hittills har jag portat BASH (1.08) och GCC (1.40), och saker och ting tycks fungera. Detta innebr att jag kommer att f till ngot anvndbart inom ngot ftal mnader, och jag skulle vilja veta vilken funktionalitet folk skulle vilja ha. Alla frslag r vlkomna, men jag lovar inte att implementera dem :-)[34] I september publicerade Linus den frsta ofciella versionen av Linux, version 0.01. Sedan fljde en rask rad versioner och ett explosivt intresse fr Linux. Version 1.0 slpptes dock inte frrn i mars 1994, men d hade terminalemulatorn Linux redan fungerande TCP/IPntverksstd, Ext2-lsystemet, matematikprocessoremulering, std fr IDE- och SCSI-hrddiskar, std fr ELF-binrer, uppringd frbindelse med SLIP och PPP, Ethernet via ett ftal ntverkskort, NFS, avlsning av CD-ROM-skivor, datormusar, och ljud via ljudkortet Sound Blaster. Version 1.0 tcktes ocks av GNU General Public License10 , som Torvalds valt eftersom den anvndes av hans favoritkompilator, GCC. Linuxkrnan var redan frn brjan helt ofrmgen att hantera grak: denna funktionalitet har hela tiden varit verlten p fnstersystemet X, och drfr inskrnker sig krnans std fr grakkort enbart till sdant som gr utver det som behvs fr ren grak, exempelvis accelererande avkodningskretsar fr video eller ljud, eller OpenGL-grnssnitt. I version 2.0 av Linux som slpptes i juni 1996 hade krnan mognat betydligt, och hade std fr dynamiskt laddningsbara moduler (se avsnittet om arkitektur lngre ned), Pentiumprocessorn, ntverk med
9 Min 10 GPL,

versttning. se sidan 122.

177

Kapitel 5 GNU/Linux-projekten IPX, Appletalk eller paketradio (AX.25), betydligt er ntverkskort och frutom Ethernet ven Token Ring-ntverk, ISDN, era nya lsystemtyper som SMB (Windows ntverkslsystem) och VFAT (som anvnds i Windows 95 och 98), samt mnga olika ljudkort. Sedan dess har krnan vuxit bit fr bit via de stabila versionerna 2.2, 2.4 och 2.6. Det som tillkommit sedan 2.0 r frmst std fr hotplugging (d.v.s. att hrdvara kan anslutas och tas bort under drift) speciellt fr USB (Universal Serial Bus) samt mer av allt s att 2.6-krnan stdjer i stor sett all frekommande hrdvara. Marknaden fr hrdvaror har samtidigt mognat s att ett ftal leverantrer (i realiteten ett ftal integrerade kretsar och ett ftal protokoll) har blivit dominerande, och anvnds mer eller mindre i alla IBM PC-kompatibla produkter. Drfr r det numera ganska ltt att f tag i hrdvara som fungerar tillsammans med Linuxkrnan. D detta skrivs r 2.6-versionen av krnan nnu relativt ny, men jag har frskt att i grligaste mn beskriva handhavandet s att det skrivna gller fr bda krnorna. I de fall detta inte r mjligt fr att krnorna skiljer sig t, har jag frskt hlla mig till att skriva ut bda alternativen.

5.3

BSD

University of California, Berkeley hade i form av Berkeley Standard Distribution, kort kallad BSD, vidareutvecklat AT&T:s UNIX med utgngspunkt frn kllkoden till den sjunde versionen av UNIX frn 1979. I brjan av 1990-talet slppte de kllkoden till BSD-distributionen fri, och skapade drmed de fristende BSD-distributionerna baserad p det ursprungliga BSD:s krna, kompilator och C-programbibliotek. BSD portades snart till Intels 80386-processor i form av 386BSD, ett projekt som annonserades av Bill Jolitz i Dr. Dobbs Journal i januari 1991. Under denna tid fregick en rttstvist mellan AT&T och University of California, Berkeley om rttigheterna till UNIX-kllkoden, vilken dock till sist avgjordes till Berkeleys frdel. Till en brjan var BSD:s licens inkompatibel med GNU GPL, men som beskrivs i avsnitt 3.4.2 p sidan 124 ndrades detta i juli 1999. Redan innan dess hade mnga anvndare av GNU/Linux brjat anvnda delar av BSD-programmen, i synnerhet distributionerna som ville vara s kompletta som mjligt. I andra fall har utvecklarna njt sig med att till exempel bara kopiera manualsidor, eftersom det varit jobbigt att skriva om dokumentation som redan fanns skriven fr BSD. Mngden program i ett normalt GNU/Linux-system som kommer frn BSD-vrlden lr knappast ka, men dremot kar mngden fri178

5.4 Arkitekturen i GNU/Linux-systemen stende program som r tillverkade s att de fungerar bde under GNU/ Linux och olika BSD-derivat. fnstersystemet X och de olika skrivbordshanterare som utvecklats, t.ex. GNOME och KDE, r utformade s att de fungerar under bde BSD och GNU/Linux. BSD-anvndarna anvnder p samma vis stora mngder program frn GNU/Linux, men BSD-systemens krna, C-bibliotek och strre delen av kommandoradsverktygen r helt egna, modierade versioner frn sjunde versionens UNIX. Ett annat vanligt program frn BSDvrlden r OpenSSH, som har sitt ursprung i OpenBSD men som nns installerat i nstan alla GNU/Linux-system.

5.4

Arkitekturen i GNU/Linux-systemen

Linuxkrnan har i princip fem stora huvudkomponenter, samt en del mindre. De fem viktigaste r:11 Minneshanteraren eller mm12 som tar hand om tilldelning och frigring av minne fr alla processer, samt hanterar virtuellt minne s att minnesbitar som inte anvnds kan kopieras ut till hrddisk, d.v.s. det som i Linuxvrlden kallas swap, och som du normalt har skapat en speciell partition fr under installationen. Schemalggaren eller sched som byter tidsluckor mellan olika processer p det vis som beskrivs i avsnittet om processer p sidan 33, och ven hanterar system med mer n en mikroprocessor. Interprocesskommunikatorn eller ipc som skter kommunikation mellan krande processer. Det virtuella lsystemet kallat VFS eller fs som har hand om alla lsystem och deras drivrutiner. Eftersom allt r en l i POSIXvrlden r detta den kanske strsta och mest komplexa biten av krnan. Ntverket eller net som hanterar drivrutiner fr ntverkskort, TCP/IP och paketltrering. Linuxkrnan r, som tidigare sagts inte en mikrokrna, utan en monolitisk krna. Sklen till detta anges av Linus Torvalds vara[24]:
11 Kapitlet presenterar en vergripande och frenklad bild av Linuxkrnan s som den upplevs av en anvndare, fr en djupgende och detaljerad presentation avsedd fr programmerare, se standardverket Linux Kernel Development[20]. 12 De olika delarna av krnan har kortnamn som hrleder sig frn de kataloger i kllkodstrdet dr motsvarande kllkod ligger.

179

Kapitel 5 GNU/Linux-projekten Mikrokrnor var, nr han brjade skriva Linux, nnu experimentella. De var av naturen mycket komplexare. De var ocks lngsammare. Redan r 1992 frsiggick en hrd men hjrtlig debatt i Usenet-gruppen comp.os.minix mellan Linus och Andrew Tanenbaum om fr- och nackdelar med mikrokrnor (som i Minix) versus monolitiska krnor (som Linux). Den som r intresserad kan ju lsa detta,13 men historien har bevisligen redan givit Torvalds rtt i denna debatt. Linus skriver med anledning av bland annat detta:14 Det var faktiskt s, att detta ck mig att anse att mikrokrnemetodiken i grunden var en ohederlig metodik, inriktad mot att erhlla er dollar fr forskning. Jag tror inte att dessa forskare ndvndigtvis var medvetet ohederliga. Kanske var de bara dumma. Eller frda bakom ljuset. Jag menar verkligen detta.[24] Personligen anser jag att krnan skall uppfattas som en hybrid mellan mikrokrna och monolitisk krna. Anledningen r att vissa delar av krnan, ssom loggmodulen, faktiskt startas som sjlvstndiga processer utanfr krnan. (Se vidare avsnitt 5.4.4 p sidan 194.) Att krnan inte r ngon mikrokrna har inte hindrat Linux frn att vara portabelt och modulariserat. Portabiliteten i Linux innebr att systemet kan yttas mellan olika datorarkitekturer utan omfattande ndringar, och initierades egentligen genom en port till Motorola 68000-familjen (bland annat Amiga), men blev inte ordentligt genomfrd frrn David Miller inledde ett experiment med att porta Linux till Sun SPARC-arkitekturen. Strre delen av Linux r s abstrakt som mjligt och skrivet helt i programsprket C, med endast mindre bitar i assembler. Funktioner fr att hantera externa enheter (drivrutiner) r i allmnhet skrivna s att det inte spelar ngon roll vilken processor eller buss som anvnds i datorn dr krnan installeras: drivrutinen kan anvndas i alla fall. Exempelvis borde ett godtyckligt PCI-kort fr IBM PC-kompatibler i teorin kunna anvndas i en Linuxkrna installerad p en Macintosh med PCI-buss. Assemblerkodgenerering och optimering verlts istllet mestadels p GNU C Library och GNU C Compiler. Detta har lett till att Linux stdjer den stora mngd arkitekturer som terges i gur 5.3
13 Se 14 Min

[35]. versttning.

180

5.4 Arkitekturen i GNU/Linux-systemen


DEC Alpha H8/300-familjen Motorola 68000-varianter utan MMU 64-bitars PowerPC 64-bitars Sun SPARC 32-bitars ARM Intel 386-varianter MIPS IBM S/390 User Mode Linux (Linux i virtuell maskin) 26-bitars ARM IA64 (Itanium) PA-RISC SuperH NEC V850E Axis CRIS/ETRAX Motorola 68000-varianter PowerPC Sun SPARC x86-64 (Opteron)

Figur 5.3: Datorarkitekturer som stds av Linuxkrnan version 2.6. = inkluderar Intel 80386, 80486, Pentium, Pentium-II och Pentium-III MMX, 3DNOW, ven kompatibla processorer som Transmeta Crusoe, AMD o.s.v. Notera den svenska arkitekturen CRIS som anvnds i ETRAX-processorn frn Axis Communications.

Modulariteten i Linux introducerades med Linux 2.0 och innebr att moduler med funktionalitet, exempelvis drivrutiner fr hrdvara, kan vljas vid kompileringen av krnan. Du kan allts nja dig med att bygga moduler fr enbart den hrdvara som nns i din dator. Det kan vara vrt att notera att svensken Bjrn Ekwall, som arbetat med Linuxkrnan sedan innan den var i version 1.0, har programmerat stora delar av modulhanteringssystemet. Linux har ocks std fr dynamiskt inladdade moduler: detta innebr att moduler kan laddas in och ut ur krnan under drift alternativt med att kompileras in s att de alltid nns i krnan. Nr du kompilerar din krna, kan du vlja att kompilera stora mngder av moduler som inladdningsbara om du har en knsla av att de kanske kommer att behvas, och de r drmed tillgngliga att anvndas vid behov. (Exempel: jag behver kanske SCSI, NFS o.s.v.) Du kan ocks vlja att helt stnga av funktionen fr inladdningsbara moduler, vilket du typiskt skall gra p ett inbyggt system som ju har en x och frdig hrdvara som inte ndras med tiden. Verktyg fr att styra och kontrollera krnan fljer inte med installationen av sjlva krnan som sdan; istllet krvs externa paket med verktyg som kommunicerar via de standardiserade grnssnitten fr att hantera krnan. I distributionerna har distributren i allmnhet valt att kompilera in de mest grundlggande modulerna i krnan, medan de mer periera eller obskyra har kompilerats som inladdningsbara moduler. Oftast nns i princip alla upptnkliga moduler med vid leveransen av en distribu181

Kapitel 5 GNU/Linux-projekten tion, det enda undantaget r moduler som skulle vlla konikt med en annan modul. I sdana fall brukar den vanligaste av de moduler som hamnar i konikt levereras med distributionen.15 Krnan r ocks relativt ren frn dliga arv: dumheter som att bara 11 tecken kan anvndas i ett lnamn, eller att installation av drivrutiner fr hrdvara krver att datorn startas om, lyser med sin frnvaro i Linux. Detta beror till lika delar p att Torvalds lyssnat p mnga goda rd innan han spikat en design, och att implementationen pbrjades s pass sent. Torvalds har ocks en tendens att anamma en attityd som innebr att det som r dligt gjort frn brjan inte skall xas till utan gras om helt frn grunden, s att delarna passar ihop p bsta vis.16 Detta str i bjrt kontrast med den deadline-orienterade metodik som anvnds p mnga mjukvarufretag en sdan metodik genererar ofta ett blverk av underligheter som bde utvecklare och anvndare sedan mste tas hnsyn till under lng tid, ngot som tyvrr ofta ocks stoppar upp vidareutvecklingen. Hr r Linuxkrnan ett fredme med sin rena och lttbegripliga arkitektur.

5.4.1

Hantering av dynamiska krnmoduler

Sjlva modulerna till Linuxkrnan ligger i allmnhet i katalogen /lib/ modules/x.y.z dr x.y.z r versionen av krnan som modulerna hr till.17 Du har i allmnhet bara en enda krna installerad p din dator, men det r inget som hindrar att du har era. Oftast r det d olika versioner av krnan, eller olika versioner av samma krna som det r frga om. Varje ny krna du installerar skall dock ha ett unikt namn. I denna katalog ligger modulerna ordnade i olika kataloger som svarar mot vilken typ av modul det r frga om, t.ex. net (ntverk), fs (lsystem), ipv4 (IP-protokollet version 4), och i de hr katalogerna nns i sin tur modulerna med namn som nfs.o (NFS), sb.o (Sound Blaster) o.s.v. Att lerna har sufxet .o betyder inget annat n att de r objektler, d.v.s. kompilerad kod, och sjlva modulnamnet r sledes nfs, sb etc. I version 2.6 av krnan heter lerna istllet samma sak med ndelsen .ko (kernel object), t.ex. nfs.ko. Fljande verktyg fljer med i varje GNU/Linux-distribution eller kan kompileras frn kllkodspaketet Modutils (fr 2.4.x-serien) eller Module-init-tools (fr 2.6.x-serien), och hanterar dynamiskt inladdade moduler:
esta av dessa koniktproblem har lsts i version 2.6 av Linuxkrnan. svenska talesttet gr om, gr rtt passar ganska bra in p denna metodik, i programvarubranschen kallas angreppssttet fr refaktorering. 17 Fr exakt versionsangivelse fr mer exotiska varianter, se avsnitt 3.5 p sidan 126.
16 Det 15 De

182

5.4 Arkitekturen i GNU/Linux-systemen modprobe foo lgger till modulen foo i krnan under drift. Modprobe r ocks det kommando som i allmnhet skall anvndas fr att svl lgga till som ta bort moduler i krnan: det r ett hgnivkommando, som i sin tur anvnder kommandona insmod och depmod (se nedan). Vad modprobe tillfr r att det rknar ut om en modul r beroende av ngon annan modul (p samma vis som olika paket i en distribution kan vara beroende av varandra t.ex.) och sedan laddas de i ordning. En modul som du lagt in med modprobe foo kan tas bort igen med modprobe -r foo. Modprobe kan ocks ta hand om speciella saker som skall gras fre och efter installationen av en modul, eller om ngra speciella parametrar skall skickas med till modulen. I len /etc/modules.conf (fr 2.4.x-serien) eller /etc/modprobe.conf (fr 2.6.x-serien) nns en lista med kongurationer fr olika moduler. Hr listas parametrar (engelska: option) och liknande som hr ihop med modulerna. Vissa distributioner har automatiska verktyg fr att underhlla den hr len och d skall du normalt inte ndra i den fr hand. I annat fall r det helt fritt fram. Om du anvnder en distribution nns det naturligtvis ngot skript som har hand om att se till att de moduler du valt under installationen laddas in under uppstart och nns inladdade nr systemet startat. I Debian GNU/Linux nns en lista i /etc/modules ver de moduler som skall lsas in, och i Red Hat eller Fedora Core grs det successivt i skriptet /etc/rc.d/rc.sysinit. Ngon standard fr hur detta skall g till existerar inte, men du kan antagligen hitta rtt i din distribution genom att utg frn raden som brjar si::sysinit:. . . i /etc/inittab. lsmod ger en lista ver vilka moduler som r installerade i krnan just nu, om de anvnds, och i s fall hur mnga processer som anvnder just den modulen. Prova grna att kra detta fr att se vilka moduler din hrdvara egentligen anvnder. modinfo foo ger information om hur modulen foo anvnds: vilken l den kom ifrn och och vilka parametrar den startats med. insmod r ett mera brutalt kommando som kan anvndas istllet fr modprobe fr att helt enkelt trycka in en modul i krnan. Detta krver ett fullstndigt lnamn, t.ex. insmod /lib/modules/2.4.20/ 183

Kapitel 5 GNU/Linux-projekten drivers/foo.o Kommandot insmod anvnds normalt bara av programmerare, en vanlig anvndare br anvnda modprobe.18 rmmod foo plockar bort modulen foo ur krnan. Du kan inte plocka bort en modul som anvnds. ven detta kommando anvnds i sin tur av modprobe. Tnk p att du absolut mste vara root fr att kra dessa program, och att de kanske inte r tillgngliga som standard i ditt skal: Modutils ligger normalt installerat i /sbin i ditt lsystem, s kanske mste du skriva hela skvgen, exempelvis: /sbin/lsmod fr att anvnda dem.

5.4.2

Hur krnan startar

Vissa delar rrande hur datorn startar upp har redan beskrivits under avsnittet om bootstrap loader, sidan 138. Din bootstrap loader kommer att ge dig ngon form av bootprompt, antingen i form av en meny med frvalda alternativ, eller eventuellt i form av en ren kommandorad, som ser ut ngot i stil med:
LILO:

Med en sdan hr prompt kan du ange vilken krna du vill starta, kanske skriver du bara linux, eventuellt ger du ngra parametrar till krnan innan du startar den, t.ex. linux single fr att starta krnan i enanvndarlge vilket r detsamma som krniv 1 (se avsnitt 5.4.3). Vanligast r dock att du bara trycker p Enter-tangenten, vilket aktiverar ett frdenierat alternativ. I GNU GRUB anvnds uteslutande menyrader fr de olika kongurationerna, och d kan du istllet vlja att redigera en av kongurationsraderna, nmligen den som brjar med ngot i stil med kernel (hd0,0)/boot/. . . och p det viset ge parametrar till krnan 19 Fr att starta Linuxkrnan behver din bootstrap loader oftast tv olika ler, ibland bara en: En krnavbild som innehller sjlva Linuxkrnan. Den har ofta namn som vmlinux eller vmlinuz, eller ett lngre, fullstndigt namn. Den kan ocks vara en lnk till den egentliga len, s lnge denna ligger i samma lsystem.
18 insmod r egentligen kommandot som gmmer sig bakom bde modprobe, lsmod och rmmod, eftersom alla dessa r symboliska lnkar till insmod. Programmet insmod knner sedan i sin tur av hur det har anropats, och beter sig drefter. 19 I sjlva verket ges bara en del av parametrarna krnan, och resten till den s.k. initprocessen, som r den frsta process som startas i GNU/Linux.

184

5.4 Arkitekturen i GNU/Linux-systemen Namnet vmlinux kommer frn UNIX-varianter dr motsvarande l har namnet vmunix. vm str frmodligen fr virtual machine och i det ena fallet r x utbytt mot z fr att markera att len r zippad med gzip. Denna l kallas ocks zImage eftersom det normalt r en gnuzippad krna. Tidigare kunde LILO bara ladda 1 megabyte stora krnor, men i och med att denna begrnsning frsvann i bootstrap loader-programmen brjade denna l istllet att kallas bzImage frn engelskans big zipped image. (Ett vanligt missfrstnd r att detta skulle st fr att krnan r komprimerad med det modernare komprimeringsprogrammet bzip2, s r det allts inte.) Hela krnavbilden r inte komprimerad: den innehller ocks ett par program skrivna i assembler fr att f igng den mest grundlggande hrdvaran och genomfra sjlva dekomprimeringen av resterande krna. En initial RAM-disk som innehller ett minimalt lsystem som skall anvndas fr att starta systemet. Detta lsystem skapas inte p ngon disk utan direkt i RAM-minnet p maskinen och kallas drfr just RAM-disk. Efter att det anvnts kommer det att kastas bort igen. Denna RAM-disk innehller typiskt bara ngra moduler som skall laddas in i krnan. Om du vljer att kompilera in alla moduler du anvnder direkt i krnan s behvs ingen initial RAM-disk alls. Om din distribution har installerat en initial ramdisk kan du alltid underska den lite (som root): kopiera den med t.ex. cp /boot/ initrd.img ./copy.img.gz packa upp den med gunzip copy.img.gz och undersk innehllet genom att montera avbilden med ngot i stil med mkdir initimage ; mount -t ext2 -o loop copy.img initimage20 P RAM-disken nns en l som heter /linuxrc och som krs automatiskt av krnan under uppstarten. Dessa ler pekas ut i kongurationslerna till LILO eller GNU GRUB, genom att ange en partition dr de ligger,21 och drefter vart p denna partition de tv lerna nns. Till exempel kan du skriva i grub.conf:
information om s.k. loopback-montering av en diskettavbild, se sidan 353. vill till att din bootstrap loader kan hantera det lsystem som anvnds p denna partition (eftersom krnan nnu inte r startad nr den laddas in), drfr anvnds vanligen Ext2-lsystemet. Detta r ocks den huvudsakliga anledningen till att ett separat /boot-lsystem ofta anvnds till detta /boot behver inte anvndas annat n av bootstrap loadern.
21 Det 20 Fr

185

Kapitel 5 GNU/Linux-projekten

root (hd0,0) kernel (hd0,0)/vmlinuz rw root=/dev/hda1 initrd (hd0,0)/initrd.img

Detta anger att den primra IDE-hrddiskens frsta partition (hd0,0) innehller ett lsystem. Detta skall monteras, och krnan startas frn len vmlinuz med RAM-disken initrd.img. Parametrarna till krnan har formen foo=bar fnord=p1,p2,p3 o.s.v., var noga med att inte infoga ngra mellanslag i en parameterlista separerad med komman. I exemplet har parametern foo vrdet bar medan fnord har vrdet p1,p2,p3. Det nns ngra anvndbara parametrar du kan anvnda: root=/dev/hda1 talar om att Linuxkrnan skall anvnda partitionen /dev/ hda1 som rotpartition, d.v.s. fr att montera katalogen med namnet /. Detta r inte samma sak som den root som anges fr bootstrap loadern, d.v.s. i exemplet ovan hd0,0. Det senare r avsett att vara en boot-root som skall monteras fr att lsa in krnan och RAMdisken, varken mer eller mindre. single begr att krnan skall starta i enanvndarlge med en root-prompt. Detta r mycket bra om datorn till exempel har kraschat och behver repareras. ro monterar rotlsystemet (/) i read-only-lge, vilket innebr att inget p disken kan ndras. Om du har en dator som bara anvnds som brandvgg kan detta p ett nurligt vis hindra den som lyckas ta sig in i systemet frn att sedan ndra ngot i systemet. Nackdel: se till att dina systemloggar (d.v.s. normalt lhierarkin under /var), inte ligger i rotlsystemet om du gr detta, annars blir det inga loggar. /tmp fr helst inte heller ligga dr, eftersom mnga program behver mellanlagra saker i /tmp. Mnga distributioner, t.ex. Red Hat, vljer att frst montera rotlsystemet med denna agga, och sedan montera om rotlsystemet ls/skrivbart, nr uppstartskripten kontrollerat att lsystemet verkligen mr bra. Detta r bra, eftersom det gr det mjligt att tgrda fel i rotlsystemet, ngot som uppstr om du t.ex. stnger av strmmen till datorn utan att stnga av den ordentligt. Sdana fel kan bara tgrdas p ett lsystem som monterats i read only-lge. 186

5.4 Arkitekturen i GNU/Linux-systemen rw tvingar istllet krnan att montera rotlsystemet bde ls- och skrivbart.22 rootags=foo kan ta alla parametrar som du kan ge till kommandot mount -o . . . , se sidan 213. Dessa kommer att anvndas nr rotlsystemet monteras. console=ttyS1,9600 kommer att ytta systemkonsollen till serieport nr 2 och frska kommunicera dr med hastigheten 9600 kbit/sekund. Om du inte har en skrm till din dator kan det nnas tillfllen d du behver ansluta en terminal istllet, och detta r sttet det grs p. reboot=w sger till krnan att gra en varmstart (d.v.s. inte rkna upp minnet och liknande) nr en omstart begrs av en anvndare. I standardfallet grs en kallstart, beroende p att gammal hrdvara inte kunde hantera varmstarter ordentligt. vga=ask ber krnan att presentera en lista av tillgngliga videolgen nr den startar. Flaggan kan ven sttas hrt till ett videolge som du gillar, t.ex. vga=7, men du vill nog veta vad den siffran betyder. Detta fr du veta genom att kra ask en gng frst. Dessa parametrar r bara ngra av det femtiotal som stds av krnan, men de vriga r alla relativt obskyra och avsedda fr folk som utvecklar Linuxkrnan. Nr den komprimerade Linuxkrnan och den eventuella RAM-disken laddats in frn utpekad plats kommer krnan att patchas genom att vissa parametrar skrivs in i frdenierade minnesadresser. Sedan startas Linuxkrnan. Detta tillstnd brukar ibland kallas krniv noll (engelska: runlevel zero), men den beteckningen r ngot tvivelaktig. Det r nu krnan brjar spruta ur sig den formliga od av obegriplig text som knnetecknar mnga GNU/Linux-installationer. Om vi brjar frn det gonblick som LILO eller GNU GRUB lmnar ver kontrollen till krnan hnder fljande p en IBM PC-kompatibel dator:23 Krnan startar en assemblerkodsnutt som passande nog har namnet trampoline och initierar viss hrdvara. Bland annat vljs dr en
22 Du kanske undrar vilken av aggorna ro och rw som r standardalternativet. Det beror p. Detta tattueras in i krnavbilden efter att den kompileras och kan vara bde det ena och det andra. Men rw r nog det normala. 23 Frr kunde Linux starta sig sjlvt via ett eget bootblock. Denna funktionalitet r numera helt verlten till externa bootstrap loaders. Hr beskrivs hur en bzImage laddas in och startas, fr mer detaljer se [28].

187

Kapitel 5 GNU/Linux-projekten videolge fr startup, vilket r det som kan stllas in med vgaparametern till krnan. Den komprimerade delen av krnan har ett inledande dekomprimeringsprogram som sedan startas i skyddat lge (engelska: protected mode) vilket r det processorlge som en krna normalt skall kras i. Detta program packar upp den komprimerade delen av krnan. Efter detta hoppar krnan till den dekomprimerade krnavbilden. Hr startas en minimal assemblersnutt som anropar C-funktionen start_kernel(). Krnan kommer drefter att initiera sina huvudsakliga komponenter (schemalggaren, minneshanteraren, det virtuella lsystemet och interprocesskommunikationsdelen), samt alla de moduler som kompilerats in i krnan. Detta genererar huvuddelen av den textmassa som far ver skrmen vid uppstart. Efter att uppstarten r klar lagras denna text i /var/log/dmesg men du kan ocks se uppstarttexten med kommandot dmesg som ven visar meddelanden frn krnan som kommit till efter sjlva uppstarten. Om du har skapat en RAM-disk till din krna kommer den sedan att monteras och skriptet linuxrc i roten av det lsystemet att kras. Till sist monteras rotlsystemet /. Efter att krnan har startat kommer den automatiskt att frska kra programmet /sbin/init24 frn rotlsystemet fr att starta den allsmktiga ursprungliga init-processen. Byter du ut programmet som ligger dr mot ngot annat, s kommer detta att startas istllet. (Gr inte detta experiment!) init kommer att startas i usermode, vilket innebr att den inte kan kommunicera med krnan annat n genom systemanrop, och om init skulle krascha innebr detta allts att sjlva krnan inte behver krascha av det (ven om det skert skulle upplevas p det viset). Efter att init startats har denna process fullstndig kontroll ver datorn och operativsystemet, krnan frhller sig passiv, och tar inga egna initiativ. Det enda den gr r att ta emot kommandon frn init och andra processer, samt olika former av servicebegran frn datorns hrdvara, ssom avbrott frn olika former av instickskort, stoppursbaserade avbrott, meddelanden om avslutade DMA-aktiviteter,25 o.s.v.
24 Om inte /sbin/init nns kommer krnan att frska med /etc/init och till sist med /bin/init. Sedan ger den upp och frsker starta /bin/sh fr att erbjuda ett skal dr felet kan tgrdas. Du kan ocks ange ett speciellt init-program med parametern init=/bin/foo till krnan i din bootstrap loader. 25 DMA, Direct Memory Access r en metod fr hrvaran att kommunicera direkt med datorns minne utan att blanda in processorn.

188

5.4 Arkitekturen i GNU/Linux-systemen Inladdningen av moduler som inte kompilerats in i krnan skts till exempel av init (eller andra processer) men inte av krnan sjlv. P stt och vis blir krnan till ett enda stort anropbart programbibliotek. Det vanligaste init-programmet kallas SysVinit (utlses system ve init) av Miquel van Smoorenburg. Detta har stora likheter med andra POSIX-system och anvnder de s.k. krniverna fr att styra systemets tillstnd. En del tycker att detta r ett avskyvrt komplext program, och kr istllet en light-variant med namnet simpleinit. Du kan fr all del skriva ett eget init-program om du hellre vill det. De som arbetar med inbyggda system kan kra vilket program som helst istllet fr det klassiska init. Mnga inbyggda system startar en multitrdad applikation med ett graskt grnssnitt, som inte anvnder grakrutinerna frn fnstersystemet X.

5.4.3

Krnkontroll krniver

Fr att kontrollera operativsystemets tillstnd i GNU/Linux anvnds fr det mesta s kallade krniver (engelska: runlevels). (Om ditt system inte anvnder dem r fljande information inte srskilt intressant.) SysVinit r ett program som implementerar denna funktionalitet. Dessa krniver anger i lsa ordalag hur mycket av operativsystemet som startats. Alla GNU/Linux-distributioner anvnder inte dessa krniver, och vissa andra POSIX-system som exempelvis Solaris anvnder dem. Det r ett krt mne fr groll och dispyt bland GNU/ Linux-anvndare hurvida systemet med krniver r bra eller dligt. Vissa avskyr dem, andra lskar dem. Utver dessa krniver nns oftast ett bootskript som bara krs en gng nr datorn startas. (Jmfrbart med det skript kan ligga p ramdisken). Vart detta skript nns varierar mycket mellan distributioner och installationer men det vanligaste r /etc/rc.sysinit eller /etc/init.d/rcS.26 Bootskriptet brukar t.ex. ta hand om att avmontera ramdisken, stta parametrar till krnan frn /etc/sysctl.conf och ladda in ndvndiga moduler i krnan innan ngot annat utfrs. Nr du startar ditt GNU/Linux-system bootas krnan, och nr sedan init-processen27 startas syns fljande text p skrmen: INIT 2.85 booting: Krniverna utgr frn att den frsta process som startas utanfr
kan ta reda p vad det heter i just ditt system genom att i len /etc/inittab leta reda p raden som ser ut ngot i stil med: si::sysinit:/etc/rc.d/rc.sysinit 27 D.v.s. programmet SysVinit.
26 Du

189

Kapitel 5 GNU/Linux-projekten krnan bestr av processen init. Denna process har ingen frlder28 och startar i sin tur alla andra program gruppvis, beroende p vilken krniv som begrts. Alla processer p ett GNU/Linux-system r sledes slktingar till init p ett eller annat vis. (Init har sjlv processen med process-ID 0 som frlder, en process som inte existerar.) Om du vill se hur detta slktskap ser ut p just ditt system kan du skriva kommandot pstree, som ger en grask bild av hur frldrar och barn r slkt med varandra, med init som ursprungsprocess. Init har hand om logistiken fr alla processer i systemet, ser till att de lever nr de skall leva, och begraver dem nr de dr. Livscykeln fr processer i GNU/Linux r fljande: om processer dr skall de tas bort av sina frldrar. Detta gr till s att nr en process har dtt (avslutats) av ngon anledning, frvandlas den frst till en zombieprocess. (En zombie r en levande dd inom voodoo-religionen.) Drefter skall frldern rensa bort (begrava) processen. Om detta inte fungerar som det skall, och frlderprocessen dr innan den hunnit rensa bort sina zombiebarn, kommer init att verta garskapet till den frldralsa processen och om det r en zombieprocess kommer init sedan att rensa bort den. Detta gr allts till p samma stt som nr staten begraver de mnniskor som dr men som saknar levande slktingar. (Lyckligtvis slipper de esta frldrar i verkligheten att begrava sina barn.) Om en frldrals process inte r en zombieprocess, kommer den istllet att leva vidare i hgnsklig vlmga och r drmed istllet en demon. Alla processer som inte startas av en anvndare, skall startas av init. Varje sdan process skall vara denierad i en krniv. Krniverna var frn brjan tnkta att vara nio till antalet, men bara sex nns denierade. Betydelsen av dessa r inte exakt fastslagen och kan variera mellan olika system, men fr det mesta har de en betydelse som den i gur 5.4. Vilka processer (frmst demoner) som startas i vilken krniv r ingen strre hemlighet utan anges i len /etc/inittab, dr du med lite klngrighet kan omdeniera helt vad krniv-siffrorna skall betyda.29 Hr nns ven angivet vilken krniv som systemet kommer att g upp i som standard (normalt niv 5). Du kan vilja ndra denna till 4 fr att datorn enbart skall starta i textlge, exempelvis fr en server av ngot slag. En annan sak som kan kontrolleras i denna l r hur systemet skall reagera p tangenkombinationen Ctrl+Alt+Delete, knd frn bland annat Windows-inloggningen.
28 Repetera POSIX-kapitlets avsnitt om processer p sidan 33 om du glmt terminologin fr processer! 29 Red Hat har gjort ett program som heter chkcong som kan hjlpa till att avlusa inittab-len. Om det nns installerat med din distribution ligger det i /sbin/chkcong.

190

5.4 Arkitekturen i GNU/Linux-systemen

0 stoppa systemet, stopp, halt. Synonym fr avstngt operativsystem. Att vxla till denna krniv stnger ned hela operativsystemet. Anvnds ocks som en beteckning p tillstndet i krnan innan init-processen startats under uppstart. 1 enanvndarlge, synonym S eller s (bda fungerar som kommandoargument). Systemet monterar hr om rotpartitionen i ls/skrivbart lge (frn att enbart ha varit lsbart), monterar sedan alla andra lokala lsystem, och aktiverar swap-partitionen fr virtuellt minne. Moduler till krnan laddas och tangentbordet kongureras. En ensam terminal (konsollen) startas ocks. I detta lge har systemet endast en anvndare, p vrdmaskinens konsoll. Loggningsdemonerna syslogd och klogd startas normalt hr. 2 eranvndarlge utan ntverk. Ett antal terminaler startas som kan anvndas oberoende av varandra. 3 eranvndarlge med ntverk. Datorn fr ett IP-nummer p ngot vis och ansluter till ntverksenheter. 4 eranvndarlge med textanvndargrnssnitt aktiverat. I Linux Standard Base denierat som reserverat fr lokala anpassningar. 5 graskt eranvndarlge, hr startas oftast bara X-servern och en skrmhanterare, t.ex. XDM (se kapitel 6), frutom de processer som startats i lgre niver. 6 omstart att vxla till krniv 6 kommer att starta om hela systemet. Figur 5.4: Olika krniver.

191

Kapitel 5 GNU/Linux-projekten
1 2 3 4 5 6 7 8 9

#!/bin/sh level=$1 cd /etc/rc.d/rc$level.d for i in K*; do $i stop done for i in S*; do $i start done

Figur 5.5: Det skript som vxlar mellan olika krniver. Skriptet gr in i rcX.d-katalogen fr aktuell krniv, och kr frst alla skript som brjar p K i alfabetisk ordning och sedan alla skript som brjar p S i alfabetisk ordning.

Programmen kan oftast inte startas rakt av utan anvnder i sin tur olika skriptler, vilka brukar placeras i katalogen /etc/init.d.30 Fr att init skall veta vilken krniv respektive skript hr till placeras symboliska lnkar frn kataloger i /etc/rcN.d31 dr N r respektive krniv. (rc0.d, rc1.d o.s.v.) Dessa kallas fga frvnande fr initskript. Lnkarna som placeras i /etc/rcN.d skall ha ett prex som inleds med S (stora S) eller K (stora K) samt fljs av tv siffror. Sifforna skall alltid vara tv, s mjliga kombinationer r S00-S99 och K00-K99. S anger att programmet (typiskt en demon) skall startas med detta knummer och K anger att processen skall stoppas (K kommer av engelskans kill) med detta knummer. K-skripten kommer att kras frst, och skall vara symboliska lnkar till initskripten fr alla program som ver huvud taget kan vara startade i ngon annan krniv, men som inte skall vara startade i denna niv. Det kan allts bli frga om en hel del lnkar. Efter detta krs S-skripten, som startar de demoner som skall kra i denna niv. Numret anger krordning och r praktiskt att ha till hands nr du vill starta eller stnga ner demoner som r beroende av varandra. Om foo r beroende av att bar r startat s namnger du exempelvis lnkarna S10bar och S20foo s startas det ena fre det andra. Du behver faktiskt inte ens vlja en ledig siffra, bara namnet r unikt, och den andra demonen med denna siffra inte r beroende av din demon. Systemskriptet som gr igenom rcN.d-katalogerna fr varje krniv ligger fr det mesta i /etc/rc.d/rc och om du tittat i detta skript och frsttt det s inser du hur detta fungerar i praktiken, se gur 5.5. Ett initskript fr en demon fnord som bara skall kras i krniv 4
30 Utlses 31 Utlses

frmodligen init directory frmodligen runlevel conguration directory

192

5.4 Arkitekturen i GNU/Linux-systemen prepareras sledes enklast genom att skriva ett bash-skript som tar parametrarna start eller stop, och kopiera detta till /etc/init.d/fnord. Drefter lnkar du detta program till exempelvis /etc/rc4.d/S50fnord, s att det startas automatiskt i krniv 4. Men glm nu inte att gra kill-lnkar till alla andra krniver, dvs lnka /etc/init.d/fnord till exempelvis /etc/rc0.d/ K50fnord, /etc/rc1.d/K50fnord, /etc/rc2.d/K50fnord, /etc/rc3.d/K50fnord, /etc/ rc5.d/K50fnord, /etc/rc6.d/K50fnord, om du nu vill att det verkligen bara skall vara startat i en enda krniv. Om du tittar i katalogen /etc/rc0.d (som stoppar maskinen) s ser du att alla lnkar i princip r kill-skript. Alla utom tv: till S00killall och S01halt, som stannar maskinen helt efter att alla demoner stoppats. Genom att titta i /etc/rcN.d-katalogerna upptcker du ganska snart hur det hela fungerar. Medan init-processen kr kan du (eller rttare sagt root-anvndaren) skicka meddelanden till den om att byta krniv. Detta grs med kommandot init, vilket inte skall frvxlas med sjlva init-demonen som sdan. Fljande kommandon anvnds fr att kontrollera init-demonen och kan normalt bara utfras av root-anvndaren (undersk deras vxlar och egenheter med man): init krniv dr krniv r en siffra eller bokstav frn gur 5.4 anger att demonen skall vxla krniv till den angivna. Exempelvis innebr kommandot init 1 att maskinen omedelbart tas ned i enanvndarlge. Kommandot telinit nns ocks tillgngligt fr att utfra samma sak, men r bara en lnk till init. Anledningen r att andra POSIX-system anvnder detta istllet fr init direkt. runlevel skriver ut vilken/vilka krniver som operativsystemet befann sig i senast, fljt av vilken den benner sig i nu. Om systemet inte har befunnit sig i ngon annan krniv n den aktuella sedan det startades, markeras fregende krniv med ett N. Typiskt resultat av kommandot runlevel: N 5. Detta kommando anvnds knappt av fysiska anvndare, det anvnds av systemet. shutdown stnger ned systemet efter en viss tid, och efter att ha gett en skriftlig varning till samtliga inloggade anvndare. Utfr i slutnden synonymen till kommandot init 0. halt stannar systemet omedelbart. Synonym fr kommandot init 0. reboot startar om systemet omedelbart. Synonym fr kommandot init 6. Om parametern respawn har angetts fr ngot program i /etc/inittab innebr detta att initdemonen kommer att gra sitt yttersta fr att hlla 193

Kapitel 5 GNU/Linux-projekten
USER root root root root root root root root root root root root root root root root root root PID %CPU %MEM 1 8.9 0.0 2 0.0 0.0 3 0.0 0.0 4 0.0 0.0 9 0.0 0.0 5 0.0 0.0 6 0.0 0.0 7 0.0 0.0 8 0.0 0.0 10 0.0 0.0 11 0.0 0.0 15 0.0 0.0 69 0.0 0.0 2251 0.0 0.0 2287 0.0 0.0 2328 0.0 0.0 2329 0.0 0.2 2331 0.0 0.1 VSZ RSS TTY 1372 428 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 0 0 ? 1364 320 ? 1372 428 tty1 2188 1156 tty1 2608 664 tty1 STAT S SW SW SWN SW SW SW SW SW SW SW SW SW SW S S S R START 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:44 19:45 19:45 19:45 19:45 19:45 19:45 19:45 19:45 TIME 0:04 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 0:00 COMMAND init [S] [keventd] [kapmd] [ksoftirqd_CPU0] [bdflush] [kswapd] [kscand/DMA] [kscand/Normal] [kscand/HighMem] [kupdated] [mdrecoveryd] [kjournald] [khubd] [kjournald] minilogd init [S] /bin/sh ps aux

Figur 5.6: Processer i krniv 1 p Red Hat Linux 9. Ett ganska typiskt urval.

detta program vid liv. Om det stannar kommer det genast att startas om igen. Om ett program startar om fr snabbt, mer n 10 ggr p 2 minuter, kommer den dock att ge upp och betrakta programmet som trasigt. (Detta drabbas du ibland av nr init frsker starta en X-serverprocess, se avsnitt 6.3.) Fr skripten i /etc/rcN.d-katalogerna anvnds inte respawn, och du kan drfr stoppa enstaka av dessa demoner med kommandot kill om du vill. Det normala sttet att stoppa en demon r dock genom att kra dess init-skript med parametern stop, t.ex.: /etc/init.d/foo stop. Du kan ocks starta den igen med /etc/init.d/foo start.

5.4.4

Exkursion i krniv 1

Fr att skapa oss en uppfattning om vilka processer som krvs i ett GNU/Linux-system fr att det skall ge en hyfsad funktionalitet, gr vi nu en utykt till krniv 1 i en normal distribution fr att underska vilka processer som krs. Du kan gra detta experiment sjlv genom att antingen ge vxeln single till krnan vid uppstart, eller vxla till krniv 1 med kommandot init 1 som root. (Det senare kan dock ibland medfra att vissa extraprocesser lever kvar frn hgre niver.) Kr sedan kommandot ps aux fr att se alla processer som kr i systemet fr tillfllet. ps aux > foo.txt sparar resultatet till en l. P min brbara dator med Red Hat Linux 9 ger detta resultatet i gur 5.6. 194

5.4 Arkitekturen i GNU/Linux-systemen Den frsta processen r den vlbekanta init med process-ID 1, och [S]:et efter processen anger att init startats i enanvndarlge. De tre sista processerna krs som synes i en terminal med namnet tty1. Dessa r i tur och ordning den virtuella terminalen (init kr ven denna i enanvndarlge, i eranvndarlge anvnds istllet normalt programmet mingetty) skalet (/bin/sh) och sjlva kommandot som listar processerna (ps aux). De vriga processerna, med namn som brjar p k (keventd, kapmd, etc.) samt bdush, mdrecoveryd r demoner som startats av krnan, bara minilogd har startats av init. Den sistnmnda demonen, liksom klogd som anvnds nr systemet startas i eranvndarlge, loggar hndelser i krnan till len /var/log/messages vilket r platsen dr alla meddelanden frn svl krnan som systemet i vrigt hamnar.32 De processer som startats av krnan uppfattas kanske som en aning suspekta. De r nmligen inte startade av init (som de borde) men gs nd av init. Du kommer heller inte att nna ngon programl p din hrddisk med namnet kswapd t.ex. Vad som i sjlva verket kommer i dagern i dessa processer r det faktum att Linuxkrnan inte r en monolitisk krna: den startar faktiskt en handfull vitala processer utanfr sjlva krnan. Linux r allts snarast att betrakta som en hybrid mellan en mikrokrna och en monolitisk krna. Vilka de underliga krndemonerna r varierar med versionen p krnan och vilka moduler som kompilerats in i den. kjournald r dock fr det mesta nrvarande.

5.4.5

Dynamiska lnkbibliotek

Dynamiska lnkbibliotek r en slags s kallade programbibliotek. Programbibliotek i sin tur r komponenter som kan anvndas fr att bygga datorprogram. Tanken r att p samma vis som en mnniska kan sl upp specik kunskap i ett bibliotek skall ocks ett datorprogram kunna plocka ut specik kunskap ur ett programbibliotek. Detta gr att det enskilda programmet inte behver kunna allt utan kan nja sig med att anropa en kodsnutt som stadkommer det som krvs. Detta lttar i praktiken arbetsbrdan fr en programmerare, eftersom det gr att denne inte behver uppnna hjulet p nytt fr varje nytt program som skall, t.ex. anvnda en rad Internet-funktioner eller spela upp MP3-ler. Det gr att programmeraren kan fokusera p det som just det hr programmet skall vara bra p.
32 minilogd anvnds bara i enanvndarlge, eftersom klogd normalt i sin tur anvnder syslogd-demonen, vilken inte startas i enanvndarlget.

195

Kapitel 5 GNU/Linux-projekten Just programbibliotek r en av den fria mjukvarans stora frdelar: eftersom alla projekt r ppna har de kunnat enas om ett antal bibliotek som i princip alla anvnder. Nr det gller proprietra mjukvaror r situationen tyvrr alltfr ofta den precis motsatta. Denna hga grad av komponentisering r, som vi sett tidigare, helt naturlig fr alla POSIXsystem, och bidrar terigen till att fokusera resurserna p att gra en viss sak p ett enda stlle och att gra det rtt p detta stlle. Vissa programbibliotek, som GNU C Library, r ndvndiga fr systemets funktion. All kommunikation med operativsystemets krna sker via detta och andra programbibliotek. Utan sdana bibliotek kommer programmen inte att fungera alls. Dynamiska programbibliotek (dynamiska lnkbibliotek, eller p engelska: dynamically linked libraries), laddas in i minnet och kopplas till ett program som anvnder det i samma stund som programmet krs. Detta sker naturligtvis av en anledning: det betyder nmligen att endast en kopia av programbiblioteket laddas in i datorns minne, oavsett hur mnga program som anvnder det. P s vis spar de dynamiska programbiblioteken minne, eftersom alla program som behver ett visst bibliotek kan utnyttja ett och samma bibliotek p en och samma plats i datorns minne. Detta gr att fria mjukvaror, som anvnder er sdana gemensamma bibliotek, r mer minnessnla. Nr det gller extremt vlanvnda bibliotek som GNU C Library r detta till och med ngot av en ndvndighet, annars skulle minnet snart ta slut. Dessa bibliotek nns normalt i /lib och /usr/lib och har namn i stil med libfoo.so, libfoo.so.1, libfoo.so.2 o.s.v.33 Programmen som behver lnkbiblioteken kommer att leta efter dem dr. Dessa namn, exklusive skvgen, lagras i det program som anvnder det dynamiska lnkbiblioteket, s om mitt program anvnder libfoo.so.1 s lagras detta namn i mitt program under kompileringen. Nr programmet sedan krs kommer det att leta efter en l med namnet libfoo.so.1 fr att lnka sig till. Operativsystemet ser d till att xa detta, och teranvnder ocks ett existerande programbibliotek i datorns minne om det redan r inladdat. Eftersom programmet nu har blivit beroende av det dynamiska lnkbiblioteket fr att fungera kommer det att tvrstanna om det inte kan hitta det. I praktiken betyder det allts, att om mitt program har anvnt libfoo.so.1 och en l med detta namn inte nns i /lib eller /usr/lib s kommer programmet inte att kunna starta, utan klagar istllet vid prompten ver att ett visst dynamiskt lnkbibliotek saknas. Om du ar33 Siffrorna efter .so-sufxet r en versionssiffra, som ndras nr ny funktionalitet tillkomer i programbiblioteket, som r av sdan karaktr att det gamla inte fungerar p samma vis utifrn sett, d.v.s. fr de program som anvnder det.

196

5.4 Arkitekturen i GNU/Linux-systemen betar i en grask milj syns inte alltid sdana felmeddelanden, och du mrker d bara att program som borde starta inte startas alls. Prova d att starta programmet frn ett skal i en terminal och se om det rapporteras ngon form av felmeddelanden. Operativsystemet kommer dock att leta p en plats till: nmligen i de kataloger som pekas ut av miljvariabeln $LD_LIBRARY_PATH. Specikt gller det, att om du installerat programvara i /usr/local s att programbibliotek har rkat hamna i /usr/local/lib s mste du ibland skriva ngot i stil med export LD_LIBRARY_PATH=/usr/local/lib innan dina program fungerar. Detta lser dock bara problemet tillflligt. Om du vill lsa detta permanent r det inte helt skert hur du skall g tillvga, men i de esta distributioner skall du editera len /etc/ld. so.conf och i denna lgga till skvgar till alla kataloger som innehller dynamiska lnkbibliotek och som ligger utanfr katalogerna /lib och /usr/lib.34 Efter detta mste du oftast kra kommandot ldcong fr att det nya innehllet i den len skall brja anvndas. Ett typisk problem i Red Hat och Fedora Core r att denna l inte pekar ut /usr/local/lib och att lokalt installerade programbibliotek drfr inte kan hittas.35 Som du ser kan dynamiska lnkbibliotek ge upphov till en del problem; problem som lser sig automatisk med distributionernas pakethanteringssystem, och detta r antagligen ocks en av de huvudsakliga anledningarna till att dessa paketeringssystem anvnds. (Dessa problem r srskilt vanliga om du sjlv kompilerat olika program.) Om du vill underska vilka dynamiska programbibliotek ett visst krbart program anvnder kan du skriva ldd foo. Detta kommer ven att upplysa om ifall systemet kunde hitta de anvnda programbiblioteken eller inte. Testa t.ex. med ldd /bin/ls. Du kommer (fga frvnande) att upptcka att de esta program anvnder GNU C Library (som ofta heter libc.so.6 eller ngot liknande). Frutom dynamiska lnkbibliotek nns det ocks statiska programbibliotek, vilket dremot aldrig vllar problem. Om de r installerade nns de ocks i /lib, /usr/lib, /usr/local/lib o.s.v., men har lnamn som libfoo.a. Nr en programmerare anvnder dessa kopieras koden in i programmet vid kompilering av programmet istllet fr att lnkas in nr programmet krs. Det kompilerade programmet kan sedan kopieras till en helt annan maskin och kras dr utan att det statiska programbiblioteket behver nns dr.
34 Det r oftast ocks s att len innehller kommandot include ld.so.conf.d/*.conf vilket gr det mjligt att peka ut varje bibliotekskatalog med en egen l som lggs i /etc/ld.so. conf.d 35 Red Hat och Fedora Core uppfattar sjlva inte detta som ett direkt fel, utan menar att det r s det skall fungera, eftersom en systemadministratr sjlv skall avgra hur /usr/ local skall anvndas, men andra distributioner uppfattar denna stndpunkt som felaktig.

197

Kapitel 5 GNU/Linux-projekten

5.4.6

Standardisering

ven om de olika distributionerna som beskrevs i kapitel 4 har det mesta gemensamt vad gller innehllet av GNU/Linux-program, r verkligheten inte s vacker nr det gller driftsmiljn. De olika distributionerna har byggts upp var fr sig och har era utmrkande egenheter. Vissa av dessa egenheter, t.ex. valet av bootstrap loader och installationsprogram, har ingen skadlig inverkan p driftmiljn. Andra saker r vrre. Vissa distributioner har valt att inte anvnda SysVinit. Vissa har valt att inte lgga alla program i /bin och /usr/bin, en del har lagt vissa kongurationsler i underkataloger till /etc, och det inofciella POSIX-ltrdet p sidan 56 r inte ngot som alla GNU/ Linux-system mste flja. Ett annat skriande problem r att de dynamiska lnkbibliotek som beskrevs i fregende avsnitt inte alltid nns tillgngliga. Sammantaget leder detta till att ett program som r kompilerat och installerat p en dator med en viss GNU/Linux-installation, exempelvis en viss Red Hat Linux-installation, inte utan vidare kan installeras och kras p en annan dator med, sg, en Debian GNU/Linuxinstallation. Det kan fungera att bara kopiera den krbara programlen frn /usr/bin till en annan dator, men r programmet ngotsnr avancerat, r risken stor fr att det inte fungerar alls. Att alla som utvecklar GNU/Linux-program skall behva paketera sina program fr alla upptnkliga GNU/Linux-distributioner r omnskligt. De brukar drfr ofta nja sig med att tillhandahlla paket bara fr ett par, och strunta i alla andra, eller uppmana dem att kompilera frn kllkod (se kapitel 8). Denna situation gynnar de stora distributionerna p bekostnad av de sm, och r drfr inte acceptabel. Av den hr anledningen har Linux Standard Base[18] skapats gemensamt av medlemmarna i Free Standards Group dr bland andra IBM, Hewlett-Packard, Intel, Red Hat, MandrakeSoft, SuSE AG, och Linus Torvalds arbetsgivare OSDL (Open Source Development Lab)36 ingr. ven om detta r en intresseorganisation fr de ingende fretagen har initiativet vunnit visst gillande, och exempelvis Debian GNU/ Linux fljer de av riktlinjerna som de anser vara meningsfulla. Linux Standard Base denierar bland annat: Att ett antal programbibliotek skall nnas tillgngliga. Dessa r bland annat GNU C Library (libc), GNU Math Library (libm), POSIX-trdar (libpthread) GNU C Compiler:s eget bibliotek, kryptofunktioner, C++-standardbiblioteket, ett autentiseringsbibliotek (libpam) o.s.v. o.s.v.
36 I

OSDL ingr sedan bl.a. IBM och Hewlett-Packard igen. . .

198

5.4 Arkitekturen i GNU/Linux-systemen Att ett paketeringssystem, som i praktiken r Red Hat:s RPM, fast ngot avskalat, skall anvndas. Detta gillas inte speciellt mycket av Debian-utvecklarna, men RPM-paket kan i ngon mn numera anvndas ven i Debian. Att ett antal kommandoradsverktyg skall nnas, varav de esta r desamma som i POSIX-standarden, men ngra extra r tillagda, t.ex. kommandot lsb_release som frvntas rapportera vilken version av Linux Standard Base som stds av operativsystemet. Att verktygen skall anvnda vxlar p formen kommando --vxel istllet fr kortformer, vilket skall frsts som att standarden bara specicerar beteendet med dubbla bindestreck om du anvnder dina gamla hederliga enkelstreck som i ls -a s kommer beteendet att vara odenierat genetemot standarden (ven om det naturligtvis kommer att fungera bra, eftersom du med strsta sannolikhet kr GNU Fileutils ls-kommando). Frutom vad som sagts generellt om kommandon i avsnitt 2.3.1 gller fr kommandona i GNU/Linux-sviten att de ofta ven accepterar en extra pratig variant av vxlar, till exempel kommando --password=fnord i stllet fr den mer POSIX-lika syntaxen kommando -p fnord dr alla vxlar bestr av endast en bokstav. Att lsystemets struktur rekommenderas flja Filesystem Hierarchy Standard. Att krniver i stil med de som nns i SysVinit skall anvndas. Att ett antal miljvariabler fr att ta reda p i vilket tillstnd maskinen benner sig, och vad som nns anslutet, t.ex. ntverk. Med hjlp av dessa standardfunktioner r det tnkt att det skall bli mjligt att tillverka ett enda RPM-paket av en mjukvara, som sedan skall kunna installeras p vilket GNU/Linux-system som helst, bara det fljer Linux Standard Base. Naturligtvis nns det en mngd GNU/Linux-system fr vilka det vore helt meningslst att flja Linux Standard Base. Specialsystem, som brandvggar, X-terminaler eller olika inbyggda system r exempel p sdana system.

5.4.7

Filsystemets hierarki

Filesystem Hierarchy Standard[10] r GNU/Linux-vrldens frsk att standardisera det inofciella ltrdet frn POSIX-lsystemen. Denna 199

Kapitel 5 GNU/Linux-projekten standard r utformad s att det i princip skall kunna anvndas fr andra operativsystem n GNU/Linux, och drfr har de saker som r specika fr just GNU/Linux-system yttats till ett eget appendix. Filesystem Hierarchy Standard r avsedd fr utvecklare, men r du nyken s skadar det aldrig att lsa den. Ett par specialiteter nns det dock i denna specikation: /proc skall innehlla ett pseudo-lsystem fr processinformation. Numera anvnder Linuxkrnan detta till lite allt mjligt, svl processer som information om maskinvaran och processorns temperatur lagras hr. (Se vidare nsta avsnitt som handlar specikt om /proc.) /sys r ytterligare ett pseudo-lsystem som tillkom med version 2.6.0 av Linuxkrnan. Detta har som syfte att visa en hierarkisk vy av hur olika hrdvaruenheter r anslutna till systemet. Delar av informationen i /sys fanns tidigare i /proc men yttas nu successivt ver till /sys. /usr/src r en plats dr du kan lagra kllkod till saker och ting. Mest r detta avsett fr kllkod till olika paket och till sjlva Linuxkrnan. Andra program som du kompilerar sjlv kan du lgga i /usr/local/ src.

5.4.8

Enhetslerna i /dev

De enhetsler som nns i /dev i lsystemet och som presenterades p sidan 72 r i GNU/Linux nra kopplade till motsvarande modul i krnan. Du kan underska dem genom att g ned i katalogen /dev och skriva ls -al. Detta kommer att ge en hel del information om blockenheterna, t.ex.:
crw-rw-rwbrw-rw---brw-rw---crw-rw---crw------1 1 1 1 1 root sofie root root sofie root floppy disk uucp root 1, 3 30 2, 0 30 3, 0 30 4, 65 30 5, 1 16 jan 2003 jan 2003 jan 2003 jan 2003 jan 02.45 null fd0 /dev/hda /dev/ttyS1 /dev/console

Den frsta bokstaven lngst till vnster som anger ltyp anger som vntat c (frn engelskans character) fr teckenenheter och b fr blockenheter. Vi ser att anvndaren soe r inloggad p datorns konsoll, eftersom hon ger /dev/console-len. Hon ger ocks av naturliga skl exskiveenheten, eftersom ven denna sitter fastskruvad i konsollen. Vi ser ocks att vissa grupper (disk, oppy, uucp) har denerats i systemet fr att hlla reda p vilka anvndare som har rtt att komma t 200

5.4 Arkitekturen i GNU/Linux-systemen olika enheter. Filrttigheterna ger ju i sin tur tillgng till len fr vissa grupper av anvndare, och eftersom enheten representeras av en l s kommer lrttigheterna att styra tillgngen till enheten. De tv siffrorna som fljer direkt efter gruppnamnet, p den plats dr llngden brukar st fr en vanlig l, kallas strre enhetsnummer respektive mindre enhetsnummer. Dessa nummer visar hur Linuxkrnan kopplar ihop en enhetsl med grnssnittet p en modul i krnan: nummer 1, 2, 3, 4 och 5 i detta exempel r motsvarande grnssnitt mot krnan. Eftersom enheter i exemplet r viktiga och s att sga grundlggande fr systemet, s har de lga nummer. De mest rudimentra, som /dev/null och /dev/zero har nummer 1, sedan numreras de uppt. Modulen som har hand om diskettstationen anvnder nummer tv, o.s.v. Det mindre enhetsnumret r ett lpnummer. Fr ATA/IDE-hrddiskar har exempelvis /dev/hda lpnummer 0, medan partitionerna p hrddisken /dev/hda1, hda2, hda3 etc. fr nummer 1, 2, 3 o.s.v. Nsta ATAhrddisk /dev/hdb anvnder samma grnssnitt men brjar numreringen fr lpnumret p 64. (Detta r inte det enda sklet till att du skall undvika att ha er n 63 partitioner p din hrddisk, men s gott som ngot.) En drivrutin i krnan talar om vilket strre enhetsnummer den avser att anvnda (om den vill kommunicera med operativsystemet och anvndaren p detta vis) och fr sig sedan tilldelat ett mindre enhetsnummer beroende p i vilken ordning de olika drivrutinerna laddats in i krnan och aktiverats. Nr ett program i systemet sedan ppnar motsvarande enhetsl kommer tecken som lses eller skrives till denna att skickas till drivrutinen fr bearbetning. Drivrutinen kommer drefter att skta hanteringen av hrdvaran (eller annan funktion) som den har till uppgift att handha. Det nns ocks ett antal grnssnitt som har tilldelade grnssnittsnummer, men som inte nns i /dev-delen av lsystemet. Dit hr framfr allt ntverksgrnssnitten eth0, ppp0, etc. Det nns tv olika stt att hantera /dev-hierarkin. Det gamla sttet, som frekommer i mnga distributioner, innebr att denna del av lsystemet fylls med i princip alla tnkbara enheter som ver huvud taget kan komma att dyka upp. Det innebr att om du skriver ls /dev s ser du en lista p hundratals eller tusentals tecken- och blockenhetsler som till strsta delen r helt oanvndbara, eftersom du inte har dem. Om ngon av dessa saknas kan det hnda att du blir tvungen att skapa dem sjlv. Du mste d veta vilket namn som din enhetsl skall ha, t.ex. foo0, och skapar den d med:
cd /dev ./MAKEDEV foo0

201

Kapitel 5 GNU/Linux-projekten Som synes ligger det ett program med namnet MAKEDEV med stora bokstver i /dev, som bara r avsett fr att skapa nya enhetsler. Om du inte vet vad din enhet skall heta, eller har skrivit en helt ny drivrutin eller ngot ditt, kan du anvnda programmet mknod, frutsatt att du vet vilket strre och mindre enhetsnummer drivrutinen anvnder. Om din drivrutin r en teckenenhet och har strre enhetsnummer 42 och mindre enhetsnummer 5, skapar du enhetslen foo med:
cd /dev mknod foo c 42 5

Detta system med mycket stora mngder underliga enhetsler fasas successivt ut till frmn fr ett system som dynamiskt skapar sdana ler nr enheter detekteras av Linuxkrnan. Detta system gr under namnet udev (detta namn betyder inget speciellt). Om din installation av Linux anvnder udev kommer programmet /sbin/udev att kras varje gng en ny enhet detekteras, varefter en uppsttning regler i /etc/udev/ rules.d tillmpas fr att korrekt namnge motsvarande block- eller teckenenhet.37 Du kan direkt se detta p att det r frhllandevis f ler i /dev. Vissa distributioner anvnder en blandning av det gamla och det nya systemet, s att det r ganska mnga ler i /dev men strre delen nd hanteras p det nya sttet. Det nyare systemet med udev ger ven anvndare mjligheten att lgga till egna regler s att en viss enhetsl har ett konsistent namn, t.ex. att en specik kamera kan dyka upp som /dev/hasselblad varje gng den ansluts, snarare n som ett numrerat lpnummer under /dev/sdaN. Att skriva sdana regler r emellertid ngot komplicerat.

5.4.9

Krn- och processkontroll /proc

/proc r som en ppning in i Linuxkrnans maskinrum. Det r en katalog med ler och underkataloger som inte r riktiga ler eller kataloger. Alla ler har storleken noll, och innehllet i kataloger och ler ndrar sig hela tiden fr att terge systemets tillstnd.38 Ursprungligen var /proc avsett fr att ge en listning ver processer som krs i krnan, men har nu blivit mycket mer. Alla ler som ligger i /proc r textler, s du kan titta p dem med cat foo eller less foo, men formatet r ibland kryptiskt, eftersom det r meningen att ett program skall lsa av informationen.
37 Dessa regeller namnges och tillmpas i en ordning som r identisk med uppstartlerna fr init-processens skript fr olika krniver i /etc/rc.N, se avsnitt 5.4.3 p sidan 189. 38 I sjlva verket r det naturligtvis inte s att innehllet ndras, de genereras helt enkelt nr en anvndare frsker titta p dem.

202

5.4 Arkitekturen i GNU/Linux-systemen Om du gr in i katalogen /proc kan du se tv saker: frst ett antal kataloger med siffernamn. Dessa kataloger motsvarar de processer som kr p din dator just nu. Om du skriver ps vet du vilka processnummer som hr till just ditt skal,39 och p s vis kan du underska dina processer nrmare. Om du gr in i katalogen med ditt processnummer, kan du se en hel del spnnande och en del mindre spnnande saker: cmdline r en l som innehller namnet p programmet som startade denna process, d.v.s. vad som skrevs i skalet, om du startat processen sjlv. Om du inte startat processen sjlv, s r det namnet p den programl som systemet har anropat fr att starta processen. cwd (frn engelskans current working directory) r en lnk till processens arbetskatalog. Om du utfr kommandot cd till denna lnk hamnar du i processens arbetskatalog, ngonstans i lsystemet. Om du har lst C.S. Lewis bok Min morbror trollkarlen minns du kanske att huvudpersonerna kommer till en skog med olika dammar som ppnar drrar mellan olika vrldar. cwd r som dammarna i skogen: du kan ta dig in i olika processers vrldar. environ r en lista ver miljvariabler och de vrden de hade i skalet d processen startades. Denna lista r avdelad med NULLtecken40 och ser inte riktigt frisk ut ifall du tittar p den med t.ex. cat, prova med cat environ | tr \0 \n (det var inte jag som kom p de larviga NULL-tecknen!) exe r en lnk i lsystemet till den exekverbara l som startade denna process. maps talar om vart i minnet de olika delarna av processen har hamnat, i synnerhet var de olika dynamiska lnkbiblioteken har laddats in. status ger information om processens tillstnd och hur mycket minne den tar upp totalt. Det nns ven en l med namnet statm som ger samma typ av information fast i mera kryptisk form. Andra delar av /proc ger annan information. Ngra ler ligger direkt i /proc, och innehller en hel del information som r relativt obegriplig fr den som inte kan en del om IBM PC-kompatibel hrdvara, hr r ngra av dem:
39 I 40 NULL

sjlva verket hmtar sjlva kommandot ps ocks sin information frn /proc. r tecknet med teckenvrde 0 (noll)

203

Kapitel 5 GNU/Linux-projekten /proc/cpuinfo talar om allt som r vrt att veta om processorn i din dator, som vilket mrke och vilken revision det r, om det nns ngra speciella egenskaper eller fel med den (tidiga versioner av Intels Pentium-processor hade inbyggda fel som mste undvikas), hur stort cache-minne den har, vilken hastighet den krs p o.s.v. Om du vill veta hur snabb en oknd dator r, och vilken typ av processor som sitter i den, s r det denna l du skall titta i. /proc/devices talar om vilka enheter (teckenenheter och blockenheter) som r anslutna till systemet. Dessa nns ocks normalt i /dev i en eller annan form, men hr representeras de av en siffra. /proc/dma ger information om vilka DMA-kanaler som r uppsatta fr datorns buss. /proc/lesystems ger information om vilka lsystemsmoduler som r installerade i krnan, och om de r anslutna till ngon enhet. (Se mer i avsnitt 5.4.10.) /proc/interrupts ger upplysningar om vilka avbrott som kongurerats i maskinen, och vad de anvnds till. /proc/ioports talar om vilka hrdvaruportar som kongurerats i datorn. Portarna som avses r inte detsamma som TCP/IP-portar eller garageportar, utan minnesomrden i datorns frsta 64 kilobyte minne som kan anvndas av olika instickskort och liknande. Att skriva eller lsa till dessa portar r den huvudsakliga kommunikationsvgen fr krnan nr den vill kontrollera datorns hrdvara. /proc/meminfo ger information om hur minnet i din dator anvnds. /proc/modules ger samma information om vilka moduler som laddats in i krnan som kommandot lsmod. /proc/pci ger uppgifter om vilken hrdvara som r ansluten till datorns PCI-buss. Normalt kr du dock kommandot lspci fr att ta reda p detta, eftersom det senare ger en mer kompakt och lttlst utskrift. /proc/swaps talar om vilken vxlingsenhet (eller vilka vxlingsenheter) som anvnds fr virtuellt minne. I /proc kan du ven hitta underkataloger med information fr SCSIenheter, USB, o.s.v. I princip alla delar av krnan som du vljer att kompilera in eller ladda in i form av moduler kan skapa en eller era ler eller kataloger hr. 204

5.4 Arkitekturen i GNU/Linux-systemen En viktig katalog r /proc/sys dr alla parametrar i krnan nns tillgngliga och kan bde underskas och ndras. (De andra delarna av /proc r skrivskyddade och kan inte ndras.) De esta parametrar som nns hr stlls in under uppstart av systemet, och vill du ndra dem nns kommandot sysctl som kan utfra ndringar i /proc/sys p ett strukturerat vis (se nedan). Till exempel kanske du vill ndra antalet maximalt samtidigt ppna ler i systemet: detta lagras i /proc/sys/fs/le-max. Fr att underltta fr anvndare att f ut information frn det ganska kryptiska formatet i /proc (och via direkta anrop till Linuxkrnan) har tre programpaket utvecklats: Psmisc, Procinfo och Procps. Dessa r inte alltid installerade i alla distributioner, och d kan det krvas att du frst installerar dem fr hand. Eftersom de inte r livsndvndiga hamnar de normalt i katalogen /usr/sbin. Psmisc r relaterat till enbart processer och processkontroll och innehller tre viktiga och bra kommandon: killall programnamn ddar alla processer som r instanser av ett visst program. Om du exempelvis har startat sju olika EMACS-editorer, s kommer kommandot killall emacs att avsluta dem alla. Observera att om du kr detta kommando som root-anvndare, s kommer alla andra anvndares eventuella EMACS-sessioner ocks att avslutas, vilket kanske inte var vad du nskade. Liksom det vanliga kill-kommandot kan en viss signal anges, t.ex. killall -9 emacs. Frvxla aldrig detta kommando med kommandot killall5, som r en implementation av ett UNIX System V-liknande killall-kommando: detta ddar alla processer, s om du rkar vara root kommer hela ditt system att stanna. I annat fall blir du bara utslngd. Detta kommando skall bara anvndas av init nr det r dags att stnga ner systemet. pstree ger en grask trdliknande bild som visar hur de olika processerna r slkt med varandra i frlder-barn-relation. Urfrldern r alltid processen init. fuser foo.txt tar reda p vilken process som anvnder len foo.txt just nu, om ngon process gr det i annat fall returneras bara en tomrad. Procinfo innehller program avsedda fr att f ut information om hrdvaran i systemet: lsdev ger information om vilka hrdvaruenheter som r anslutna till vilka portar. 205

Kapitel 5 GNU/Linux-projekten procinfo (med samma namn som programpaketet) ger information om systemets allmnna hlsa: hur mycket minne som r anvnt (bde fysiskt och virtuellt), nr systemet startades och en uppskattning om belastningen fram till nu, samt vilka avbrott som r kongurerade och vilka uppgifter de har. socklist ger uppgift om vilka TCP/IP-socklar som r ppna p systemet, och vilka processer (ofta demoner) som anvnder dem. Detta kommando r mycket bra fr att hlla ett ga p ntverksskerheten, men det vanligaste kommandot fr detta ndaml r netstat som ger en nnu trivsammare sammanstllning. (Ls mer i kapitel 9 om ntverket.) Procps-paketet r specikt avsett fr att plocka fram information som berr systemets processer, men viss funktionalitet verlappar Procinfo: free talar om hur mycket minne som r anvnt, och hur mycket som r ledigt. Det minne som kallas swap r detsamma som det virtuella minnet. Du skall inte drabbas av panik om det ser ut som att nstan hela minnet r upptet av olika processer; Linux r skrivet fr att utnyttja minnet maximalt om det gr, och kommer drfr att lgga in s mycket efterfrgad data som r fysiskt mjligt i minnet, t.ex. ler som begrts frn hrddisken mnga gnger. Om det fysiska arbetsminnet behvs till ngot annat kommer ondiga omrden att frigras eller kopieras ut till virtuellt minne. Det verkliga hotet mot minnet uppstr d alla de processer som samtidigt krs i datorn inte fr plats i minnet: d kommer Linux att frska skyfa hela processer ut- och in ur det virtuella minnet, vilket manifesterar sig i en hysterisk diskaktivitet: systemet harvar. Du brukar kunna hra p din hrddisk om detta intrffar: det knattrar ngot alldeles frfrligt. Detta fenomen r inte ovanligt p datorer med litet fysiskt minne! pgrep r ett smidigt program fr att lista processnummer enligt vissa villkor, som vilket namn de har eller vilken anvndare som startat processen. Har vissa likheter med POSIX-kommandot ps och r vl till viss del verdigt. pkill kan dda en process med utgngspunkt frn namnet p den programl som startade processen. Likheter med killall och POSIX kill, men terigen med vissa mindre variationer. POSIX kill kan 206

5.4 Arkitekturen i GNU/Linux-systemen inte dda processer med utgngspunkt frn programlernas namn, till exempel. pmap PID ger information om exakt vilka minnesareor som anvnds av en viss process, med utgngspunkt frn dess processnummer. (Hmtas relativt ofrndrat frn len /proc/<PID>/maps.) skill r ytterligare ett kommando som gr liknande saker som kill, killall och pkill redan gr. Programmet har dremot inget med skicklighet att gra. snice har likheter med POSIX nice, men kan vlja processer efter namn eller anvndare, t.ex.: prioritera ned alla processer som tillhr anvndaren bertil: snice +2 -u bertil, eller prioritera ned Mozilla: snice +7 -c mozilla-bin. Vxlarna hr, -u och -c kan oftast uteslutas, eftersom snice r listigt nog att lista ut om det rr sig om en anvndare eller ett namn p en programl som startat en process, helt p egen hand. sysctl kan modiera parametrar till krnan, d.v.s. vrden i /proc/sys under drift. Du kan ju sklart g in i /proc/sys och ndra vrdena direkt i /proc-lsystemet, men vill du det?41 Exempelvis kan du ndra namnet p din dator (som under uppstart stts till ett visst vrde) med sysctl -w kernel.hostname=foobar, och iaktta resultatet med sysctl -n kernel.hostname. Fr att ha en aning om vad du kanske vill skruva p fr du sklart underska katalogen /proc/sys. Parametrarna till sysctl r som du ser p formen katalog.nyckel, dr katalog r en underkatalog till /proc/sys. tload ger en graf som propagerar frn vnster till hger och som visar systemets belastningsgrad med grovkornig grak. top r ett populrt kommando som dessutom nns i de esta POSIXsystem. Detta ger en lista ver processer som kr just nu, ordnad efter hur mycket av processorns kapacitet de tar upp, d.v.s. en topplista. S fort du tycker att din dator knns seg, och undrar vad gr den nu? r det dags att kra top.
41 Folk som vill briljera kan ibland f fr sig att ndra en krnparameter med ett kommando av typen echo foobar > /proc/sys/kernel/hostname, vilket inte r ngon strre pong gentemot sysctl.

207

Kapitel 5 GNU/Linux-projekten Kommandot krs s att listan uppdateras var 5:e sekund. Om du vill kra kommandot med maximal uppdateringsfrekvens kan du skriva top q. Detta gr att systemet tar all ledig tid som nns fr att visa processinformation. Om det inte r processorns belastning som r askhalsen fr tillfllet kan top ven visa en topplista ordnad efter hur mycket minne som processerna anvnder o.dyl. genom att du, medan top krs, trycker p ngon av tangenterna: P (d.v.s. hll nere SHIFT-tangenten och tryck p tangenten P) sorterar efter hur mycket av processorn som processerna anvnder just nu. (Standardlge.) M sorterar processerna efter hur mycket minne de anvnder. N sorterar efter process-ID-nummer. A sorterar processerna efter hur gamla de r. T sorterar processerna efter hur mycket av processorn de anvnt totalt, d.v.s. de tyngsta programmen ver tid. Detta inkluderar naturligtvis bara program som fortfarande krs. Demoner och processer som alltid r igng (t.ex. fnstersystemet X) hamnar ofta hgt upp. Listan frn top uppdateras kontinuerligt i ditt terminalfnster s att du kan se aktiviteten i ditt system utvecklas successivt. Avsluta programmet genom att trycka p tangenten q (quit). uptime r ett simpelt kommando som talar om hur lnge systemet varit i drift sedan det senast startades. (Somliga tvlar med varandra om att ha lngst uptime, och undviker i det lngsta att starta om datorn.) hdparm r ett separat program som anvnds fr att kongurera hrddiskar, CD-ROM-enheter och andra enheter som anvnder IDE/ ATA-bussen.42 Hdparm kan skruva p alla mjliga parametrar fr dessa enheter, men det problem som anvndare normalt anvnder hdparm fr att lsa r lngsamhet. Fr att tgrda lngsamhet med hdparm brukar kommandot hdparm -d1 /dev/foo lsa problemet. Om du r mera risktagande kan du prova hdparm -d1 -X33 /dev/foo. Detta r ibland ndvndingt fr att somliga DVD-lsenheter skall kunna spela upp en lm i normalt tempo!
42 Det egentliga namnet p denna buss r ATA (Advanced Technology Attachment) men de esta anvnder nd den gamla beteckningen IDE (Integrated Drive Electronics).

208

5.4 Arkitekturen i GNU/Linux-systemen (hdparm -d1 -X33 /dev/dvd, eller /dev/cdrom.) ven vanliga hrddiskar kan vara lngsamma, men d r det desto farligare med sdana experiment, eftersom dessa ocks ska skriva till disken, och d kan saker g ordentligt fel om en felaktig parameter angivits, detta gller i synnerhet -XNN-parametern.43 Om du vill veta mer om /proc och hur detta lsystem anvnds, nns ett utfrligt dokument i Linuxkrnans kllkodstrd skrivet av utvecklare vid SuSE, se [5].

5.4.10

Filsystemstyper

Innan vi sger ngot om lsystemtyper i Linuxkrnan mste vi specicera vad vi menar med detta ord. Ordet lsystem har nmligen i GNU/ Linux-system tv skilda betydelser: Betydelse 1: det system/hierarki av ler som bildas av kataloger, vanliga ler, lnkar, symboliska lnkar, block- och teckenenheter o.s.v. (Se avsnitt 2.3.5 p sidan 51.) Betydelse 2: det system som anvnds fr att organisera lernas innehll p ett visst lagringsmedia ssom den magnetiska ytan p hrddiskar, disketter o.s.v. Den del av Linuxkrnan som har hand om bda dessa delar kallas Virtual Filesystem, det virtuella lsystemet eller kort och gott VFS.44 I kllkodstrdet fr Linux heter samma del fs. Principen fr VFS illustreras i gur 5.7. Vi vet att en mngd metadata skall lagras tillsammans med len, ssom gare, tid d den skapades etc. Detta r lsystemet i betydelse nr 1. Sdan information lagras av krnan i strukturerad form i inoder, och sjlva datan i len, text, ljud eller vad det nu r, lagras ocks i inoder. Inodernas struktur tillhandahlls av VFS. VFS skickar sedan denna struktur bestende av enbart inoder vidare till en modul i Linuxkrnan som har hand om ett lsystem i betydelse nr 2 och organiserar dessa inoder p ett listigt vis p ngon blockenhet. Blockenheten dr ettorna och nollorna till sist hamnar kan vara det magnetiska skiktet p en hrddisk, men ocks ngon disk som anslutits ver ntverket, en USB-nyckelring eller liknande saker som kan lagra data som en lng bitvektor. (Hlremsor eller DAT-band fungerar utmrkt, men r ganska lngsamt.)
mer information om dessa magiska vxlar, ls manualsidan fr hdparm. att ytterligare frvirra anvndaren har skrivbordshanteraren GNOME ocks en lsystemliknande komponent, som ocks heter VFS. (KDE:s motsvarighet heter IOSlaves.) Frvxla inte. . . Ja det r kanske inte s ltt.
44 Fr 43 Fr

209

Kapitel 5 GNU/Linux-projekten

Figur 5.7: Principen fr det virtuella lsystemet, VFS. De ler anvndaren upplever sig manipulera omvandlas till s.k. inoder, vilka r en strm av strukturerad data. Denna data struktureras n en gng i ett av era mjliga lsystem, som i sin tur ansluter till en viss blockenhetsl.

Linux virtuella lsystem tillter att era olika lsystem av typen 2 anvnds parallellt, d.v.s. du kan t.ex. ha bde Linux-, Windows- och Macintosh-lsystem monterade i ett och samma ltrd. Fr en anvndare r de alla ett och samma ltrd. Filsystem fr hrddiskar Linuxkrnan har std fr era alternativa system nr det gller att organisera lerna p en fysisk enhet. Det frsta lsystemet fr hrddiskar var Minix eget lsystem, eftersom det var p ett sdant som krnan ursprungligen utvecklades. Detta lsystem hade stora begrnsningar (t.ex. kunde det bara hantera blockenheter med en storlek upp till 64 megabyte), och drfr utvecklades redan r 1992 ett utkat lsystem eller ExtFS, som det kom att heta. Inte heller detta var srskilt fulldigt, och drfr utvecklade Rmy Card, Theodore Tso och Stephen Tweedie under 1993 ett andra utkat lsystem, Ext2. Detta r alltjmt det vanligaste och frmodligen snabbaste lsystemet i Linuxkrnan. Problemet med Ext2 var att det inte stdde journalfring, vilket framfr allt r viktigt att ha om ngot fel uppstr p en hrddisk under drift eftersom tiden det tar att g igenom en smutsig hrddisk (som stannat under drift) r proportionell mot diskens storlek eftersom hela utrymmet mste skas igenom. Om ett Ext2-lsystem stannar under drift kan det ta era timmar att ter ta det i drift om en modern, stor hrddisk anvnds. Nr hrddiskarna var sm var detta inget stort problem, 210

5.4 Arkitekturen i GNU/Linux-systemen


Vanliga lsystem
Kortnamn ext2 ext3 reiserfs jfs xfs minix romfs isofs udf msdos vfat ntfs hfs proc Namn Second extended lesystem Journalling second extended lesystem ReiserFS IBM Journalled Filesystem SGI IRIX Filesystem Minix lesystem ROM Filesystem CD-ROM lsystem, High Sierra File System med Rockridge extensions, ett CD-ROM-skiveformat som anvnds av era POSIX-system DVD-ROM lsystem MS-DOS (riktigt gamla versioner) Utkat MS-DOS lsystem med lnga lnamn (introducerat med Windows 95) New Technology Filesystem, anvnds av Windows NT, Windows 2000 och Windows XP Apple Macintosh-lsystem anvnds av /proc-lsystemet

Ntverkslsystem
Kortnamn nfs smbfs cifs ncpfs Namn Network File System (Sharing) protocol, standardlsystem fr ntverk i POSIX-milj Server Message Block, Microsoft Windows ntverkslsystem Avancerade delar av Microsofts utkningar av Server Message Block Novell NetWare Core Protocol-lsystem

Figur 5.8: Ngra vanliga lsystem som stdjs av Linuxkrnan. Det nns er.

men ju strre diskarna blev, desto strre blev ocks problemet med att behva vnta medan disken kontrollerades. Ett annat problem var att Ext2 skalade dligt: i system med hundratals diskar och terabyte av data organiserade enligt RAID45 -principen brjade Ext2 att bete sig riktigt dligt. Flera skribenter inom Linuxvrlden ptalade att denna brist kunde hindra Linux frn att anvndas i stor skala, och drfr infrdes i senare versioner av Linuxkrnan (2.4-serien samt version 2.6) en hel skog av journalfrande lsystem: Ext3 r en utkning av Ext2 som kan hantera journalfring, ReiserFS r ett lsystem utvecklat av Hans Reiser, en person som redan tidigt gick ut med mycket bestmda sikter om hur lsystem skulle skrivas. JFS r ett lsystem utvecklat av IBM och XFS r Silicon Graphics id om hur det hela skall sktas. Om du installerar GNU/Linux hemma p en skrivbordsdator r det lite hugget som stucket vilket lsystem du vljer. Jag skulle personligen i dagslget vlja Ext3 eller ReiserFS. Det nns ven en begrnsad mjlighet att anvnda Microsoft Windows lsystem NTFS om detta nskas, men denna modul r frmst avsedd fr att montera och lsa och skriva till Windows-lsystem om det skulle behvas. Denna modul r i dagslget inte speciellt vlutvecklad och kan t.ex. i skrivlget inte skapa nya ler i NTFS-system, bara modiera bentliga ler.
45 Se

sidan 421

211

Kapitel 5 GNU/Linux-projekten Filsystem fr ntverk Utver de lsystem som r avsedda att anvndas fr att lagra information p hrddiskar fastskruvade i den fysiska dator dr Linuxkrnan krs, nns ocks ett antal ntverkslsystem tillgngliga i krnan. Dessa krver att en annan dator tillhandahller lagringsutrymme fr ler, och de skickas sedan via ntverket till den datorn. Eftersom det handlar om datorer i ntverk tillmpas klient-serverterminologi p dessa system. Datorn som tillhandahller lsystemet kallas lserver, medan de datorer som ansluter sig till den kort och gott kallas klienter. Fljande ntverkslsystem stdjs direkt av Linuxkrnan: NFS eller Network File System (ibland ven kallat Network File Sharing) r det mest ursprungliga ntverkslsystemet i POSIX-vrlden. Det uppfanns av Sun Microsystems och anvnder undertill ntverksprotokollet UDP, inte TCP, som s mnga andra protokoll. (Den nyare versionen NFSv4 har dock std fr TCP.) NFS r standardiserat av IETF (Internet Engineering Task Force) i form av RFC 1813 och RFC 1310. (Se sidan 300 om ntverksprotokoll vid behov.) Version 2.6.0 av Linuxkrnan (och hgre) har std fr NFSv4, en frbttrad variant av NFS-protokollet.46 SMB eller Server Message Block r det ntverksprotokoll som Microsoft Windows och ven den fria lservern Samba anvnder. Vissa avancerade delar av detta protokoll kallas i Linuxvrlden fr CIFS (Common Internet Filesystem), men det r ocks Microsofts eget namn p SMB och allt vad det innebr, s det r upplagt fr frvirring. (Se vidare sidan 413.) NCP eller NetWare Core Protocol r Novells eget ntverkslsystemprotokoll. Utver dessa nns ett experimentellt std fr andra, udda men lovande ntverkslsystem, t.ex. AFS (Andrew Filesystem), Coda, Intermezzo m.. Appletalk, som anvnds av en del Macintosh-datorer, stds ocks. Filsystemkommandon Fr att hantera lsystemen nns en del oundgngliga kommandon. Dessa inkluderar inte kommandon fr att hantera ler p det vis som
46 Se vidare avsnitt B.2 p sidan 420. Mnga har starka sikter om kvalitn, eller snarare bristen p kvalitet, hos NFS. Rich Sladkey som var den frste att implementera NFS i Linuxkrnan kallar det ett urldrigt och hjrnskadat protokoll (min versttning)[21]

212

5.4 Arkitekturen i GNU/Linux-systemen en anvndare gr (t.ex. ls och mv) eller de kommandon som partitionerar hrddiskar (som fdisk) utan r specikt inriktade p just lsystemen. De esta av dessa kommandon krver att du agerar som root: mount foo bar anvnds fr att montera blockenheten foo p platsen bar i lsystemet. Exempel:
mount /dev/hdb /mnt/foo

Kommandot monterar hela hrddisken hdb som /mnt/foo. Katalogen /mnt/foo mste redan nnas (och om det nns andra ler eller kataloger dr kommer de helt sonika att gmmas, d.v.s. de blir osynliga i lsystemet) och blockenheten /dev/hdb mste innehlla ett fungerande lsystem av en typ som Linuxkrnan kan hantera. Ett annat exempel:
mount /dev/dvd /mnt/cdrom

Detta monterar blockenheten /dev/dvd som normalt skall vara en DVD-lsare, p monteringspunkten (= katalogen) /mnt/cdrom. terigen mste det verkligen nnas en CD-ROM- eller DVD-skiva i DVD-lsaren, den mste ha ett acceptabelt lsystem, och katalogen dr den skall monteras (monteringspunkten) mste nnas, men fr grna vara tom. Om du vill ange att en speciell lsystemtyp anvnds p den enhet som pekas ut kan du skriva t.ex. mount -t vfat /dev/hda2 /mnt/ dos fr att montera andra partitionen p frsta IDE-hrddisken i monteringspunkten /mnt/dos, om detta har lsystemtypen VFAT, vilket r Microsoft Windows 95 standardlsystem. Tillvgagngssttet r utomordentligt om du har mer n ett operativsystem p din hrddisk och vill kunna komma t lerna i det andra operativsystemet frn GNU/Linux. Om du vill ha era egna monteringspunkter av det hr slaget r det bara att skapa dem med mkdir i /mnt, detta stlle r reserverat fr just sdant. Mount har en kongurationsl i /etc/fstab, lsystemtabellen, dr instllningar fr olika partitioner br lagras, om avsikten r att de skall monteras mer n en gng. Raderna i /etc/fstab innehller sex olika parametrar avskilda med mellanslag, och har fljande innebrd, t.ex:
/dev/hdb /mnt/data ext3 defaults 0 0

213

Kapitel 5 GNU/Linux-projekten Detta betyder att blockenheten /dev/hdb skall monteras p monteringspunkten /mnt/data, att den innehller ett lsystem av typen Ext3, och att den skall monteras med standardaggor (det nns mnga olika aggor, se man mount eller man fstab). De tv sista siffrorna betyder att enheten inte skall dumpas med kommandot dump respektive att lsystemet inte behver kontrolleras med fsck vid uppstart. Med hjlp av /etc/fstab-len kan mount p egen hand avgra hur ett visst lsystem skall monteras, s om ovanstende rad r inlagd rcker det med att skriva mount /dev/hdb eller mount /mnt/data fr att montera den hr enheten i /mnt/data. Nr systemet startas upp kommer alla lsystem som r uppradade i /etc/fstab att monteras, om inte parametern noauto angivits (som t.ex. fr CD-ROM-lsaren). Har du ingen aning om vilket lsystem som kommer att anvndas fr en viss enhet kan du skriva auto som lsystem, s kommer mount att testa sig fram till ett som (frhoppningsvis) fungerar. Under drift skapar mount ocks len /etc/mtab, monteringstabellen dr du kan se vilka lsystem som r monterade just nu, samt exakt vart de har monterats. Denna l r i princip identisk med /proc/mounts, och skiljer sig bara i frga om hur de visar monteringen av rotlsystemet. Kommandot df visar ocks monterade lsystem, och dessutom fyllnadsgrad. ven ntverkslsystem kan monteras:
mount -t nfs -o rw 192.168.1.2:/export/foo /mnt/foo

Kommer att montera det exporterade NFS-lsystemet p datorn 192.168.1.2 med namnet /export/foo i din dators /mnt/foo-katalog, i ls/skrivbart lge. Du kan ven skriva in en liknande rad i /etc/ fstab om du vill att detta skall monteras automatiskt nr datorn startas.
mount -a

Sker igenom hela /etc/fstab-len och monterar alla monteringspunkter som inte redan r monterade. Detta grs av systemet vid uppstart, men om t.ex. en NFS-server inte r tillgnglig vid uppstart kommer punkterna p denna inte att monteras, och root kan vara tvungen att g in och gra det manuellt med detta kommando. 214

5.4 Arkitekturen i GNU/Linux-systemen umount foo av engelskans unmount utfr omvndningen till mount: kommandot monterar av en monteringspunkt som redan monterats, t.ex. kan anvndarnas hemkataloger avmonteras med kommandot umount /home om dessa lagts p en egen partition eller separat hrddisk. swapon slr p det speciella lsystem som anvnds fr virtuellt minne, eller swap som det ju ocks kallas. Partitionen fr detta speciallsystem hittar kommandot i /etc/fstab p en rad dr bde monteringspunkt och lsystem har namnet swap. swapoff stnger av vxlingspartitionen fr virtuellt minne. Detta r inte bra att gra om du inte vet vad du sysslar med. Bde swapon och swapoff skts normalt av init-processen under uppstart och nedstngning av systemet. fsck foo (utlses le system check) dr foo r antingen en blockenhet (t.ex. /dev/hdb) eller en monteringspunkt (t.ex. /mnt/data) kommer att underska om lsystemet som nns dr r vlmende, och kommer ven vid behov att erbjuda sig att reparera eventuella fel. Fr vissa lsystemstyper gr det snabbt att kra fsck, fr andra tar det en evighet. Om lsystemet p en viss enhet mr bra gr fsck ingenting. Hittas fel erbjuds du att f dem rttade, och du skall d normalt bara svara ja (yes). Programmet kan ven hitta ler som blivit hngande i luften, d.v.s. som inte sitter fast ngonstans, men som nd nns p hrddisken. Det erbjuder dig d att ansluta dessa till katalogen lost+found i lsystemet p varje partition. (Den vanligaste platsen r i roten: /lost+found.) Det r ytterst sllan du kan terskapa ngon vettig information i lost+found, men det knns kanske tryggt att det tminstone r teoretiskt mjligt att hitta sin l dr om t.ex. datorn stannat p.g.a. ett strmavbrott. fsck kommer att anropa olika program beroende p vilket lsystem som du vill kontrollera. Varje lsystemstyp som stdjs av Linuxkrnan har ett eget sdant program. Om du vill kra fsck p ett lsystem br det frst vara monterat i skrivskyddat lge. Detta innebr att det r skrivskyddat s att vanliga anvndare inte kan gra ngra ndringar i lsystemet med vanliga kommandon (mv, rm...) medan root dremot kan utfra ndringar p sjlva lsystemet. Detta grs fr att undvika att kontroll eller reparationer grs p ett system medan det ndrar sig, vilket r svrhanterligt. Ett lsystem kan monteras om i skrivskyddat (engelska: read-only) lge med mount -o remount,ro foo. 215

Kapitel 5 GNU/Linux-projekten Efter att du krt fsck kan du montera om det i skrivbart lge igen med mount -o remount,rw foo. mkfs -t foo /dev/bar skapar ett nytt lsystem av typen foo p blockenheten bar. Det gr ven bra att ange ett namn p en monteringspunkt under frutsttning att denna nns med i /etc/fstab. Du skall normalt inte ge dig p att skapa ett lsystem dr det redan nns. Det normala anvndningsomrdet fr detta kommando r d du kpt en ny, prktig hrddisk som du vill ansluta till ditt system. Nr du skruvar i den i din maskin och ansluter den fr den ett blockenhetsnamn automatiskt, ngot i stil med /dev/ hdb. Sedan partitionerar du den med t.ex. cfdisk /dev/hdb, och fr d era partitioner. (Kanske vill du bara anvnda hela hrddisken som en stor partition, smaken r delad.) Drefter skapar du ett lsystem p disken med exempelvis mkfs -t ext3 /dev/hdb1 (fr ett ext3-system p frsta partitionen).47 mkfs kan ven skapa lsystem inuti ler, som beskrivs t.ex. i avsnittet om CD-brnning p sidan 274. Svenska tecken i lsystem Ext3 och andra nya lsystem fr hrddiskar r oftast standardmssigt instllda fr att anvnda teckentabellen UTF-8 Unicode fr att lagra lnamn. Den gamla standarden var oftast ISO 8859-1. Frndringen har infrts eftersom den ger goda mjligheter till internationalisering (anpassning av text och liknande i anvndargrnssnittet) och lokalisering (anpassning av t.ex. vikter, tidangivelser och datum) av systemet, bland annat fr kinesiska och hindi. UTF-8 r ett teckenkodningsystem48 som gr det mjligt att pressa in unicodetecken, som normalt r sexton bitar lnga, i ttabitarssekvenser, samtidigt som det r mjligt att anvnda de 128 frsta tecknen som om de fortfarande var ISO 8859-1. Detta r mycket bra fr den anglosaxiska vrlden, eftersom deras sprk kan skrivas med enbart de 128 frsta tecknen (som bland annat innehller bokstverna a till och med z, och drfr normalt inte behver ndra ngonting alls) men lite jobbigare fr oss andra som anvnder svenska tecken med prickar, ringar och accenter. Just vra specialtecken fanns i och fr sig i ISO 8859-1, men i Unicode kodas de p ett annat stt, eftersom de hade ett teckenvrde ver 128.
47 Fr att gra ett lsystem tvrs ver en hel hrddisk, kr t.ex. mkfs -t ext3 /dev/hdb utan partitionsnummer efter enhetsnamnet. 48 Teckenkodningssystem (teckentabeller), baseras p att varje tecken i alfabetet som skall kodas representeras av en siffra.

216

5.4 Arkitekturen i GNU/Linux-systemen


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

#!/bin/bash IFS=$\n FOO=find . -maxdepth 1 for OLD in ${FOO}; do NEW=echo ${OLD} | iconv -f iso8859-1 -t utf8 if [ "$OLD" != "$NEW" ]; then echo "$OLD -> $NEW" echo "Byt namn (j/n)?" read IN if [ "$IN" = "j" ] || [ "$IN" = "J" ]; then mv ${OLD} ${NEW} echo "Bytte namn" fi fi done;

Figur 5.9: Skript som (frhoppningsvis) kan hjlpa till att byta namn p ler frn teckentabellen ISO 8859-1 till UTF-8.

En huvudsaklig anledning till att bytet gjordes var att ISO 8859-1 bara kunde lagra 256 olika tecken totalt. Enkel matematik ger vid handen att t.ex. kinesiska tecken, som r era tusen till antalet, aldrig skulle kunna f plats. Drfr har Unicode utarbetats, s att alla sprk skall kunna samsas i en och samma teckentabell. vergngen skapar en del konikter. Vilket teckenkodningssystem som anvnds i ett POSIX-system bestms av miljvariabeln $LANG. Normalt skall denna vara satt till vrdet sv_SE.UTF-8 eller p ldre system sv_SE. Det senare kommer att resultera i att den gamla ISO 8859-1-teckenkodningen anvnds. (kolla din instllning med echo $LANG, se vidare sidan 99.) Nr du installerar ett helt frskt GNU/Linux-system vllar detta sllan ngra strre problem. Problem uppstr dremot om du vill kunna hantera gamla lsystem med en teckenkodning som inte r UTF-8. Om du monterar ett UTF-8-lsystem p en system som anvnder ISO 8859-1 kommer det att se lustigt ut. Tecken som t.ex. istllet fr bokstaven r ganska vanligt. Om du monterar ett ISO 8859-1-lsystem p ett system som anvnder UTF-8 blir effekten att alla svenska tecken tycks falla bort, frsvinna helt, eller dyker upp som frgetecken (t.ex. fr?getecken). Anledningen r att ensamma 8-bitarstecken inte r giltiga UTF-8tecken. Om du yttar en partition permanent frn ISO 8859-1 till UTF-8 217

Kapitel 5 GNU/Linux-projekten mste du byta namn p alla ler och alla kataloger som innehller svenska tecken. Skriptet i gur 5.9 kan kanske hjlpa till. Detta byter namn p lerna i den aktuella katalogen frn namn enligt ISO 8859-1 till namn enligt UTF-8. Om det rr sig om en enstaka anvndare, kan det rcka med att den anvndaren stter sin $LANG-variabel till sv_SE istllet fr sv_SE.UTF8. Detta kan t.ex. gras i anvndarens hemkatalog, i len .bash_prole med raden export LANG=sv_SE (frutsatt att BASH r anvndarens standardskal!) Om du behver montera gamla VFAT- eller NTFS-partitioner (Microsoft Windows), eller gamla CD-ROM-skivor som inte anvnder UTF8, kan detta lsas genom att ange monteringsalternativet utf8 som t.ex. mount -o utf8 /mnt/cdrom. Detta kan ocks anges med parametrarna till en monteringspunkt i /etc/fstab.

5.4.11

Hantering av moderkortet

Den del av din dators hrdvara som ligger allra nrmast operativsystemets krna r naturligtvis moderkortet. Direkt p moderkortet nns all hantering av hrd- och mjukvarustyrda avbrott, direkt minnesaccess, det fysiska primrminnet i form av kapslar, och alla de bussar dr grakkort, ntverkskort och annan kringutrustning ansluts. Viss kringutrustning kan sitta fastldd direkt p moderkortet men eftersom denna oftast nd rent konceptuellt hanteras av krnan som om den vore en perier enhet spelar det ingen roll. Hit hr bland annat integrerade grak- och ntverkskort, USB-hubbar, skrivarport, serieport fr modem o.s.v. Viss hrdvara r dremot knuten mycket nra till moderkortet. Det gller framfr allt: Strmsparfunktioner dessa behver kunna stnga ned stora delar av systemet fr att det skall kunna suspendera (slcka aktivitet tillflligt) eller hibernera (slcka aktivitet fr en lngre tid). Frekvensskalning av datorns mikroprocessor. Fr att spara strm, vilket r speciellt viktigt p brbara datorer, kan moderna moderkort steglst ndra processorns klockhastighet beroende p hur stor last som fr tillflligt ligger p systemet. En hg frekvens p processorn leder nmligen till att den drar mer strm. Sensorer dessa kan knna av temperaturer i systemet och varvtalet p ktar som r anslutna till moderkortet och stnga ned hela systemet om ngon del verhettas eller ngon kt stannar. 218

5.4 Arkitekturen i GNU/Linux-systemen Knappar ssom strmbrytaren p en brbar dator som inte bryter ngon strm utan skickar en signal till operativsystemet om att stnga ned datorn. (Dessa kallas ibland softkeys, som i mjukvarustyrda knappar.) I ldre datorer nns ofta ett strmsparsystem kallar APM (Advanced Power Management) medan nyare datorer s gott som uteslutande anvnder ACPI (Advanced Conguration and Power Interface).49 Operativsystemet r tvunget att interagera med ACPI: en dator som anvnder detta fungerar inte utan ett matchande operativsystem. APMbaserade datorer verlever dock ofta utan ett APM-medvetet operativsystem, eftersom hanteringen av strmsparfunktioner dr istllet skts av datorns BIOS. ACPI-baserade system anvnder ven de datorns BIOS fr att genomfra olika tgrder, men kontrollen ver skeendet skts av operativsystemet istllet fr direkt av BIOS. ACPI dk frst upp p brbara datorer, och en markant egenhet med datorer som r utrustade med ACPI r att de verkligen stnger av datorn nr du vljer stng ner frn systemets menyer eller skriver POSIX-kommandot shutdown -h now. P ldre datorer mste du ofta trycka p ngon mekanisk knapp fr att verkligen stnga av strmmen till systemet s att ktar o.s.v. slutar snurra. Avstngningsknappen p en ACPI-utrustad dator skall bara skicka en signal till operativsystemet om att detta i sin tur skall stnga av systemet med hjlp av andra ACPI-anrop. Om det inte fungerar (om t.ex. systemet har hngt sig) brukar det vanligen fungera att hlla knappen intryckt en lngre stund fr att verkligen stnga av strmmen. Sensorer fr temperaturer och kthastigheter skall normalt vara anslutna till APM eller ACPI men av historiska skl r det ibland s att de mste hanteras direkt av operativsystemet istllet, ofta via speciella drivrutiner som tillhandahllits av tillverkarna. Detta har skapat stora problem fr svl GNU/Linux som andra mer ovanliga operativsystem: tillverkarna vljer nmligen ofta att inte utveckla drivrutiner annat n fr ett operativsystem. I och med att ACPI blir allt mer av en branschstandard r dessa problem p vg att frsvinna. ACPI-stdet i Linux r till stora delar skrivet av Intel, som ocks r ett av fretagen som uppfunnit det, men det har inte blivit helt fungerande frrn i senare versioner av 2.6-versionen av Linuxkrnan.
49 ACPI anvnds som namnet antyder naturligtvis ven fr konguration. Den konguration som avses r instllningar av en del hrdvara i systemet vid uppstart. ACPI var ursprungligen tnkt som en delmngd av ett strre koncept med namnet Operating System-directed conguration and Power Management (OSPM) men det senare har vrlden aldrig sett srskilt mycket av.

219

Kapitel 5 GNU/Linux-projekten Fr temperatur- och ktsensorer som inte anvnder ACPI eller APM nns separata drivrutiner i Linuxkrnan som hanterar mnga vanliga chip direkt. Projektnamnet fr dessa r lm_sensors.50 Det underliga namnet kommer sig av att de frsta sensorer som stddes av projektet var av typen LM78 och LM75 frn National Semiconductor. Det nns en uppsttning anvndaprogram knutna till lm_sensors, och dessa mste ofta installeras som ett separat programpaket fr att du skall kunna ha nytta av sensorerna. I synnerhet r programmet sensors-detect anvndbart, eftersom detta automatiskt kan underska din hrdvara fr att lokalisera sensorer av olika slag. Sensorerna r oftast anslutna till moderkortet via en s.k. SM-buss (engelska System Management Bus, systemhanteringsbuss, ofta frkortat SMBus). I de fall lm_sensors behver anvndas kan sensors-detect oftast hitta en lmplig drivrutin bland Linuxkrnans moduler fr att komma t SM-bussen, och i de fall dr systemet r utformat fr att anvnda sensorer via ACPI r bussen oftast ansluten direkt till den hrdvara som skter ACPI, och du behver drfr inte bekymra dig om saken. Ibland r sensorerna tillgngliga p bda visen (dvs bde genom ACPI och genom speciella SM-buss-drivrutiner) och d br du vlja att anvnda dem via ACPI. Det rcker dock inte med att Linuxkrnan kan hitta sensorerna eller ACPI-hrdvaran fr att ditt system skall anvnda det p ett bra vis. Krnan vet inte mycket om hur den skall reagera p det sensorer och ACPI meddelar utan verlmnar t resten av systemet att skta detta p bsta vis. Alla distributioner levererar inte i dagslget ngon frdig, fungerande lsning fr detta, men i t.ex. Debian anvnds en uppsttning skript med namnet laptop-mode fr detta, medan GNOME har utvecklat en egen strmhanteringskomponent p hg niv med namnet GNOME Power Manager. Sensorer kan bde GNOME och KDE vervaka med indikeringar av olika temperaturer direkt p skrivbordet eller i ngon verktygsrad fr den som r intresserad. Dessa program brukar sllan kunna vidta ngra tgrder om maskinen t.ex. blir verhettad s nyttan med dessa r snarast kosmetisk.

50 Se

http://secure.netroedge.com/~lm78/

220

K APITEL

6 Fnstersystemet X

Ofciell hemsida: http://www.x.org/ I maj r 1983 pbrjade Massachusetts Institute of Technology i Boston, USA projektet Athena, i syfte att integrera datorer med undervisningen vid denna tekniska hgskola. Idag kan detta tyckas vara en sjlvklarhet, men under det tidiga 1980-talet var datorer nnu inte ngot sjlvklart inslag i ingenjrsutbildningen. Som ett led i projektet skulle stora mngder datorer placeras ut p universitetet, alla elever skulle f egna datorkonton, och diverse olika graska datorprogram skulle gras tillgngliga. Som bas anvndes POSIX-liknande operativsystem. Nr projektet avslutades r 1991 hade en mngd biprodukter skapats, den mest framgngsrika kom att bli det som idag r knt som X Window System, fnstersystemet X.1 Detta system var inuerat av ett tidigare fnstersystem kallat W skrivet av Paul Asente i Stanford och kallades drfr X eftersom den bokstaven kommer efter W i alfabetet. Detta fnstersystem skapades genom ett samarbete mellan institutionen fr datorvetenskap vid MIT dr Jim Gettys bedrev arbetet med Athena, och fretaget Digital Equipment Corporation. Projektledaren hette Robert Scheier. Den huvudsakliga anledningen till att X skapades var att MIT hade begrnsad budget fr projektet Athena och drfr ville anvnda billiga
1 Namnet p systemet r X kort och gott, X Window System r egentligen ett frtydligande.

Kapitel 6 Fnstersystemet X datorer som anslts till centrala servrar som skulle tillhandahlla sjlva berkningskapaciteten. De billiga datorerna skulle bara anvndas som graska terminaler, inte som datorer, d.v.s. programmen skulle kras p en annan dator och de billiga datorerna skulle bara erbjuda en plats dr graken kunde visas. Graken skulle transporteras frn de centrala datorerna till terminalerna genom ett ntverk, p samma vis som en vanlig textterminal visar text frn en dator p annat hll.2 Den frsta allmnt tillgngliga versionen av X var version 10, kallat X10, som snabbt fljdes av den mer fulldiga version 11, X11 r 1987. Licensvillkoren fr X3 var mycket frmnliga och ledde till att systemet mycket snabbt blev de facto-standard fr fnstersystem i POSIX-miljer och konkurrerade ut alla andra system. I oktober r 1991 slpptes version fem av X, mest knd under frkortningen X11R5, svl i form av en specikation som i form av en generst tilltagen exempelimplementation. Fr IBM PC-kompatibla datorer baserade p Intels 80386-processor medfljde i denna version en implementation fr UNIX-liknande operativsystem skriven av tysken Thomas Roell. Denna implementation hade namnet X386 och var vid detta tillflle uppe i version 1.2. Vid ungefr samma tidpunkt tog Roell all kllkod till X386 med sig och yttade till USA, dr han snart brjade utveckla och slja en proprietr version av programmet under namnet Accelerated-X, s ingen vntade sig att frfattaren i framtiden skulle bry sig om att undehlla X386. Eftersom X386 dessutom innehll era fel, var det svrt att ens anvnda programmet utan ndringar. I april 1992 kom ett ertal utvecklare, som kommit i kontakt med varandra p Internet, verens om att fortstta utveckla X386 med Roells kod som grund. Den frsta frbttrade versionen av X386 kallades X386 1.2e dr e:et stod fr enhanced. Strax drefter byttes projektnamnet till XFree86 i betydelsen gratis, mest p skoj, eftersom Roells version av X386 inte lngre var gratis.4 Bland dessa ursrpungliga utveckare av XFree86 fanns David Wexelblat, David Dawes Glenn Lai och Jim Tsillas. Utvecklarna av XFree86 ville ursprungligen att deras X-server skulle distribueras tillsammans med det ofciella X, men ck inte, eftersom de inte var ngot fretag. De ck inte ens vara med i organisationen X Consortium eller The Open Group, och skapade d ett fretag enbart fr att kunna bli det. P medlemssidan fr X.org lg XFree86 lnge lngst ned, trots att de oomtvistligen var den viktigaste medlemmen.
avsnitt 2.3.11 p sidan 105 fr mer detaljer om terminaler. s.k. MIT-licensen, se 3.4.3 p sidan 125. 4 Om du p engelska uttalar X386 X Three Eighty-Six respektive XFree86 X Free Eighty-Six ser du vari ordvitsen i detta namn ligger.
3 Den 2 Se

222

Fnstersystemet X Organisationen inom XFree86 har sedan dess varit ytande, och arbetstempot och koordinationen bland utvecklarna av varierande kvalitet. XFree86 har blivit ngot av GNU/Linux-vrldens sorgebarn. Under r 2003 brjade en spirande separatism prgla projektet, dr ngra vill radikalt skriva om XFree86 och fann det svrt att gra detta inom ramen fr projektet. Huvudpunkten i kritiken som riktades mot XFree86 och X var bland annat att X blev vertungt p grund av all sin ntverkstransparens, d.v.s. att alla grakanrop frn olika program mste formuleras om av grnssnittet som om de skickades via ntverk. David Dawes freslog drfr att en direktrendringsmotor (som innebr att programmen har direkt tillgng till grakkortet via ett enkelt grnssnitt) skulle utvecklas istllet, och en enkel X-server byggas ovanp denna, istllet fr att behlla all hantering av graken inuti X. Detta r i praktiken vad som stadkommits i servern Xgl, som utvecklats till strre delen mellan ren 2004 och 2006 av Novell och dr David Reveman frn Ume Universitet haft en tongivande roll. Ett snarlikt projekt med namnet AIGLX har startats av Red Hat. Dessa projekt kan mycket vl vara framtiden fr X, men r beroende av ett OpenGL-kapabelt grakkort,5 vilket gr att det i dagslget inte kan kras p ldre datorer.6 Xgl kom emellertid inte till inom ramen fr XFree86, som vi snart skall se. XFree86 r nr detta skrivs uppe i version 4.5.0. Emellertid blev schismen mellan olika utvecklare r 2004 s stark att huvuddelen av utvecklarna lmnade XFree86 och tergick till organisationen X.org. Med sig tog de en uppdaterad variant av version 4.4.0rc2, eftersom licensen till XFree86 ndrats till en version som krver namngivning av utvecklarna i samband med anvndandet. Denna licens r bl.a. inkompatibel med GNU GPL, och accepteras varken av GNU/Linux-distributrerna eller BSD-projekten. Licensfrndringen var dock inte det enda sklet till att projektet splittrades; huvudsklet var som tidigare sagts att era utvecklare upplevde att projektet avstannat. Snart efter det massiva avhoppet meddelade alla strre distributioner samt BSD-projekten att de hdanefter skulle leverera sina system med X.org-servern istllet fr XFree86. Stora delar av programbiblioteken som skter specika delar av funktionaliteten i XFree86 existerade sedan lnge i egna, separata projekt.
5 De OpenGL-baserade X-servrarna anvnder OpenGL mer eller mindre direkt. Anledningen r att 2D (en skrivbordsyta) egentligen bara r ett specialfall av 3D, och framtida grakkort kan komma att enbart stdja 3D i en eller annan form. 6 Svl kommande Windows Vista som framtida MacOS X kommer att anvnda en direkt rendering av liknande slag, d.v.s. all grak skts av hrdvaran. Under GNU/Linux och MacOS sker detta med hjlp av OpenGL, medan Windows anvnder det Microsoftspecika Direct3D.

223

Kapitel 6 Fnstersystemet X Dit hr t.ex. FreeType och Fontcong som ansvarar fr strre delen av typsnittshanteringen. Dessa projekt har i dagslget brjat samlas kring webbportalen freedesktop.org fr att med en helhetssyn som inkluderar svl X som skrivbordsmiljerna GNOME och KDE arbeta och sprida information om arbetet med de graska systemen i framfr allt GNU/ Linux och BSD. Stora delar av drivrutinerna fr olika grakkort som nns i X har skrivits av fretaget Precision Insight som startats av Red Hat m.. fr att frbttra grakstdet i XFree86 och X.org-servern. Detta fretag anlitas i sin tur av grakkortstillverkare som vill ha std fr sina grakkort i X, dribland ATI7 , Intel, 3dfx och Matrox. Den huvudsakliga anledningen till att dessa fretag stdjer XFree86 har varit att grakkorten anvnds mycket i professionell grakproduktion i bl.a. Hollywood. De enda strre grakkortstillverkare som varit ovilliga att samarbeta direkt med X.org eller Precision Insight r nVidia och till viss del ven ATI som istllet fr att p normalt vis inkorporera sina drivrutiner i X.org-servern har valt att leverera frkompilerade drivrutiner som inte r fri programvara och drfr mste laddas ned och installeras separat. Detta skapar ofta problem eftersom binra drivrutiner mste anpassas till varje ny version av X och ofta ven fr den kompilator som anvnts fr att kompilera X och det underliggande operativsystemet.8 garskapet till den ursprungliga referensimplementationen av X har under ren vandrat frn MIT till den sjlvstndiga organisationen X Consortium (19881996), till The Open Group (19961999), till X.org som numera har hand om specikation och referensimplementation av X. Den nuvarande versionen av referensimplementationen har revisionsbeteckningen X11R7.0. Denna namngivning skall utlsas s att protokollet som X anvnder har stannat vid version 11, och att enbart mindre revideringar har gjorts sedan dess. De sista siffrorna indikerar versionen av sjlva mjukvaran. X r ocks unikt p det viset att samma program anvnds tillsammans med GNU/Linux som med BSD-varianter, s att detta system r ndvndigt fr bda dessa anvndargrupper. X r t.o.m. portat till Microsoft Windows, dr det ingr som en del i det s.k. Cygwin-paketet.
r en akronym fr Array Technologies International skall noteras att det frmodligen inte r ngot tjuvhllande p kod som r orsaken till nVidias och ATIs beteende: orsaken r att de tv fretagen konkurrerar oerhrt hrt om varandras kunder och att de r ungefr lika stora. Ovilligheten att dela med sig av kod handlar om att ingendera fretaget vill ge vrsta konkurrenten insyn i sin kllkodsbas, eftersom detta dels kan ge ledtrdar om tnket p fretaget och drmed kan anvndas fr att frutse framtida produktplaner m.m., dels att det ger en unik mjlighet att rna insikt i om det andra fretaget har gjort patentintrng mot det egna fretaget, eftersom mnga tekniker som anvnds fr just 3D-grak r patenterade.
8 Det 7 ATI

224

6.1 Arkitekturen i X

Figur 6.1: Logotypen som anvnds av fnstersystemet X.

6.1

Arkitekturen i X

Fr att hlla isr begreppen tillmpas frn och med nu fljande konvention: nr jag i fljande text skriver X menar jag saker som hr till det generella systemet frn X.org, medan jag vljer att skriva X.org-servern om det gller detaljer som r specika fr X.orgs referensimplementation av X. Fnstersystemet X bygger p fljande grundlggande principer: Ntverkstransparens datorprogram som r skrivna fr att anvnda X kan alltid kra p en dator och visa grak p en annan dator. I grunden bestr X av ett ntverksprotokoll som anvnds av ett programmeringsgrnssnitt9 fr programsprket C. Klienten r en server det som normalt skulle kallas fr klient ur ett anvndarperspektiv, kallas i X-vrlden fr server, eftersom X ser vrlden ur programmens perspektiv istllet fr ur anvndarens perspektiv. En server r sledes en dator som tillhandahller en bildskrm, ett tangentbord och en mus, medan en klient r ett program som ansluter sig till denna server. Klienten kan vara ett program p samma dator som kr X-servern, men behver inte vara det. ven program som bara anvnder den
9 Programmeringsgrnssnitt heter p engelska application programming interface och frkortas drfr ofta API

225

Kapitel 6 Fnstersystemet X

Figur 6.2: Den mest avskalade X-servern, den primitiva skrm som X erbjuder, har detta spartanska utseende. Hr med programmet GIMP startat. Som synes nns varken fnsterkanter, knappar fr att stnga fnster eller liknande. Markren (som inte syns hr) har formen av ett X.

skrm och det tangentbord som sitter p datorn dr det krs, behandlar dessa som om de vore enheter enbart tillgngliga via ntverket och tar inga genvgar. X r inte ett graskt anvndargrnssnitt. Graska anvndargrnssnitt, som ven kallas graska skal, eller p engelska graphical user interfaces (GUI:s), r system fr att ge kommandon till datorn i samma anda som vid en kommandorad, med skillnaden att tangenttryckningarna har ersatts med graska byggelement och symboler som kan aktiveras med hjlp av en mus, p det vis som de esta av oss r vana att anvnda datorer. Vad X erbjuder r snarast en skrm, och mjligheten att rita saker p den. En avskalad X-server (som det program och den skrmbild som genereras av en X-server logiskt kallas) har utseendet som ternns i gur 6.2. Program som skall startas i ett sdant avskalat system mste startas frn en terminal, och nns ingen sdan att tillg kan det upplevas som att datorn helt enkelt har lst sig: det nns en markr formad som ett X och en svart bakgrund, inget mer. Eftersom detta knappast r vad anvndare frvntar sig av ett graskt system har era alternativa skrivbordsmiljer (engelska: desktop environment) utvecklats fr att ge det utseende med ett skrivbord, ikoner, verktygsrader o.s.v. som vi r vana vid. Dessa kallades urspungligen fnsterhanterare och var d bara enklare system fr att presentera menyer, hnga p knappar p fnster s att de kunde stngas och lister s att 226

6.1 Arkitekturen i X de kunde yttas, modiera pekaren beroende p vad som nns under den o.s.v. Nr fnsterhanterarna utkades med mjligheter att bygga och integrera applikationer (t.ex. med drag-och-slpp), hantera ler och prata med olika resurser i operativsystemet utan att anvnda POSIX-grns nits tet direkt, samt en uppsttning standardprogram (minirknare, texteditor etc.) brjade de kallas skrivbordsmiljer. Dessa kommer att avhandlas i avsnitt 6.6 p sidan 258 och framt. Vissa anvndare fredrar nnu de enklare fnsterhanterarna. TWM (Tiny Window Manager), FVWM2 (F10 Virtual Window Manager), Window Maker, AfterStep, Enlightenment, GNUStep o.s.v. r namn p sdana enkla fnsterhanterare. F vanliga anvndare anvnder numera ngot annat n den fnsterhanterare som kommer med skrivbordsmiljn.11 Fr en programmerare r grnssnittet och protokollet i X mycket primitivt: du kan be X att rita en linje, en kvadratisk yta, en cirkel o.s.v., men de avancerade graska byggelement, s.k. widgets som anvnds av moderna graska program nns inte i X. Dessa har drfr utvecklats separat i olika programpaket, som i sin tur anvnder X. Motif, GTK+ och Qt r tre sdana paket, som kommer att beskrivas senare i detta kapitel. Det mest grundlggande objektet i X r rotfnstret som ligger bakom alla andra fnster som en svart eller miniatyrschackrutig platta.12 Detta har samma storlek som den upplsning din bildskrm r satt till, och kan inte stngas. Den svarta bakgrunden i gur 6.2 r rotfnstret. Ovanp detta kan program ppna och stnga egna fnster. Allt du ser i X, utom markren, r uppbyggt av sdana fnster. Specikt fr X.org-servern, och den kombination av program som anvnds i GNU/Linux p en standardiserad IBM PC-kompatibel dator, har hierarkin av delsystem som bygger upp det graska anvndargrnssnittet ett utseende i stil med det som ternns i gur 6.3. Sm inbyggda system anvnder inte X, istllet anvnder sdana system som behver grak (mnga inbyggda system njer sig med mycket enkla textterminaler) en s.k. framebuffer, vilket i korthet innebr att
10 Upphovsmannen

till FVWM, Rob Nation, har glmt vad F i frkortningen stod fr.

11 Undantagen r a) entusiaster som lskar en viss fnsterhanterare och menar att skriv-

bordsmiljn r meningsls eller verdig, b) de som anvnder gamla, lngsamma datorer, och c) de som tvrs emot alla rekommendationer byter ut den fnsterhanterare som nns inbyggd i skrivbordsmiljn mot en annan. 12 Det r ven mjligt att kra X utan rotfnster, detta r vad exempelvis Cygwin X och den X-server som krs p MacOS gr. X-fnstren blir d istllet en del av det underliggande fnstersystemet (som d inte r X utan t.ex. Windows eller MacOS egna fnsterhanterare).

227

Kapitel 6 Fnstersystemet X

Figur 6.3: Hierarkin som dljer sig bakom anvndargrnssnittet i GNU/Linux. Lngst ner den faktiska hrdvaran och dess grakkort, lngst upp det som en anvndare till sist upplever. I framtiden kommer skerligen renderingsmotorer som Cairo och Arthur samt bottenlager baserade endast p OpenGL att bli vanligare.

Linuxkrnan helt tar ver ansvaret fr graken.13 Det nns ven en nedbantad version av X med namnet tinyX som anvnds i en del inbyggda system med hgst rudimentra grakbehov. Inbyggda system som inte har strikta minneskrav brukar i allmnhet anvnda ngon variant av den vanliga X-servern frn X.org.

6.2

Konguration

En mycket speciell egenhet med X.org-servern p GNU/Linux, och som framgr av guren, r att Linuxkrnan normalt inte hanterar grakkortet, i varje fall inte nr det gller att kra X. Istllet har X egna drivrutiner till de esta grakkort, och anvnder dessa direkt. Ngot std fr grakkortet i krnan behvs inte, och krnan r bara utformad fr att ge grundlggande POSIX-funktionalitet. X kommer dremot att anvnda mus och tangentbord via krnan i ngon mn.14 Nr basen i ett GNU/Linux-system r installerat mste drfr X Window System kongureras separat, ven om resten av operativsystemet redan r p plats.15
13 Vissa Linuxprogram med hga prestandakrav kan ocks anvnda framebuffern, som ursprungligen skapades d Linuxkrnan portades till Macintosh-datorer. Eftersom Mac:arna saknade textlge var utvecklarna tvungna att emulera text p en ren grakyta, och resultatet blev framebuffern. Denna inkorporerades senare ven i Intel x86-delen av Linux. 14 ven om det t.ex. anvnder egna tangentbordskartor fr att koppla samman en tangent med ett visst tecken. 15 Fre version 7.0 av X anvnde programmen anvnder inte ens GNU:s eller andra

228

6.2 Konguration Som vanligt hjlper distributionernas kongureringsprogram i viss mn till med kongurationen, och detta r en av deras stora frdelar. Svl Red Hat:s Anaconda som SuSE:s YaST r mycket bra p detta, medan andra distributioner som Debian GNU/Linux eller Gentoo Linux ger varierande grad av hjlp som i princip krver detaljerad kunskap om det mesta som avhandlas i detta kapitel och mer drtill. Innan du brjar testa olika kongurationer br du lsa lite om olika program som ingr i X-sviten, i synnerhet om Xorg sjlvt p sidan 246 och absolut om XDM p sidan 248. ven programmet startx som anvnds fr att starta upp X.org-servern om inte systemet gr det automatiskt, kan vara bra att knna till. Med X.org-servern fljer inte mindre n tre olika kongurationsprogram, inget av dem r perfekt. Om din distribution inte genererat, eller misslyckats med att generera en kongurationsl, r detta din enda vg ut. Du br anvnda ett av dessa program fr att generera en grundlggande konguration som du sedan editerar fr hand med en texteditor: Xorg -congure kan, och skall normalt kras fr att producera en grundlggande kongurationsl. Kommandot kommer att frska autodetektera vilket grakkort och vilken monitor som r ansluten till datorn, och utifrn detta genererar det en kongurationsl. En stor frdel med detta kommando r att det genererar en bortkommenterad lista med olika aggor till grakkortet, ngot som annars kan vara strt omjligt att nna dokumentation p. Dessa kommer standardmssigt att vara bortkommenterade och odokumenterade, men du kommer i alla fall att veta vilka aggor som nns. xorgcongure (ursprungligen XFree86 xf86congure) r numera oftast borttaget i distributionerna, men var ett interaktivt program fr att generera en kongurationsl. Tidigare var detta det enda sttet att generera en kongurationsl. xorgcfg (tidgare XFree86 xf86cfg) r en nyare variant av samma program, ngot mera anvndarvnligt. Det r numera ofta borttaget ur distributionerna det ocks. Om len som genereras av kommandot Xorg -congure eller med ngot av de andra verktygen fungerar klanderfritt s r det bara att gratulera. Detta tillhr faktiskt ovanligheterna. Ibland fungerar det, men
POSIX-programs standarder fr kompilering och installation, och levde drfr oftast sitt eget liv i katalogen /usr/X11R6, t.ex. installerades de krbara X-programmen i /usr/X11R6/ bin och de dynamiska lnkbiblioteken i /usr/X11R6/lib. Numera r de snyggt inlemmade i samma ltrd som alla andra program.

229

Kapitel 6 Fnstersystemet X upplsning och frglge p X r inte vad de borde vara. D terstr bara manuell konguration Kongurationen av X.org-servern utan verktyg kan inte psts vara anvndarvnlig. Det r tvrt om ngot som av mnga anvndare, svl noviser som avancerade anvndare, uppfattar som den mest mystiska och svrhanterliga delen av ett GNU/Linux-system. Kongurationen brukar i allmnhet nnas i /etc/X11 och den huvudsakliga kongurationslen heter oftast /etc/X11/xorg.conf. Kongurationslen r indelad i sektioner som var och en har ett namn, och kongurerar en viss aspekt av X. Varje sektion kan ha en identier som ger den sektionen ett unikt namn. Denna identier anvnds sedan av andra sektioner fr att skapa en referens till instllningar som gjorts i en annan sektion. I varje sektion nns variabler som kan kongureras, och som kan vara av fyra olika slag: boolesk variabel egentligen vrdena sant eller falskt, men i X-vrlden kan falskt anges med ngot av orden False, Off, No eller bara 0 medan sant skrivs som True, On, Yes eller 1. Booleska vrden skall alltid anges med citationstecken kring sjlva vrdet. heltal ett vanligt heltal, t.ex 50 Dessa skall anges utan citationstecken kring sjlva vrdet, och kan ven anges hexadecimalt genom att skriva t.ex. 0x2e. yttal ett numeriskt vrde angivet med en punkt fr att avskilja heltals- och decimaldel. Du br d anvnda t.ex. 50.0 fr att beteckna talet 50, inte bara 50. Dessa anges utan citationstecken kring sjlva vrdet. strng r bara en fljd av tecken. En strng str alltid inom citationstecken. Sektionernas inbrdes ordning r inte viktig. De olika sektionerna kan ligga huller om buller, det viktiga r att de nns och att de kan referera varandra genom sina identier-namn. Varje sektion skall uppfattas som ett objekt i samma anda som gller inom objektorienterad programmering, och de inbrdes objektrelationerna illustreras bst av ett UMLdiagram, se gur 6.4. Option-variabler r speciella: dessa denierar dels ett namn i form av en strng inom citationstecken, dels ett vrde som skall sammankopplas med denna strng (nyckel vrde). Om du t.ex. skriver: Option Foo Bar kommer nyckeln Foo att f vrdet Bar. Sjlva vrdet p Option-variabler kan ha alla typer som anges ovan, och i det 230

6.2 Konguration

Figur 6.4: UML-diagram fr objektstrukturen i kongurationslen fr X.org-servern. En ServerLayout-sektion behver en eller era InputDevice-sektioner och en eller era Screen-sektioner. Varje Screensektion har en tillhrande Device-sektion och Monitor-sektion samt minst en Display-sektion. De vriga sektionerna svvar fr sig sjlva och r inte beroende av andra sektioner.

fall det r frga om en boolesk variabel kan denna anges utan vrde, t.ex. Option Foo, och kommer d att tolkas som om du skrivit Option Foo On. Omvnt kan Option NoFoo anvndas ekvivalent mot Option Foo Off. En kommentar kan infogas i kongurationslen om den fregs av tecknet #. Detta anvnds mycket fr att kommentera bort saker, t.ex. # Option Foo Off. Denna bit av kongurationen brukar i allmnhet vara den frsta trskeln. Drefter mste varje sektion kongureras, och om det blir det minsta fel i ngon sektion kommer inte X att fungera. Drfr fordras en djup frstelse fr var och en av sektionerna: Files anger vart olika ler som anvnds av X.org-servern nns. Fljande variabler nns i denna sektion: RgbPath (strng) anger vart RGB-databasen som X.org-servern anvnder nns. Normalt r detta frinstllt och skall inte ndras. Sjlva len som anges innehller ett antal namn p frger med namn som LemonChiffon, LightSlateGray o.s.v.16 Dessa namn anvnds av programmerare nr de vill referera till vissa frger som denierats i X-specikationen. ModulePath (strng) behver sllan anges, men anger d den r
16 Se

len /usr/share/X11/rgb.txt om du vill se vilka frger som nns.

231

Kapitel 6 Fnstersystemet X denierad skvgen till de moduler som angetts i Modulesektionen, drivrutiner fr grakkort med mera. FontPath (strng) anger vart olika fonter (ler innehllande teckenuppsttningar17 ) fr X nns lagrade. Det r ven mjligt att ange en speciell server p ntverket som tillhandahller fonterna, detta r speciellt bra vid central administration av tillgngliga fonter i ett strre system, eller fr disklsa klienter, s.k. X-terminaler,18 som inte har plats fr ngra stora fontmngder. En plats i lsystemet anges med fullstndig skvg, t.ex. /usr/ share/X11/fonts, och en server anges med protokoll och servernamn, t.ex. tcp/foo.bar.org. Eventuellt kan en port anges fr fontservern, men i allmnhet anvnds port 7100 fr Xfonter frn en server. Flera distributioner startar en fontserver p samma dator som kr X.org-servern, eftersom detta snabbar upp hanteringen av fonter. D frekommer ofta vrdet unix/:7100, vilket anger att en standard UNIX-sockel skall anvndas fr att ansluta till port 7100 p samma dator. (Se vidare sidan 253 om namn p fonter i X.) Module den hr sektionen anger vilka moduler (plug-ins) som skall laddas in i X.org-servern. Vissa delar av programmet kanske inte fungerar med den hrdvara som nns i din dator, och om du inte anvnder vissa delar av funktionaliteten i programmet, nns det heller ingen anledning att ladda in dem i minnet dr de bara tar plats. Load (strng) anger att en viss modul skall laddas. Platsen som de laddas frn kan anges i ModulePath i Files-sektionen, men r oftast frdenierad till /usr/lib/xorg/modules/extensions & /usr/ lib/xorg/modules/fonts, dr en del av modulerna r lagrade i form av dynamiska lnkbibliotek med namn som libfoo.so, och skall d laddas med variabeln Load foo. Typiska moduler som brukar laddas r dbe, dri (direct rendering infrastructure, se nsta sektion) extmod (utkningar), GLcore (OpenGL), glx (OpenGL), record o.s.v. Notera att fr att DRI skall fungera mste svl glx som dri vara inladdade i X.org-servern. Det r ingen vidare ordning p moduler som anvnds av X.orgservern, och drfr r det normalt bst att inskrnka sig till att
17 Teckenuppsttningar 18 se

kallas ven fonter, typsnitt, teckensnitt etc.

vidare sidan 256

232

6.2 Konguration kommentera bort eller avkommentera moduler som redan r uppradade i Module-sektionen. DRI denna sektion kongurerar DRI, direct rendering infrastructure. En del av X.org-servern som ursprungligen skrevs av Precision Insight fr att frbttra prestanda med OpenGL-grak.19 Denna del av X.org-servern r ttt integrerad med program frn programbiblioteket Mesa (ursprungligen skrivet av Brian Paul), som implementerar sjlva OpenGL-grnssnittet. DRI r tnkt att ven anvndas fr annan grakintensiv hantering p samma vis som t.ex. DirectX i Microsoft Windows. Om grakkortet i datorn stdjer OpenGL kommer detta med en del tricksande att anvndas, men i annat fall kommer Mesa:s (lngsammare) mjukvaruemulering av OpenGL att anvndas. Mesa distribueras tillsammans med X.org-servern och kommer drfr att erbjuda OpenGL p alla datorer dr det installeras, dock med varierande hastighet beroende p grakkort. Nr DRI anvnds skapas en blockenhetsl fr varje grakkort i datorn genom att X.org-servern kommunicerar direkt med Linuxkrnan. Blockenheterna kommer att nnas i /dev/dri/cardN dr N r ett nummer frn 0 och uppt, som numrerar de olika grakkorten i datorn. Normalt nns bara /dev/dri/card0. Du kommer ocks att se katalogen /proc/dri i /proc-lsystemet. DRI kan kongureras med fljande variabler: Group (heltal) anger en viss grupp som skall ha garskapet till blockenhetslerna /dev/dri/cardN. Gruppen anges med en siffra som motsvarar gruppens ID-nummer i /etc/groups. Normalt stts detta till 0, vilket r gruppen fr root-anvndaren. Mode (4-siffrors heltal) anger lbehrigheter fr blockenhetslerna /dev/dri/cardN. Normalt 0666, d.v.s. ls- och skrivbart fr alla anvndare. Om du av ngon bizzarr anledning tror att en annan anvndare skulle kunna f fr sig att anvnda DRI-grnssnittet i din dator mot dig, kan du ange att bara en viss grupp skall ha tillgng till DRI-blockenhetslen, lgga till dig sjlv i denna grupp, och stta lrttigheten till 0660.
19 OpenGL r ett standardiserat programmeringsgrnssnitt (API) fr att programmera grak, frmst tredimensionell grak, men ven tvdimensionell grak (som anvnds en del i skrivbordsytor med std fr tvdimensionell vektorgrak) stdjs av OpenGL.

233

Kapitel 6 Fnstersystemet X ServerLayout Denna sektion r normalt okomplicerad, men blir lite mer komplex om du anvnder s.k. multi-head-display. Eftersom X bara presenterar en yta dr program kan arbeta gr det inget om ytan strcker sig ver era olika skrmar, eller era olika grakkort, s lnge ytan denieras p ett vis som gr att X kan presentera den fr program som behver utrymme p skrmen. Det blir allt vanligare att professionella datoranvndare har mer n en skrm att arbeta med, och i X r detta inga problem att hantera. Exempelvis kan tv grakkort med 1024x768 upplsning20 kombineras s att en total arbetsyta om 2048x768 skapas. Huvudsaken r att dessa passar samman. ServerLayot r som du kan se i gur 6.4 roten till det trd av beroende objekt som grenas ut i InputDevice, Screen o.s.v. Identier (strng) innehller ett namn p din konguration. Eftersom det bara ska nnas en ServerLayout s har detta vrde ingen betydelse, vlj ett namn du tycker passar, t.ex. Foo. Screen (strng) anger en identierare fr vilken skrm som skall anvndas. Det r mjligt att anvnda era skrmar samtidigt och kombinera dem till en yta. I sin enklaste form innehller denna dock bara en rad i stil med: Screen foo. Om du har era Screen-rader mste de relateras till varandra p ngot vis och det hela blir genast mer komplext. Fr mer komplicerade exempel hvisas till manualsidan fr sjlva len xorg.conf21 eller dokumentationen som fljer med avancerade grakkort. En vanlig dator med en skrm skall endast ha en Screen-rad. InputDevice (strng) (strng) anger olika inorgan som X.org-servern skall anvnda sig av. Normalt nns tminstone tv: en rad fr musen och en fr tangentbordet. Sjlva inorganen i sig denieras i sin tur i motsvarande InputDevice-sektioner. Vissa brbara datorer har en extra musport fr lstagbar mus och har drfr ytterligare en rad, s att bde den inbyggda musen eller styrplattan och den externa musen kan anvndas samtidigt. Mus och tangentbord anges med sina respektive identierare, t.ex. InputDevice minmus CorePointer och InputDevice mittkeyboard CoreKeyboard Notera att den hr namngivningen p identierare r helt godtycklig, bara de
20 Upplsningen 21 Skriv

fr grakkort anges i antal bildelement (pixlar) i x- respektive y-led. bara man xorg.conf.

234

6.2 Konguration passar samman r det inga problem att kalla de olika inorganen fr precis vad som helst. (Undvik dock svenska tecken och mellanslag fr skerhets skull, det funkar kanske, men alla r nd frsiktiga med att utmana det.) Den andra parametern till en InputDevice med vrdena CorePointer respektive CoreKeyboard skall bara anges fr exakt ett inorgan. Markeringen talar om att detta r den primra musen och det primra tangentbordet. Vissa datorer har era musar och kan drfr fordra er InputDevice-sektioner. Dessa extramusar (eller extratangentbord om det nu nns sdana) skall ha vrdet AlwaysCore efter sin identierare. Detta medfr att bda musarna kan anvndas samtidigt. En del brbara datorer har denna konguration. InputDevice r sektioner som vardera denierar ett inorgan till din dator, t.ex. en mus, ett tangentbord, en touchpad o.s.v. Eftersom inorganen normalt skts av Linuxkrnan, skall du hr ange vart dessa r anslutna i operativsystemet, oftast i form av teckenenhetsler ngonstans i /dev-delen av lhierarkin. Du mste ocks ange exakt vilken typ av tangentbord, mus o.s.v. det r frga om, fr ven om din Linuxkrna och skalet r instllt fr svenska tangentbord och en viss typ av mus, hanterar X.org-servern detta helt fristende och vet inget om hur Linuxkrnan eller skalet skter saken. Det r allts ndvndigt att upprepa sig. Eftersom de esta anvndare tillbringar mer tid i X n i t.ex. Linuxkonsollen r dessa instllningar kanske nnu viktigare n instllningarna i krnan och skalet. Identier (strng) r ett namn som skall anges i ServerLayot-sektionen fr att koppla in inenheten. Driver (strng) talar om vilken drivrutin som skall anvndas fr detta inorgan. Olika former av inorgan har olika drivrutiner, de vanligaste r: Drivrutin Hrdvara keyboard Tangentbord mouse Mus Det nns andra, men de r inte speciellt vanliga. De har namn i stil med lerna som nns i /usr/lib/xorg/modules/input. T.ex. kan en joystick anvndas av den som s nskar. En touchpad eller miniatyrstyrspak av det slag som nns p brbara datorer rknas fr det mesta som en mus. 235

Kapitel 6 Fnstersystemet X
Section "InputDevice" Identifier "Foo" Driver "kbd" Option "XkbModel" "pc105" Option "XkbLayout" "se" EndSection

Figur 6.5: Denition av ett svenskt tangentbord. nskas Svorak-layout kan vrdet se ndras till dvorak(se).

Fr varje typ av drivrutin mste sedan ett antal Option-variabler sttas, fr att X.org-servern skall kunna veta hur mnga tangenter ett visst tangentbord har, om musen har ett extra skrollhjul, o.s.v. Dessa r mycket viktiga och blir tyvrr ofta fel. Ett svenskt tangentbord har standardutseendet som framgr av gur 6.5, och olika tillmpbara Option-variabler fr tangentbordet ternns i gur 6.6. En mus r lite knepigare att deniera, speciellt om en udda variant anvnds. Fr en vanlig Microsoft-tvknapparsmus som r inkopplad i PS/2-porten22 br dock sektionen se ut ngot i stil med gur 6.7. De olika Option-parameterar som kan anvndas fr en mus nns uppradade i gur 6.8. Screen r sektionen som kongurerar den skrm, eller om det rr sig om era sektioner, de skrmar som anvnds av ServerLayout-sektionen. Det mste alltid nnas minst en Screen-sektion. Fljande kongurationsrader skall kongureras: Identier (strng) anger det namn som skall anvndas fr referera till denna skrm frn ServerLayout-sektionen, t.ex. Foo. Device (strng) anger namnet i identieraren p den enhet som skall hantera denna skrm. Enheten r detsamma som ett grakkort, och denieras i en separat sektion. Monitor (strng) anger namnet i identieraren p den bildskrm som skall anvndas tillsammans med den enhet som ocks angivits, t.ex. Bar Innebrden av denna och fregende variabel blir sammantaget jag har grakkortet Foo anslutet med en kabel till skrmen Bar.
22 PS/2-porten (som heter s eftersom IBM var de frsta som anvnde den i sina PS/2 datorer) r samma typ av port med en miniatyriserad DIN-kontakt som anvnds av en modernare dators tangentbord.

236

6.2 Konguration

Option XkbRules

XkbModel

XkbLayout

XkbVariant

Vrden xorg r det vrde som denna variabel i stort sett alltid har, om den ens frekommer. Om du installerar p en Sun SPARC kommer den att ha vrdet sun men det tillhr vl ovanligheterna. Om du skulle anvnds XFree86 str hr istllet xfree86. pc105 r det normala, svenska tangentbordet. Om du rknar antalet knappar skall de vara 105 stycken, och inkluderar d tre knappar med varsin Microsoft Windows-logotype och en menytangent. Om dessa tre saknas har du istllet ett ldre tangentbord av typen pc102. Hr anvnds en geogrask landskod enligt ISO 3166 som gller fr att tala om vilka bokstver som nns p de olika knapparna. Om du talar svenska r det vanligtvis se som gller. Om du vill anvnda svensk Dvorak-layout (ibland kallad Svorak) r det dvorak(se) som skall st hr. Se tabellen p sidan 251 fr er intressanta alternativ. (Det r lmpligt att ditt val av tangentbord matchar ditt val av sprk fr systemet.) nodeadkeys r det enda vrde denna variabel kan sttas till, vilket deaktiverar mjligheten att lgga accenter med hjlp av de tangenter som normalt inte producerar ngra tecken, t.ex. att komponera den franska bokstaven genom att frst trycka p och sedan p O. Det som kallas fr dda tangenter r allts accentueringstangenterna uppe till hger p tangentbordet.

Figur 6.6: Olika Option-variabler som kan anvndas i en InputDevicesektion med Driver-variabeln satt till keyboard.

Section "InputDevice" Identifier "Foo" Driver "mouse" Option "Protocol" "PS/2" # Byt ovanstende till "IMPS/2" fr skrollhjulsmus Option "Device" "/dev/input/mice" # Byt ovanstende till "/dev/psaux" under kernel 2.4 Option "Emulate3Buttons" "yes" EndSection

Figur 6.7: Denition av ett inorgan i form av en vanlig PS/2- eller USBmus.

237

Kapitel 6 Fnstersystemet X

Option Protocol

Device

Emulate3Buttons

ZAxisMapping

Vrden Har fr det mesta vrdet PS/2 eller IMPS/2. Det frsta anger att det r en vanlig mus, det andra att det r en mus med ett skrollhjul mellan de tv tangenterna. Om du har en mus av det senare slaget skall du ocks anvnda variabeln ZAxisMapping nedan. anger vilken teckenenhetsl i operativsystemet som erbjuder kommunikation med musen. /dev/input/ mice r det generiska namnet fr alla systemets musar, men /dev/psaux brukade anges fr PS/2-musar under version 2.4 av Linuxkrnan. anger om en tvknappars mus skall kunna anvndas som en treknappars, genom att den tredje knappen (mittenknappen) representeras av ett tryck p bda tangenterna samtidigt. Detta kan vara anvndbart, eftersom mnga X-program anvnder mittenknappen itigt fr t.ex. kopiering. skall bara anvndas om du har en mus med skrollhjul, d.v.s. om Protocol ocks r satt till IMPS/2. Vrdet 4 5 anvnds normalt. Detta anger att knapp 4 och 5 p musen skall anvndas fr att kontrollera skrollhjulet. Namnet kommer frn att skrollhjulet anses utgra en tredje dimension (Z-axeln) och knapp 4 och 5 r virtuella knappar som det genereras ett antal tryckningar p nr skrollhjulet rullas upp eller ned.

Figur 6.8: Olika Option-variabler som kan anvndas i en InputDevicesektion med Driver-variabeln satt till mouse.

238

6.2 Konguration Det kan tyckas ondigt att ange vilken enhet en skrm r ansluten till, men detta har att gra med att X.org-servern genom att jmfra prestanda hos enheten med bildskrmen kan avgra vilka graklgen denna kombination klarar av att hantera. DefaultDepth (heltal) anger standardfrgdjupet fr denna kombination av enhet och bildskrm. Fr alla moderna komponenter har detta vrdet 24 eller rent av 32, och siffrorna anger hur mnga binra bitar som anvnds fr att representera ett frgvrde i en bildpunkt p bildytan. 24 bitars grak innebr att 224 = 16777216 olika frgvrden23 kommer att erhllas. Detta vrde mste matcha Depth-variabeln i ngon av Display-undersektionerna (se nedan), och det mste naturligtvis ocks stdjas av enheten (grakkortet) som anvnds. Vrdet skall vara en jmn binr multipel, eller jmt delbart med 8, d.v.s. i praktiken 1, 4, 8, 16, 24 eller 32. En del halvgamla grakkort blir ibland snabbare och du stter ned antalet bitar frn 24 till 16, och om du inte jobbar med digitalt foto r skillnaden marginell. ldre grakkort kunde ha vrdet 8 hr, eftersom de bara kunde hantera 28 = 256 olika frger, och om du anvnder riktigt gamla X-program kan du f behov av std fr s.k. PseudoColor, och detta kan erhllas genom att stta DefaultDepth till 8, samt lgga till en motsvarande Screen-sektion. (Se vidare information under kommandot xdpyinfo nedan.) Utver detta nns alltid en eller era undersektioner till Screen, med namnet Display. En Screen-sektion har det typiska utseendet i gur 6.9. Undersektionen Display innehller alltid: Depth (heltal) ett frgdjup, som fr DefaultDepth ovan, 2, 4, 8, 16, 24 eller 32 bitar. Minst en av Display-undersektionerna mste ha ett frgdjup som matchar DefaultDepth p ovanliggande niv. Modes (strngar) fljs av ett antal strngar som innehller tillgngliga upplsningar fr den frgmod som anges fr denna Display, angivet i X Y -format. Eftersom ett strre antal frger kan medfra att det krvs mycket minne fr att lagra frgerna, och att antalet bildelement, och drmed upplsningen blir lidande. Drfr kan det
23 Ibland

slarvigt kallat sexton miljoner frger trots att det r nrmare sjutton.

239

Kapitel 6 Fnstersystemet X
Section "Screen" Identifier "Fnord" Device "Foo" Monitor "Bar" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection

Figur 6.9: Denition av ett ganska vanlig skrm i X, med enbart 24 bitars frgdjup och en maxupplsning p 1024 768 bildelement.

t.ex. vara lgre hgstaupplsning fr 24-bitarsfrg n fr 16bitarsfrg, och drfr fr du mjlighet att p detta vis vlja vad du vill ha. Upplsningarna anges frn vnster till hger, den som ligger lngst till vnster (i exemplet ovan 1024x768 kommer att anvndas som standard. Skall du bara anvnda din skrm i en upplsning (t.ex. hgsta upplsningen) s rcker det med ett enda vrde, s lnge det fungerar. De tre upplsningarna som angetts i exemplet r ngot av standard, men du br i din bildskrms manual kunna hitta vilka maxupplsningar den klarar av. Vissa skrmar hanterar upp till 1280x960 bildelement, och vissa 1152x864. Om du r osker kan du skriva in era olika med den hgsta frst, fr om du kongurerat din enhet (grakkort) och bildskrm korrekt, kommer X.org-servern att rkna ut ifall en upplsning r fr hg fr utrustningen och automatiskt att prova med nst hgsta och s vidare nedt, tills det hittar en upplsning som fungerar. I tidigare versioner av XFree86 anvndes inte detta system med Display-sektioner, utan ett mycket mer komplicerat system med s.k. modelines i sektionen Monitor anvndes. Detta var betydligt mer komplicerat och som tur r slipper du i regel att anvnda detta. (Modelines-formatet kommer inte att redovisas hr.) Device anger kongurering fr ett grakkort som anvnds i din dator. X.org-servern kan anvnda era grakkort, men normalt har du bara ett. Identier (strng) anger det namn som Screen-sektionen skall an240

6.2 Konguration vnda fr att referera till detta grakkort. Driver (strng) r namnet p den drivrutin som skall anvndas fr att kontrollera det hr kortet. De drivrutiner som fljer med X.org-servern nns lagrade i katalogen /usr/lib/xorg/modules/drivers och har namn i stil med foo_drv.o. Detta innebr att om ditt grakkort anvnder drivrutinen med namnet foo_drv.so s r det foo som skall st i Driver-variabeln. Vanliga rutiner r de som nns i gur 6.10. Anledningen till att kretstillverkare (engelska: chipset manufacturer) r angiven, r att mngden vrldens samlade grakkort r mycket stort, helt enkelt drfr att olika tillverkare kpt in IC-kretsar och tillverkat kort som de slt under eget namn. Uppsttningen med olika kretsar som kan anvndas fr att tillverka sdana kort r dremot mycket begrnsad, och korten fungerar ofta likadant, trots vitt skilda namn. Om du inte har en aning om vem som tillverkat din kretsuppsttning gr det alltid bra att skruva ur grakkortet ur datorn och titta p det, eller om det sitter p datorns moderkort, inspektera moderkortet i nrheten av videokontakten. Skningar p Internet kan ocks hjlpa till. Det r inte skert att Linux stdjer alla grakchips som existerar, men en frkrossande majoritet kan anvndas, och fungerar inget annat s fungerar ofta VESA-drivrutinen, eller i vrsta fall VGArutinen. VendorName (strng) skall innehlla namnet p grakkortstillverkaren, t.ex. Foobar International. BoardName (strng) skall innehlla namnet p just detta grakkort, t.ex. Foobar FunCard. Varken detta eller fregende r tekniska krav, utan mer fr ditt eget vidkommande, samt fr att felmeddelanden o.dyl. skall vara begripliga. VideoRam (heltal) fr de esta grakkort krvs inte denna variabel, den anvnds bara i drivrutiner till grakkort som inte sjlva kan rapportera hur mycket minne som sitter p kortet. Om den nns med har den vrden som anges i kilobyte: 1024 = 1MB minne, 2048 = 2MB minne o.s.v. En fullstndig Device-sektion kan se ut som i gur 6.11. De esta grakkort tillter en hel drs Option-variabler fr att sl p eller av specialfunktioner i kortet. Som sagts tidigare r 241

Kapitel 6 Fnstersystemet X

Namn apm ark ati eller atimisc chips cirrus cyrix fbdev glint i128 i740 i810 mga

neomagic nsc nv r128 radeon

rendition s3 s3virge savage siliconmotion sis

tdfx trident tseng vesa

vga

via

Kretstillverkare Alliance ProMotion och AT-chip. ARK Logic (Advanced Rendering Kernel) ATI (Allied Telesyn International), ldre kort. Nyare kort anvnder Rage eller Radeon-chip, se nedan. Chips and Technologies ctXXXXXX-chip. Cirrus Logic Cyrix och Natsemi Geode, fretaget numer uppkpt av VIA. Linux Framebuffer egentligen inget grakkort, drivrutiner i Linuxkrnan anvnds istllet. GLINT Permedia, Delta och Gamma-chip. Number 9 I128 Intel i740 anvnds mycket p moderkort med inbyggt grakkort. Intel i810 och uppt (i815, i830...) Matrox klarar de esta kort, men Matrox tillhandahller ven drivrutiner separat, som ibland r bttre och nyare n X.org-rutinerna. Neomagic MagicGraph National Semiconductor GEODE NVIDIA (klarar inte alla kort och r inte lika bra som fretagets egna drivrutiner fr X.org-servern) Allied Telesyn International (ATI) Rage 128 ATI Radeon ATI tillhandahller egna och ofta bttre drivrutiner till vissa nyare kort, liksom det fristende projektet GATOS, vars rutiner lngsamt integreras med X.org-servern. Rendition eller Micron Verite V1000-, V2000-, V3000-chip. S3 ldre grakkort. S3 ViRGE och Trio-chip. S3 Savage, ProSavage och Twister-chip. SiliconMotion Lynx-chip. SiS (Silicon Integrated Systems) chip. Denna drivrutin till X.org-servern (liksom motsvarande framebuffer-drivrutin i Linuxkrnan) r skriven av den svensksprkige sterrikaren Thomas Winischhofer. 3dfx-chip av alla slag, Voodoo-kort anvnder dessa. Trident Blade, Image, ProVida, TGUI o.s.v. Tseng Labs Klarar alla grakkort som uppfyller VESA-specikationen. Denna drivrutin kommer ocks automatiskt att anvndas ifall du inte specicerar ngon drivrutin alls. Klarar gamla VGA-kort. Nstan alla kort kan hantera detta lge, men de esta klarar ocks VESA, s VGA skall bara anvndas p riktigt gamla kort. Denna ger dock bara 8-bitars frg vilket sllan blir srskilt vackert. VIA Technologies (taiwanesiskt fretag) grakkretsar.

Figur 6.10: Drivrutinnamn och motsvarande chipset i X.org-servern.

242

6.2 Konguration
Section "Device" Identifier Driver VendorName BoardName VideoRam EndSection

"Foobar" "foo" "Foobar International" "Foobar FunCard" 8192

Figur 6.11: Denition av en drivrutin fr ett Foobar FunCard-grakkort med 8 MB videominne.

det enklaste sttet att se vilka sdana som nns att kra Xorg congure och titta p den kongurationsl som skapas. Om detta inte fungerar, eller om du omjligen kan frst alla Optioninstllningar, kan du prova med att skriva t.ex. man mga, fr att i bsta fall f upp en manualsida om Matroxkorten. Fungerar inte detta r bsta tipset att titta p internethemsidan fr X.org-servern, och drnst att lsa kllkoden eller frga p ngon av projektets epostlistor. Monitor r sektionen som anvnds fr att kongurera din bildskrm. Fr detta fordras en hel del information. Normalt nns denna information i manualen till din bildskrm. Om du inte har ngon manual, eller har blivit av med den, terstr mjligheten att skaffa fram informationen frn tillverkaren eller p annat hll, t.ex. via Internet. Kongureringskommandot Xorg -congure kommer att frska frga bildskrmen vad den kan hantera genom att anvnda en VESA-standard som kallas EDID, Extended Display Information Data som innebr att grakkortet anvnder VGA-kabeln till bildskrmen som en kommunikationslnk fr att hmta information om den. Det r inte alla grakkort (speciellt inte ldre kort) som kan hantera denna VESA-standard, och d kan det ibland hjlpa att ytta bildskrmen till en annan dator med ett bttre grakkort och kra Xorg -congure dr fr att f fullstndig information om bildskrmen. Ett annat bra stt r att titta i den hrdvarudatabas med namnet hwdata som medfljer Fedora Core (och Red Hat): i /usr/share/ hwdata nns en l som heter MonitorsDB och som innehller data om era tusen bildskrmar. (Paketet hwdata nns ven till Debian GNU/Linux och kan installeras med apt-get install hwdata.) 243

Kapitel 6 Fnstersystemet X Om du tminstone har tillverkarnamn och modellnummer p din bildskrm brukar den g att hitta i denna l. Fljande vrden skall kongureras fr en bildskrm: Identier (strng) ett namn fr att den Screen-sektion som anvnder bildskrmen skall kunna hitta den. VendorName (strng), skall innehlla namnet p tillverkaren, t.ex. Foobar. ModelName (strng), skall innehlla namnet p bildskrmsmodellen, t.ex. Foobar Megamonitor 11-P. Varken denna eller den fregende variabeln fordras rent tekniskt (och det spelar fljdaktligen ingen roll om du stavar fel), utan r avsedda att ka lsbarheten och kvaliteten p eventuella felmeddelanden. DisplaySize (heltal) (heltal) r tv siffror som anger storleken p bildytan i millimeter, X Y . Du kan mta med en linjal om du inte redan knner till dessa dimensioner. Siffrorna anvnds fr att berkna skrmens DPI-vrde.24 HorizSync (yttal) - (yttal) anger i vilken hastighet skrmen klarar av att svepa frn vnster till hger. Anges antalet sdana svep per sekund, erhlls en frekvens, normalt i kHz-omrdet. Detta kallas horisontell synkroniseringsfrekvens och terminologin r prglad av att den ursprungligen har utformats fr katodstrlerr (engelska: CRT Cathode Ray Tube) av den typ som nns i TV-apparater och mnga bildskrmar.25 Detta vrde skall skrivas in som ett yttal med bindestreck mellan, och kommer att tolkas som kilohertz (103 ) t.ex.:
HorizSync 24.0 - 50.0

VertRefresh (yttal) - (yttal) anger samma typ av frekvens fr den vertikala synkroniseringen, och detta vrde faller normalt inom Hz-omrdet och angivet vrde kommer att tolkas som Hz, t.ex.:
VertRefresh 50.0 - 60.0

24 DPI str fr dots per inch, d.v.s. punkter per tum, och X- och Y -vrdena anvnds t.ex. fr att terge cirklar och liknande s att de blir proportionerliga och inte ggformade. 25 Fr dagens platta bildskrmar kanske denna terminologi knns lite mossig, men datan verfrs faktiskt till dem p samma vis, ven om det kanske inte r skert att bilden faktiskt uppdateras s snabbt som informationen till skrmen verfrs.

244

6.2 Konguration Gamma (yttal) (yttal) (yttal) anger gammakorrigering fr rd, grn och bl frgkanal. Vrden mellan 1.0 och 10.0 accepteras. Om du inte arbetar professionellt med grak eller har en aning om vad detta r kan du lugnt ignorera det hela och strunta helt i denna rad. Nr en bildskrm visar en viss intensitet av en viss frg (rd, grn eller bl) kommer den att frvrnga signalen frn grakkortet ngot, s att bara min- och maxintensiteten fr frgen visas korrekt. Kurvan frn intensitet 0.0 till 1.0 r allts inte liner. Fr att kompensera fr detta kan vissa grakkort utfra gammakorrigering p den elektriska signal som skickas till bildskrmen. Att mta upp dessa korrigeringsvrden exakt krver normalt speciella instrument som appliceras p bildskrmen. Om bilder p din skrm har en ltt missfrgning jmfrt med originalen, kan det vara s att du har behov av gammakorrigering. r det rdstick i bilden, s skall gammakorrektionsvrdet fr grnt och bltt kas fr att kompensera fr detta, o.s.v. Du kan testa fram gammakorrektionsvrden interaktivt med programmet xgamma (se nedan), men fr att gra ndringen permanent krvs att du skriver in den i kongurationen fr bildskrmen. Option DPMS nns nstan alltid satt p moderna bildskrmar, och dess vrde fr en oknd skrm framgr av hwdata-len frn Fedora. DPMS str fr display power management signaling och r en standard utformad av VESA fr att signalera till en bildskrm att den skall blanka d.v.s. g ned i vilolge och slcka skrmen. Detta skall normalt vara pslaget om din monitor stdjer det, eftersom det sparar bde energi, pengar (ven livstiden fr bildskrmen frlngs) och milj.

En fullstndig Monitor-sektion kan ha ett useende som pminner om gur 6.12.

Utver denna konguration kan sektioner med namnen ServerFlags, VideoAdaptor, Modes och Vendor frekomma. De har dock sllan synts till i det verkliga livet, s du kan nog utg frn att du slipper att se dem. 245

Kapitel 6 Fnstersystemet X
Section "Monitor" Identifier VendorName ModelName DisplaySize HorizSync VertRefresh Option EndSection

"Bar" "Foobar" "Foobar Megamonitor 11-P" 290 210 24.0 - 50.0 50.0 - 60.0 "dpms"

Figur 6.12: Denition av en billig bildskrm med den fysiska storleken 290 210 millimeter, och std fr energisparlge enligt DPMS.

6.3

Programmen i X

ven om X.org-servern fr det mesta bara nns fljer det faktiskt med en hel del program i paketet, som kan anvndas fr att administrera, testa och njustera X. Hr fljer en lista ver de viktigaste, mest basala X-programmen: Xorg eller bara X r sjlva huvudprogrammet, X-servern. Det r detta program som lser in kongurationslen, initierar musar och grakkort, och visar grak under GNU/Linux. Under frutsttning att ingen annan X-server redan kr i ditt operativsystem kan du faktiskt starta X.org-servern med bara kommandot Xorg eller rent av bara X fljt av enter. Du fr d en svart X-skrm med en X-formad markr. Du kan starta program p denna arbetsyta manuellt, t.ex., om du vxlar till en annan textkonsoll och skriver:
# export DISPLAY=:0 # xeyes&

Detta kommer att tala om fr programmen att de skall startas p skrm 0 p den lokala maskinen. Nr du vxlar tillbaka till X med Ctrl+Alt+F7 ser du att programmet har startats. Du kan starta era X-servrar p en och samma dator om du har lust. Xorg :1 kommer att starta en andra skrm med numret 1, och lgger den i VT8, s att du nr den med Ctrl+Alt+F8. Shr kan du hlla p om du vill. Eftersom det r ganska trkigt med en sdan hr svart X-server nns det andra program som kan starta X.org-servern p ett lite mer intuitivt vis. 246

6.3 Programmen i X xinit startar en enkel X-server och kr sedan en skriptl som heter /etc/ X11/xinit/xinitrc, som frst kongurerar en del grundlggande saker och sedan i sin tur skall se efter om anvndaren har ngon .xinitrc-l i sin hemkatalog. Om en sdan nns skall denna att kras som om den vore ett skript. Om ingen sdan skriptl nns, hnder normalt ngot annat; det vanligaste r att systemet startar en standardiserad skrivbordsmilj eller en mindre fnsterhanterare. Det r allts hrifrn som GNOME eller KDE startas, antingen direkt eller via ett eller annat sekundrt skript. Notera allts, att om du vill byta ut fnsterhanteraren p ett POSIXsystem som kr X, s skall du som anvndare kunna gra detta genom att lgga in en .xinitrc-l med ett skript. Du kan drfr installera en hel fnsterhanterare i din hemkatalog och kra den helt enkelt genom att ndra i .xinitrc. En fnsterhanterare skall alltid startas med kommandot exec, t.ex. exec twm. Den mycket spartanska fnsterhanteraren TWM (Tiny Window Manager) fljer med X.org-servern och nns oftast tillgnglig fr den som vill skala av allt graskt lullull frn sin fnsterhanterare med en .xinitrc i den hr stilen (TWM har en svart bakgrundsskrm och Xformad markr, du mste trycka p vnsterknappen fr att ngot skall hnda efter uppstart):
#!/bin/sh exec twm

Samtidigt r det vrt att ppeka, att om du nu skulle gra ngot fel, s att det som startas i din .xinitrc-l inte fungerar, nns det risk att du skjuter dig sjlv i foten och lser dig ute frn fnstersystemet. D kan du bli tvungen att logga in via en textterminal frn en annan dator fr att rtta till felet, eller bara ta bort den felaktiga .xinitrc-len. Det r faktiskt t.o.m. mjligt fr en anvndare att byta ut sjlva Xservern genom att anvnda skriplen .xserverrc i sin hemkatalog, och drifrn kra nskad server med skalkommandot exec. Detta fr dock betraktas som mycket ovanligt. startx r det kommando som brukar fredras fr att starta X efter inloggningen. Det anvnder i sin tur xinit, s detta kommando r egentligen bara till fr att frenkla hanteringen av fregende kommando. En vanlig variant r: 247

Kapitel 6 Fnstersystemet X startx -- -depth 8 starta X med bara 8 bitars frgdjup (under frutsttning att ditt grakkort kan hantera det och att en motsvarande Display-undersektion existerar i din Screen-sektion i xorg.conf). -depth 16 gr t.ex. ocks bra fr att testa om prestanda kar i detta frglge. De tv bindestrecken som fregr parametern talar om att det r X-servern som skall pverkas. xdm X Display Manager r en standardiserad skrmhanterare. (Frvxla ej med fnsterhanterare!). En skrmhanterare r ett demonprogram som nr det frsta gngen startats i sin tur startar xinit, och instruerar X-servern att starta ett inloggningsfnster, vanligtvis bara fr inloggning p den egna datorn. Nr en anvndare sedan loggar ut stngs X-servern av, och XDM kommer d att upptcka detta och starta en ny inloggningsskrm, s att nsta anvndare kan logga in p datorn. De esta GNU/Linux-system r kongurerade att fungera p just detta vis. Projekten GNOME och KDE har skrivit egna skrmhanterare, gdm respektive kdm som utfr samma sak som XDM, med skillnaden att de har lagt till en del frg och form, sprkval, samt ngra extra funktioner fr att t.ex. stnga av datorn frn inloggningsskrmen utan att logga in. I ett strre system med mnga datorer, dr anvndare skall kunna logga in p varandras maskiner, eller dr du vill kunna anvnda tunna klienter, s.k. X-terminaler26 kan XDM anvndas s, att det istllet fr inloggningsskrmen presenterar en lista p tillgngliga datorer, ur vilken du vljer en dator som du vill logga in p, och sedan fr upp den vanliga inloggningsrutan fast p den valda datorn. Hela din session kommer sedan att kras p den andra datorn, medan graken skickas ver ntverket. Eftersom xdm och liknande program anvnds av de esta distributioner kan det uppst problem nr du t.ex. vill ladda i en ny konguration i X.org-servern. Det kan d vara ndvndigt att ta ner maskinen i en icke-grask krniv med init 4 och sedan starta X-servern igen med init 5. Det r viktigt att se till att du har en fungerande X-server innan du stter den till att starta varje gng du gr upp i krniv 5, om detta r den niv maskinen automatiskt startar i, vilket det normalt r. Saken r den, att init-demonen nmligen inte ger sig frrn den
26 Se

vidare sidan 256.

248

6.3 Programmen i X fr igng det som angetts i varje krniv, s om X-servern kraschar s startas den om (kallas respawn) ad nauseam tills dess den lyckas eller tills init-demonen upptcker att den faktiskt bara startar om hela tiden. Detta gller alla program du startar frn inittab-len med respawn, men r ovanligt strande nr det gller X, eftersom skrmen och konsollerna imrar och det blir svrt att kontrollera systemet ver huvud taget. Du kan bli tvungen att starta om datorn och dra upp krnan i enanvndarlge fr att sedan editera /etc/inittab s att inte X-servern startas om hela tiden. (Se ven avsnitt 5.4.3 p sidan 189 om init och krniver.) xdpyinfo (kortform av X display information) visar grakprestanda fr den skrm du fr tillfllet anvnder. D menas inte bildskrm utan det som svarar mot Screen-sektionen i kongurationslen, d.v.s. kombinationen av grakkort, drivrutin och bildskrm. Detta tolkas oftast bara som X-serverns prestanda. Med prestanda menas i detta fall hur stor upplsning skrmen har, hur stor markren kan vara, diverse teknisk information samt vilka Visuals skrmen kan hantera. En Visual (ngot bra svenskt ord har jag inte hittat) r en beteckning p ett visst frghanteringslge. Nufrtiden betyder det fr det mesta DirectColor eller TrueColor, vilket innebr att varje bildelement har reserverat t.ex. 24 bitar i grakminnet fr att vlja en godtycklig frg. Gamla grakkort stdde normalt bara PseudoColor, vilket betydde att frgen p en pixel inte sattes individuellt med ett antal bitar per pixel, utan att de 8 bitarna i en pixel anvndes fr att peka ut en frg ur en viss palett, som sedan i sin tur ndrades. Om frgen i paletten byttes ut, byttes drfr frgen p alla bildelement som refererade till denna palettposition. Mnga programmerare anvnde detta trick, som inte fungerar med moderna grakkort annat n i 8-bitarslget, och drfr nns det nnu en del program som klagar ver att de inte kan hitta PseudoColor p datorn.27 xset kan stlla in en del variabler i X-servern, det allra vanligaste anvndningsomrdet torde vara xset b off vilket stnger av det evinnerliga pipandet som uppstr nr du t.ex. blddrar hgst upp i en l och inte kommer lngre. Fljande brukar anvndas mer eller mindre sllan:
27 Se avsnitt 6.2 p sidan 239 fr information om hur du aktiverar PseudoColor fr ditt grakkort.

249

Kapitel 6 Fnstersystemet X Kommando xset b off xset b on xset c off xset c on xset -dpms xset +dpms xset r off Effekt Stnger av terminalpipet. Slr p det igen. Slr av terminalklicket. Slr p det igen. Slr av DPMS energisparfunktioner (se sidan 245) slr p det igen. Stnger av tangentrepetition. (Att hlla nere en tangent genererar inte en lng rad tecken, utan bara ett enda.) Slr p det igen. rapporterar aktuella instllningar.

xset r on xset q

xhost anvnds fr att ange vilka datorer som fr, respektive inte fr ansluta till din X-server. Det anses att den som arbetar vid X-servern skall avgra vilka andra datorer som skall tilltas att ppna fnster p den. Med xhost + tillts alla datorer i hela vrlden att ppna fnster p din dator. Det r kanske inte s bra, men du kan vara ganska vertygad om att vrlden inte kryllar av personer som frsker ppna fnster p andras datorer p pin kiv. Drfr r det ganska vanligt att anvnda detta kommando fr att slppa in frmmande fnster. Om du r mer frsiktig av dig kan du skriva t.ex. xhost foo.bar.org fr att bara lta anslutningar frn datorn med namnet foo.bar.org g fram. Fr att ppna ett fnster frn den andra datorn rcker det med att stta miljvariabeln $DISPLAY s att den pekar p din dator. Normalt behver ven skrmens ID-nummer anges, t.ex. foo.bar.org:0. Om din dator heter fnord.foo.org skall anvndaren p datorn med namnet foo.bar.org allts skriva exempelvis:
# export DISPLAY=foo.bar.org:0 # xeyes&

Detta kan du sjlv prova frn en annan dator om du har ett inloggningskonto dr. Om du sjlv vill ppna fnster frn en annan dator hem till dig sjlv, dr du sitter, skall du dock normalt anvnda SSH, som i de esta fall automatiskt krypterar och verfr en X-frbindelse mellan tv eller era datorer. Om detta inte vill fungera kan dock ovanstende vara till hjlp. 250

6.3 Programmen i X setxkbmap gr det mjligt att byta tangentbordslayout. Alla mjliga layouter r representerade i /usr/share/X11/xkb/symbols men de som en svensk anvndare kan tnkas behva r vl: Namn se dvorak(se) sapmi(se) dk no Layout Svenskt standardtangentbord Svenskt Dvorak-tangentbord Samiskt tangentbord fr norra Sverige Danskt tangentbord Finskt tangentbord Norskt tangentbord

Fr att byta till samiska skriver du t.ex. setxkbmap sapmi(se). Ngon speciell tangentbordslayout fr menkieli, jiddisch eller romani chib fanns inte nr jag underskte detta, men det r inte srskilt svrt att stadkomma en modierad variant om det skulle behvas. Nsta kommando kan faktiskt anvndas till sdana saker: xmodmap anvnds fr att modiera tangentbordslayouten, och kan t.ex. byta plats p vissa knappar, men ven byta hela layouten i ett svep p samma vis som setxkbmap. Du skall dock anvnda det fregende kommandot fr att byta hela layouten; xmodmap r ett gammalt X-program. Det vanligaste anvndningsomrdet fr en svensk torde vl vara att pilla in svenska tangenter p en dator som ptrffats i utlandet, men som inte har setxkbmap. Du kan byta en individuell tangent med t.ex. xmodmap keycode 9 = A fr att f fram ett stort A vid tryck p Esc-tangenten. Vilka siffror som betyder vad efter keycode r dremot inte s ltt att veta, men i katalogen /usr/share/X11/xkb/keycodes nns ler som visar hur olika fysiska tangentbord mappar till siffror. Du kan sedan med xmodmap vlja att mappa dessa siffror till ett visst tecken. Fljande sekvens ger svenska tecken p de positioner dr vi r vana vid att ha dem:
keycode 34 = aring Aring keycode 48 = adiaeresis Adiaeresis keycode 47 = odiaeresis Odiaeresis

Raderna ovan kan skrivas in i en l och kras med xmodmap foo.map eller kras en i taget med t.ex.: xmodmap -e keycode 34 = aring Aring. 251

Kapitel 6 Fnstersystemet X xgamma r ett interaktivt program fr gammakorrigering, en princip som beskrivs p sidan 245. xvidtune r ett interaktivt program fr att justera instllningarna fr horisontell och vertikal uppdateringsfrekvens. Det r avsett fr den gamla arkitekturen med Modeline-rader i kongurationslen, och skall inte anvndas med X.org-servern annat n om du prompt mste skriva sdana Modeline-saker i din kongurationsl. Programmet kan orsaka fysiska skador p svl grakkort och bildskrm vid felaktigt anvndande. xkill kan anvndas fr att vlja ut ett fnster och dda det program som hanterar fnstret, s att det frsvinner, som en grask motsvarighet till POSIX-kommandot kill. Eftersom de esta progam i moderna fnsterhanterare har en stngningsknapp () hgst upp till hger i fnstret, r detta kommando ganska gammaldags och frlegat. xsetroot byter utseende p rotfnstret. T.ex. xsetroot -solid gray kommer att gra rotfnstret grtt istllet fr svart. De esta fnsterhanterare har egna rutiner fr att byta detta utseende, och vissa (t.ex. GNOME) lgger ett enda stort, vanligt fnster ver rotfnstret s att det inte alls syns, och d r det ju ingen strre mening med det hela. Anvnd allts inbyggda kommandon i skrivbordsmiljn eller fnsterhanteraren fr att modiera detta. Utver dessa grundlggande program medfljer ocks ett antal program fr anvndare, utan vilka det vore ganska svrt att ver huvud taget anvnda X till ngonting nr det vl installerats. De r liksom ovanstende program ursprungligen frn systemet X och r drfr inte utformade fr eventuella skrivbordsmiljer eller fnsterhanterare som du anvnder. Frdelen med dem r att de alltid nns tillgngliga och kan anvndas fr att testa X. De esta programmen r svartvita, vilket beror p att de r anpassade fr att kunna kras p datorer med 1 bits frgdjup vilket oftast r vitt p svart, men p mnga ldre datorer kan vara t.ex.terminalgrnt eller terminalgult p svart. xterm r det mest anvnda av programmen som fljer med X. Det anvnds fr att ge anvndare ett terminalfnster under X, dr sedan anvndarens standardskal ppnas. I olika skrivbordsmiljer och fnsterhanterare nns olika versioner av den hr typen av terminalfnster, och du br snabbt lra dig att hitta dem p ett nytt system men fungerar inget annat kanske du kan klura ut 252

6.4 Teckenuppsttning ett stt att kra igng det hederliga gamla xterm. I vissa POSIXsystem r detta rent av standardterminalen. xconsole ger utskrifter som normalt skulle hamnat p /dev/console. Prova att starta xconsole och i ett terminalfnster skriva:
echo "fnord" > /dev/console

Normalt skickas denna text till aktuell terminal p datorn, men xconsole kommer att fnga upp meddelanden frn alla anvndare och visa dem i ett fnster. I GNU/Linux skickas bland annat alla meddelanden frn krnan till /dev/console, och dyker d och d upp som ovlkommen text i ngot terminalfnster. xload visar ett svartvitt rullande stapeldiagram som visar hur belastad datorn r ver tid.28 xlogo ger en vacker X-logotyp i ett eget fnster. Detta program r fga anvndbart annat n mjligen till tester. xcalc ger en mycket enkel och rudimentr minirknare. oclock ger en gammal klocka med visare. xclock ger en modernare klocka med visare, och lite frger om du har tur. xeyes r ett omtyckt program med tv gon som tittar p muspekaren. xbiff ger en bild p en nordamerikansk postlda med en agga p sidan som far upp om du fr epost. Namnet kommer frn en hund med namnet Biff. Hundar skller som bekant nr brevbraren kommer. Din dator mste leverera epost lokalt fr att detta skall fungera.

6.4

Teckenuppsttning

Hanteringen av teckenuppsttningen i X r en ganska udda historia som ibland kan dyka upp i de mest ovntade sammanhang, och som drfr behver frklaras nrmare. Fonterna (vilket r det engelska ordet fr stilsats, d.v.s. ett samlingsplats fr ett typsnitt, och som idag brukar beteckna den l i vilken ett
28 r du intresserad av den hr typen av belastningsvervakning rekommenderas ett modernare program, t.ex. gkrellm.

253

Kapitel 6 Fnstersystemet X teckensnitt nns lagrat) i X.org-servern hittas genom att ska i de skvgar som angivits i sektionen Files i ngon av variablerna fr FontPath. Den del av X.org-servern som hanterar fonter kallas Xfont och anvnder numera programbiblioteken FreeType och Fontcong fr att utfra jobbet. Fontcong hanterar inlsningen av fonterna, medan FreeType hanterar visningen.29 FreeType ger std fr fljande typer av fonter: TrueType (*.ttf, *.ttc) CID-kodad Type 1 OpenType X11 PCF BDF Type42 Type 1 (*.pfa, *.pfb) CFF SFNT-bitmapfonter (*.snf, *.bdf, *.pcf) Windows FNT PFR Bitstream Speedo (*.spd)

Du kan lgga till fonter fr hela X-systemet genom att lgga dem i ngon av katalogerna under /usr/share/X11/fonts. Drefter mste du kra kommandot fc-cache fr att X.org-servern skall upptcka dem. En enskild anvndare kan ocks lgga till fonter genom att lgga dem i den dolda katalogen .fonts i sin hemkatalog, och de kommer d att lsas in nsta gng anvndaren loggar in. S.k. TrueType .ttf-fontler frn Microsoft Windows kan t.ex. anvndas utan problem. De kommer d att integreras med fontsystemet i X. Namnen p fonter i X r ngot frskrckande, t.ex.:
-misc-fixed-*-*-*-*-20-*-*-*-*-*-*-*

Detta beror p att en applikation som vill anvnda en viss teckenuppsttning bara specicerar vissa krav p vad som nskas. Stjrnorna (*) ovan har str fr vad som helst, precis som om de vore ett globbningsuttryck. De 14 flten specicerar 14 mjliga nskeml, frn vnster till hger: Foundry betyder egentligen gjuteri, och betecknar upphovsman till fonten. Frr i tiden gjts ju en font av ngon i form av blytyper, drfr kallas upphovsmannen till en font gjutare. Flera fretag har donerat fonter till X-projektet. Family betecknar en viss familj av fonter, t.ex. times eller courier. Ordet sans som frekommer i en del familjer betyder sans serif, d.v.s.
29 Egentligen r det X Xfont/Xrender Xft FreeType/Fontcong. Webblsaren Mozilla, ordbehandlaren OpenOfce.org samt skrivbordsmiljerna GNOME och KDE anvnder ocks FreeType och Fontcong, ibland genom Xrender och ibland inte. I framtida X-servrar ssom Xgl anvnds antagligen inte Xrender alls, utan OpenGL anvnds direkt.

254

6.4 Teckenuppsttning utan serifer att fontens tecken saknar de fr Times och liknande utstickande klackarna upptill och nedtill p tecknen som anses underltta lsningen. Weight betecknar teckentjockleken hos tecknen, t.ex. bold (fetstilt). Slant betecknar hllningen p tecknen, italic (kursiv) roman (romansk) eller oblique (bde och). Set width r ett medelvrde p bredden av tecknen i fonten. Eftersom tecknen kan vara olika breda fr olika bokstver anvnds detta vrde fr att vlja genomsnittlig bredd. Det r inte siffervrden som anges, utan ett antal frdenierade breddegenskaper, t.ex. bold (fet), normal eller condensed (frttad). Additional stye vljer ytterligare egenskaper hos fonten. Hr r det mjligt att vlja mellan tv eller era varianter av en font, t.ex. sans fr en variant utan serifer. Pixel size Z hjden p sjlva fonten i bildelement. Precis som p en blytyp inkluderar hjden eventuellt vitt utrymme under och ver sjlva bokstverna. Point size Z Samma hjd, fast angiven i antal punkter, en gammal ty1 pogrask mttenhet. En punkt 72 tum 0, 353 millimeter. Resolution X den skrmupplsning i X-led som fonten r avsedd fr, angivet i bildelement per tum. Resolution Y den skrmupplsning i Y -led som fonten r avsedd fr, angivet i bildelement per tum. Spacing r den typ av mellanrum som anvnds i fonten angivet med en bokstav, dr monospaced r den enklaste typen: alla tecken r lika breda, vilket krvs av t.ex. terminalfnster, proportional tillter att ett i r betydligt smalare n ett w precis som i den hr bokens text. Average width den genomsnittliga bredden av tecknen i fonten angivet i antal tiondels bildelement. Registry r namnet p den organisation eller standard som r upphov till kodningen av fonten, d.v.s. i vilken ordning de olika tecknen kommer. Fr unicode r det iso10646 som gller, medan den gamla ISO-standarden har namnet iso8859. 255

Kapitel 6 Fnstersystemet X

Figur 6.13: X font selector (xfontsel) kan interaktivt testa olika fonter i X.

Encoding kodningen fr denna teckenuppsttning. Detta vrde utnyttjas normalt tillsammans med fregende, fr att vlja en ISO 8859standard, stt t.ex. Registry till iso8859 och Encoding till 5 fr att vlja teckenkodningen iso8859-5 (kyrilliska tecken). Anvnds iso10646 i Registry skall detta vara satt till *, eftersom unicode per denition innehller alla tecken. Vissa program (t.ex. orbehandlaren OpenOfce.org) frenklar denna hantering avsevrt, fr att gra det lite mer bekvmt fr anvndaren. Fr att vlja ut ett teckensnitt genom att ange dessa vrden r ganska tidsdande. Det nns ett antal program som hjlper till med valet: xlsfonts (utlses list X fonts) listar alla tillgngliga fonter i systemet. Det blir ganska mnga. xfontsel (X font selector) r ett program fr att interaktivt testa att vlja en teckenuppsttning genom att skruva p ovanstende parametrar. Detta fljer alltid med X, se gur 6.13. gfontsel (GNOME font selector) r den senare GNOME-varianten av samma program, som ibland nns tillgngligt. fc-list r ett program som hr samman med programbiblioteket Fontcong, och som listar de fonter som just Fontcong hller reda p. Fontcong vljer att skala av en hel del av de detaljparameterar som X normalt anvnder. fc-cache uppdaterar som nmnts Fontcong:s lista ver tillgngliga fonter.

6.5

X-terminaler
Startpunkt: http://www.ltsp.org/

256

6.5 X-terminaler

Figur 6.14: X-terminaler ansluts ver ntverk till en central dator som tillhandahller all programvara utom X-servern och terminalens operativsystem.

Att anvnda s.k. X-terminaler eller tunna klienter som de ocks kallas, har blivt allt mer populrt. Flera svenska fretag sljer lsningar som har till ml att byta stora, dyra datorsalar p t.ex. bibliotek och skolor, mot billiga datorsalar med tunna X-terminaler. Med tunn klient menas helt enkelt en klen dator. S klen r den tunna klienten, att den bara frtjnas att kallas terminal, precis som de gamla terminalerna av den typ som omtalas i avsnitt 2.3.11 p sidan 105 och framt. (Repetera hr lmpligen ven stycket om klient och server i avsnitt 2.3.10 p sidan 104.) X-terminalerna fungerar s, att den klena datorn frses med ett mycket kompakt och rudimentrt GNU/Linux-system, som ntt och jmnt r kapabelt att starta upp X-servern. Sjlva operativsystemet behver inte ens ligga p en hrddisk i sjlva datorn, utan kan laddas ned frn ntverket. X-servern p denna terminal kongureras sedan fr att antingen ppna en skrm direkt mot en annan dator, eller fr att anvnda programmet XDM (se sidan 248) som via protokollet XDMCP (X Display Manager Conguration Protocol) kan hmta en lista ver datorer som nns tillgngliga fr inloggning, om det nu nns era tillgngliga. Den dator som tillhandahller tjnsten kallas terminalserver. P terminalservern, som r en s kapabel arbetshst som mjligt, med mycket minne och llagringsutrymme, nns sedan ett fullstndigt utbyggt GNU/Linux-system med skrivbordsmilj och allt annat som ingr. Allt detta upplever anvndaren som lika snabbt som om den egna X-terminalen var en pigg och alert dator, trots att den bara har till uppgift att hantera grak, mus och tangentbord. Det r inte srskilt svrt att inse att detta r exakt den ursprungliga avsikten med MIT:s Athena-projekt som berttades om i brjan av detta kapitel: att anvnda billig utrustning fr att minska datordriftkostnader. Mnga anvnder ocks gamla datorer som blivit stende som X-terminaler, eftersom mnga sdana maskiner klarar vl av att visa grak och kommunicera ver ntverk i hg hastighet. 257

Kapitel 6 Fnstersystemet X Kommersiella leverantrer frser ofta sina X-terminaler med mjlighet att ven kra Microsoft Windows-program, eller att ansluta till Windows terminalservrar, eftersom dessa r mycket populrta. Ett problem med X-terminaler r att andra delar av maskinvaran, bortsett frn grak och inorgan, inte r ntverkstransparenta. T.ex. r det knepigt att f ljudet i GNU/Linux att transporteras ver ntverk, och t.ex. USB-portar och liknande som nns p en riktig dator r oftast strt omjligt att ansluta till en billig X-terminal. De passar drfr bst i mindre avancerade miljer, t.ex. fr vanliga kontorsgroml eller undervisning. Mnga fretag vljer att bygga sina egna tunna klienter med utgngspunkt frn t.ex. Linux From Scratch, men de esta sneglar nd p LTSP (Linux Terminal Server Project) som har en frdig lsning som fungerar tillsammans med de esta distributioner, och detta r den startplats som rekommenderas fr att komma ingng med X-terminaler p tunna klienter.

6.6

Skrivbordsmiljer

Skrivbordsmiljerna r den del av GNU/Linux som utvecklats mest explosivt under de senaste ren. Detta hade sin grund i att det avskalade X och dess simpla fnsterhanterare r s primitiva och ointuitiva att de faktiskt r obegripliga fr en s.k. vanlig anvndare. Drfr har tv separata projekt startat som intimt frknippas med den graska miljn i GNU/Linux: KDE och GNOME. Dessa skrivbordsmiljer r s utformade att de, p samma vis som skrivbordsmiljerna fr Macintosh eller Microsoft Windows, skall erbjuda anvndaren allt denne kan nska sig av en modern skrivbordsmilj p en dator. Skrivbordsmiljerna r ocks utvecklingsplattformar eller ramverk: en utvecklare som skriver ett program fr GNOME eller KDE, vet att programmet kommer att kunna anvndas av alla operativsystem som kan anvnda GNOME eller KDE. Det behvs sllan srskilt mnga anpassningar av ett program fr att lyckas med detta. Skrivbordsmiljerna innehller s.k. ramverk fr programutveckling, vilket betyder att det nns en mngd frdiggjorda saker som kan teranvndas.30
30 Mnga tidiga program som skulle anvndas i era olika operativsystem var tyvrr tvungna att uppnna det hr hjulet p nytt. Program som OpenOfce.org eller Mozilla br tydliga tecken av detta; bda programmen har egna portabla grundtyper, trdabstraktion, widget:ar, komponentobjekt etc. som behvs fr skrivbordsprogram. Bde GNOME och KDE erbjuder detta frdigt.

258

6.6 Skrivbordsmiljer

Figur 6.15: Ngra av de widget:ar (manicker) som tillhandahlls av GTK+.

Fr en historisk tillbakablick p skrivbordsmiljerna fr POSIX-system brjar vi dock med CDE.

6.6.1

Motif och CDE

I begynnelsen fanns Athena-projektet, och inte ens de orkade anvnda det mycket krngliga programmeringsgrnssnittet i X. Av den anledningen byggde MIT en uppsttning widget:ar. Ordet widget, som p svenska blir grej, manick eller liten pryl, betecknar ett graskt byggelement av den typ som krvs fr att kunna bygga graska anvndargrnssnitt. Vi r hr tvungna att anvnda den ngot klumpiga frsvenskningen widget, eftersom det inte nns ngot vedertaget svenskt ord fr detta. Widget:ar r t.ex. inkapslingsboxar, knappar, menyrader, listboxar, radioknappar, kryssboxar, trdstrukturer, o.s.v. Figur 6.15 visar ngra widget:ar frn GTK+. Widget:ar brukar sgas vara grunden till ett fnstersystems look and feel: du ser direkt om en skrmbild r tagen frn GTK+, Qt- eller fr den delen Windows API. En widget-uppsttning brukar frutom dessa byggelement ocks innehlla ett system fr att hantera hndelser, varmed avses t.ex. tryck p musknappar och tangentbord. Program som anvnder detta kan registrera sig som lyssnare p vissa hndelser, s att de p det viset kan snappa upp signaler frn anvndaren och antingen blockera och behandla dem, eller skicka dem vidare till andra komponenter i systemet. 259

Kapitel 6 Fnstersystemet X De widget:ar som Project Athena skapade kallades Xaw, efter len dr de lg, libXaw.a, och det skall frmodligen frsts som Athena widgets for X eller ngot liknande. Dessa anvndes under ganska lng tid, eftersom de distribuerades tillsammans med X. Runt r 1989 hade X blivit s mycket standard i UNIX-vrlden att organisationen Open Software Foundation sg det som ndvndigt att standardisera den allt mer spretiga arbetsmiljn under X. Drfr skapades widget-uppsttningen Motif som senare standardiserades som IEEE 1295, och i frlngningen av Motif CDE, Common Desktop Environment, den gemensamma skrivbordsmiljn fr alla UNIX-system. Med Motif fljde en stilmall och riktlinjer fr hur applikationer skulle utformas fr att vara giltiga Motif-applikationer. Motif vandrade sedan tillsammans med CDE fram och tillbaka mellan olika organisationer, och tillhr idag The Open Group. Motif eller CDE har dock aldrig ngonsin varit fri programvara, utan alltid krvt godknnande av en proprietr licens. CDE tillkom inte frrn 1993, d ett antal leverantrer (bl.a. Sun Microsystems, Hewlett-Packard, IBM, Novell o.s.v.) annonserade att de tillsammans skulle utveckla Common Open Software Environment (COSE), varav den gemensamma skrivbordsmiljn CDE skulle vara en vital del. Efter detta blev CDE med Motif den standardiserade skrivbordsmilj som anvnds i alla stora, proprietra, graska UNIX-system. Detta hll i sig tills augusti r 2000 d Sun Microsystems, den frmodligen viktigaste drivkraften bakom CDE, annonserade att de skulle verge CDE till frmn fr GNOME. Vad CDE tillfrde var: Sessionshantering tillstndet p skrivbordet kunde lagras. Virtuella skrmar det var nu mjligt att ha era mindre arbetsytor av ett strre virtuellt skrivbord. Frontpanelen en panel med mjlighet att starta applikationer av den typ som ofta nns lngst ned eller lngst upp i moderna graska operativsystem. En lhanterare och en applikationshanterare fr att navigera runt bland ler och starta applikationer. Ett antal standardverktyg: texteditor, ikoneditor, online-hjlpsystem, en bttre terminalemulator n gamla xterm och en minirknare, till exempel. En utskriftshanterare. 260

6.6 Skrivbordsmiljer Drag-och-slpp-funktionalitet mellan applikationer. Internationalisering och internationellt sprkstd. Det r fascinerande att se hur mycket av detta som knntecknar de moderna skrivbordsmiljerna: i princip alla dessa punkter r fortfarande den viktiga krnan i alla sdana miljer. Nr CDE kom runt 1994 var det frmst inspirerat av Microsoft Windows 3.11, men till skillnad frn Windows har det inte utvecklats mnga steg sedan dess. CDE ser idag i princip likadant ut som d. Rent estetiskt skulle nog mnga formgivare hvda att CDE r fult som stryk, men det r nog snarare tidstypisk grnssnittsdesign frn mitten av 1990talet. Inte heller det underliggande Motif har frndrats nmnvrt.

6.6.2

Qt och KDE
Ofciell hemsida: http://www.kde.org/

r 1994 hade osloborna Eirik Eng och Haavard Nord bildat fretaget Quasar Technologies i syfte att utveckla en ny uppsttning widget:ar i stil med Motif. Skillnaden hr var att denna widgetuppsttning, som ck namnet Quasar Toolkit, eller kort och gott Qt, skulle g att anvnda oavsett om programmen var skrivna fr POSIX-operativsystem, Macintosh eller Microsoft Windows. Fretaget Quasar Technologies bytte sedan namn till Trolltech, vilket gr att namnet Qt kanske r lite maplac, men det har nd ftt hnga med. Nr sedan tysken Matthias Ettrich31 till slut trttnade p att inte kunna anvnda ngon ordentlig skrivbordsmilj under GNU/Linux, och drfr bestmde sig fr att skriva en egen, valde han att basera denna p Qt. Till skillnad frn mnga andra widget-uppsttningar var Qt skrivet fr det objektorienterade programsprket C++ vilket ytterligare tilltalade Ettrich. I en postning till ett antal Linuxinriktade nyhetsgrupper i oktober 1996 utlyste han projektet Kool Desktop Environment, KDE. Frutom att be om hjlp med programmeringen, skissade han ven upp projektets syfte. Dr framgr bland annat:32 Tanken r inte att skapa ett graskt anvndargrnssnitt fr hela UNIX-systemet eller fr systemadministratren. Fr det ndamlet r UNIX kommandoradsgrnssnitt med tusentals verktyg och skripsprk mycket bttre. Idn r att skapa
31 Ettrich 32 Min

r annars mest knd fr att ha skrivit LaTeX-editorn LyX. versttning.

261

Kapitel 6 Fnstersystemet X

Figur 6.16: K Desktop Environment (KDE) har ett standardtema som ltt knns igen. Ett annat knnetecken r en frkrlek fr kugghjul.

ett graskt anvndargrnssnitt avsett fr en slutanvndare. Ngon som vill surfa p ntet med Linux, skriva ngra brev och spela ngra trevliga spel.[9] Flera utvecklare hrsammade omedelbart Ettrich, och brjade utveckla KDE tillsammans med honom. En av dem var Matthias Kalle Dalheimer i Vrmland. P det ftal r som gtt sedan denna annons har KDE utvecklats till en fullstndig skrivbordsmilj. Frn brjan var syftet att n upp till och verglnsa CDE, vilket snart lyckades. Sedan sattes fokus p att n samma stil och anvndarvnlighet som Microsoft Windows, ngot som ocks mste sgas ha lyckats. KDE r idag knt fr att vara det normala frstahandsvalet fr GNU/Linux-anvndare som kommer frn Microsoft Windows-vrlden. Fr att utforma skrivbordssystem krvs nstan alltid ngon form av komponentobjektmodell. Dessa r en utveckling av grundtanken som framkastades av Douglas McIlroy redan 1968, men skillnaden mellan rr och lter-modellen r att komponentobjekt kan kommunicera i tv riktningar. En anropad komponent kan svara p ett meddelande och lmna upplysningar som den anropande komponenten tar hnsyn till. I skrivbordssystem r komponentobjekt speciellt viktigt, eftersom drag-och-slpp-funktionalitet eller dokument med blandat innehll krver att framfr allt graska objekt skall kunna fungera sjlvstndigt. De olika programmen i en skrivbordsmilj behver helt enkelt anropa varandra. Drfr har KDE skapat en egen komponentmotor med 262

6.6 Skrivbordsmiljer namnet DCOP33 Ovanp DCOP nns ven ett ramverk fr att vva in applikationer i varandra (typexemplet r en formeleditor inuti en ordbehandlare) med namnet KParts.34

6.6.3

GTK+ och GNOME


Ofciell hemsida: http://www.gnome.org/

Nr projektet KDE kommit igng, eller snarast precis samtidigt som det kom igng, uppstod en inammerad debatt om KDE:s frhllande till det norska Trolltech och dess widget-uppsttning Qt. Flera fretrdare fr fri mjukvara tyckte att det var oansvarigt att anvnda Qt, eftersom detta vid tillfllet inte var fri mjukvara. Kllkoden fanns tillgnglig, och Qt kunde laddas ned gratis, men det var frbjudet att sprida modierade versioner av Qt, eller att tillverka proprietra program fr Qt utan att betala licensavgift. Matthias Ettrich som startat KDE var pragmatiker: ven om KDE i sig sjlvt anvnde licensen GPL, var han inte av sikten att alla borde eller mste gra det. Han hade snarast mlet om ett vl fungerande system fr gonen, inte ngra krav om att det ndvndigtvis skulle vara helt fritt, i GNU-projektets anda. Mexikanaren Miguel de Icaza var en av de som tidigt imponerades av KDE och diskuterade drfr projektet med svl Red Hat, som med GNU-projektets ledare Richard Stallman. Icaza ville att Free Software Foundation skulle stdja KDE, men den proprietra licens som anvndes av Qt gjorde detta omjligt, eftersom spridningen av sdan mjukvara motverkade FSF:s ml. Icaza kontaktade d Trolltech via epost och frgade om de kunde tnka sig att byta licensen fr Qt till GNU-projektets GPL. Mjligen var denna kontakt en smula odiplomatisk eftersom han passade p att ppeka en rad felaktigheter som Trolltech skrivit om GPL p sin webbsida. Han ck inga svar frn Trolltech. Efter att ha insett att detta inte skulle lsa problemen frskte han tillsammans med ngra vnner att arbeta fr att frbttra fnsterhanteraren GNUStep, vilket visade sig lnlst. I augusti r 1997 bestmde han sig drfr att tillsammans med ngra kamrater skriva GNOME. GNOME r, frutom att ordet betyder tomte, en akronym fr GNU Network Object Model Environment. Denna
33 ursprungligen med namnet KOM (fr att travestera Microsofts COM (Component Object Model) och baserad p standarden CORBA (Common Object Request Broker Architecture) skapat av Object Management Group. KDE har senare vergett KOM och CORBA, eftersom det inte var tillrckligt vl anpassat fr KDE:s behov. 34 KParts kallades tidigare (under KOM) fr OpenParts.

263

Kapitel 6 Fnstersystemet X

Figur 6.17: Skrivbordsmiljn GNOME har element av Macintosh:s startmeny verst (detta gr att vlja), en navigationslist nedtill med val av virtuell skrivbordsyta och lista ver krande program. En stor mngd program installeras normalt tillsammans med GNOME, ett par av dem syns hr.

kryptiska frkortning hade sitt ursprung i att Icaza imponerats av den komponentobjektmodel som utvecklats p Microsoft (omvxlande knd som OLE (Object Linking and Embedding), ActiveX och COM (Component Object Model)). Ett programmeringsprojekt fr en liknande struktur fr GNU/Linux i graska miljer hade lett fram till att han skrivit en del kod under namnet GNOME och som nu kunde teranvndas.35 En av Miguels kamrater var Federico Mena, som arbetat mycket med ritprogrammet The GIMP, en Photoshop-klon fr POSIX-system och en del av GNU-projektet. Han knde till att en av frfattarna till programmet, Peter Mattis, hade trttnat p att frska anvnda wigetuppsttningen Motif fr att bygga programmet, och drfr skrivit en egen med namnet GTK+: The GIMP Toolkit. Plustecknet kom sig av, att nr det frsta gngen skulle integreras med The GIMP ck det skrivas om till stora delar, och kallades drefter GTK+. I detta lge beslutade allts Icaza att bygga en hel skrivbordsmilj fr GNU/Linux, i grunden baserad p GTK+, under namnet GNOME. Senare samma r brjade Red Hat att stdja projektet med sitt utvecklingslaboratorium, dr era anstllda kunde arbeta heltid med att bara utveckla GNOME. Version 1.0 av GNOME slpptes i mars r 1999. De frsta versionerna av GNOME var instabila och svra att anvnda, men sedan version
35 Detta r den del av GNOME som numera kallas fr ORBit (motsvarar KDE:s DCOP) och Bonobo (motsvarar KDE:s KParts).

264

6.7 VNC 2.0 som kom i juni 2002 har projektet blivit allt mer stabilt och lttrrligt. Det har ocks vuxit enormt i popularitet visavi KDE och nr Sun Microsystems r 2000 annonserade att de avsg att byta ut CDE mot GNOME i sitt operativsystem Solaris var detta nnu en stor framgng fr projektet. Sedan Trolltech r 1999 slppte Qt under GPL-licensen har den ursprungliga anledningen till att GNOME skapades helt frsvunnit, och vrlden har istllet ftt tv olika skrivbordssystem. Till viss del har detta naturligtvis varit ett slseri med resurser, men det r d vrt att betnka, att programmen frn de tv projekten kan samexistera till viss del. T.ex. fredrar mnga KDE-anvndare epostprogrammet Ximian Evolution, trots att KMail r det som fljer med KDE. Det r inte heller skert att Qt skulle ha slppts under GPL om inte GNOME uppsttt. GNOME r i dagslget tnkt att integreras med OpenOfce.org, s att detta blir en naturlig del av GNOME. Som webblsare anvnds Epiphany, som i sin tur r baserad p Mozilla. Det r ocks vrt att pongtera, att GNOME r och alltid har varit en del av det strre GNU-projektet.

6.7

VNC

Frkortningen VNC skall utlsas Virtual Network Computing och springer ursprungligen ur ett projekt p AT&T Cambridge i England. Termen kommer frn ett projekt med en supertunn klientdator med namnet Videotile. Detta var en dator med en enkel LCD-skrm och en styrpenna som enda inorgan. Datorn krde AT&T:s eget operativsystem ATMos, ett operativsystem som liksom Videotile-datorn sjlv var utvecklat speciellt fr att utnyttja hghastighetsntverk av typen ATM (Asynchronous Transfer Mode). Tanken var att ntverket skulle kunna vara s snabbt att allt som hnde p skrmen och alla inmatningar som gjordes p den skulle kunna skickas ver ntverket utan att anvndaren upplevde ngon mrkbar frdrjning. Konceptet r mycket likt det som gllde fnstersystemet X, men blev till skillnad frn det senare aldrig ngon framgng, i varje fall vad betrffar billighetsdatorn Videotile. Emellertid kom det nya protokoll som anvndes av Videotile, nmligen VNC, att bli framgngsrikt. Detta utvecklades s att en klient som t.ex. Videotile skulle kunna ansluta till en dator med vilket operativsystem som helst, och ta kontroll ver den graska anvndarmiljn. VNC har i stort mycket gemensamt med X. Det har ungefr samma ml och ambitioner: att anvnda billig hrdvara och erbjuda ntverk265

Kapitel 6 Fnstersystemet X stransparens. Den udda terminologin frn X ternns dremot inte hos VNC: programmet du anvnder fr att ansluta dig med kallas vncviewer och r en klient, medan den dator du ansluter till kr en server. VNC:s huvudsakliga anvndningsomrde har blivit fjrrstyrning: i synnerhet anvnds det mycket av personer som i sitt arbete behver kunna kontrollera era datorer, som ibland r placerade i serverrum och p andra svrtkomliga stllen. Det anvnds ocks fr att kunna anvnda andra operativsystem n det egna, genom att ppna en VNCsession mot detta andra operativsystem. Det andra systemets skrivbordsmilj kan ppnas i form av ett fnster, och behver inte ta upp hela skrmen p den anropande datorn, ven om mnga anvnder det s. Vad som huvudsakligen skiljer VNC frn X r att VNC inte kan transportera enskilda fnster ver ntverket. X kan ppna ett enstaka program och skicka dess grnssnitt till en annan dator: VNC kan bara skicka ver hela den graska anvndarmiljn. Nr VNC krs under X skapas en separat session fr detta, s att VNC inte str det samtidiga arbetet p datorn det ansluter till, men i andra operativsystem kan VNC helt ta ver mus och tangentbord, s att maskinen omjligen kan anvndas frn tv platser samtidigt. VNC nns i dagslget till bland annat GNU/Linux, Microsoft Windows och MacOS X. I era distributioner kommer det frinstallerat.

266

K APITEL

7 Kringutrustning

Detta kapitel avhandlar olika former av kringutrustning, d.v.s. saker du ansluter till din dator med olika former av sladdar. Undantaget r mus, tangentbord och bildskrm (som behandlas i kapitlet om fnstersystemet X) och modem, som behandlas i kapitlet om ntverket. Hanteringen av denna typ av utrustning ligger i varierande grad utanfr sjlva Linuxkrnan. Detta r bra, eftersom det ger ett rent grnssnitt mellan olika delkomponenter i systemet och gr krnan liten och kompakt. Det gr det ocks mjligt att uppgradera en systemkomponent utan att en annan systemkomponent pverkas av detta.

7.1

Skrivarhantering: CUPS och Foomatic

Alla program som gr utskrifter i GNU/Linux gr det genom att anropa programmet lpr, och skicka en PostScript-l till speciallen stdin kopplad till det programmet. Programmet lpr kan ocks ta rtext, som redan beskrivits, t.ex. lpr foo.txt. Om du har en PostScript-l som du vill skriva ut, kan du helt enkelt skriva lpr foo.ps. Alla utskrifter som skickas till lpr skickas i sin tur vidare till en demon, som tar hand om utskriften och ser till att den skrivs ut p ngon skrivare. Demonen skriver ut utskriften p en skrivare genom att skicka en strm av binr information till skrivarporten p den dator dr skrivaren r ansluten. Vanligtvis r detta samma dator som demonen sjlv krs p. Om informationen skickas till /dev/lp0 kommer Linuxkrnan i

Kapitel 7 Kringutrustning Tillmpningsprogram lpr Utskriftsdemon drivrutin /dev/lp0 Linuxkrnan Skrivarport


Figur 7.1: Utskriftsystemet i GNU/Linux s som det kan se ut p en dator med lokal skrivark i form av en utskriftsdemon. Hr visas det vanligaste fallet en skrivare kan ocks vara ansluten till USB-porten.

princip bara att se till att informationen som kommer in i denna teckenenhetsl gr rakt igenom och ut p skrivarporten. Linuxkrnan har allts i sig ingen information om olika skrivare och deras eventuella drivrutiner, och vet ingenting om hur skrivare egentligen fungerar: det enda den knner till r skrivarportar. Skrivare kan ocks vara anslutna via USB, vilket behandlas p ett liknande anonymt vis. All information om hur skrivaren egentligen fungerar, och drmed alla drivrutiner fr olika slags skrivare, nns i utskriftsdemonen som tar hand om de utskrifter som skickas till den via lpr-kommandot. Sammantaget ser systemet ut som i gur 7.1 Skrivardemonen har ven hand om en s.k. utskriftsk, som gr att era program kan skriva ut samtidigt utan att det fr den sakens skull blir brk om skrivarporten p datorn. Skrivardemonerna kan ven vlja att inte skicka utskriften till den egna datorns skrivare, utan att skicka den till en skrivare p en annan dator, via ntverket. Skrivardemoner i GNU/Linux hanteras nstan alltid av utskriftssystemet CUPS. CUPS r en akronym fr Common UNIX Printing System, men det borde snarare heta Common POSIX Printing System, eftersom det anvnds framfr allt av GNU/Linux-varianter. Fre CUPS fanns LPD (line printer daemon), LPRng (line printer next generation), och en mngd andra utskriftssystem. De r numera vsentligen utdda alla anvnder CUPS, som lyckats etablera en bred standard fr hur skrivare skall fungera i alla POSIX-system. CUPS anvnds ven av Solaris och MacOS X. CUPS bygger p IETF:s standard IPP Internet Printing Protocol, som beskrivs i en mycket omfattande mngd RFC-dokument. Det r i grund 268

7.1 Skrivarhantering: CUPS och Foomatic och botten en demon som krs p en dator med en ansluten skrivare. Demonen tar hand om utskriftsjobb frn den egna datorn eller andra datorer i det lokala ntverket, och ser till att de blir utskrivna. Alla utskrifter till CUPS skall som tidigare nmnts skickas i formatet PostScript, som r ett sidbeskrivningssprk uppfunnet av John Warnock p Adobe i slutet av 1970-talet. P s vis behver GNU/Linux-program inte bekymra sig om annat n att producera PostScript-kommandon fr det de vill skriva ut, resten skter CUPS. CUPS-demonen har ett eget anvndagrnssnitt det r en webbsida p den dator dr demonen installerats. Om du arbetar p samma dator som kr CUPS r adressen:
http://localhost:631/}

Hrifrn kan utskriftsjobben vervakas och styras. Om CUPS kr p ngon annan dator i ntverket fr du naturligtvis lov att ange DNSadressen eller IP-numret fr datorn istllet fr localhost. Det krvs att du loggar in med rootlsenordet fr att administrera skrivaren via webbgrnssnittet. CUPS r inte helt homogent: dels anvnder det i sin tur ESP Ghostscript fr att konvertera utskrifterna som kommer i PostScript-format till sitt eget rastergrakformat, dels anvnder det drivrutindatabasen Foomatic som ser till att CUPS i slutnden anvnder rtt drivrutin fr att hantera utskriften, och som ocks tar hand om att formatera utskriften p rtt vis. De graska skrivbordsmiljerna har byggt egna verktyg som i sin tur anvnder sig av CUPS: KPrint fr KDE och GNOME:s verktyg, som fyndigt nog heter bara utskriftshanteraren. Fr att gra utskrifter frn en ensam dator med en skrivare ansluten i den egna skrivarporten1 brukar dessa verktyg rcka till alldeles utmrkt fr att kongurera och kontrollera utskrifter. Kongureringsprogrammen har mjlighet att anvnda IPP-protokollet fr att frga CUPS-demonen om skrivaren har ngra speciella instllningar, t.ex. om den kan skriva ut i frg eller dubbelsidigt, eller om den kan hfta samman pappren. Om sdana speciella kommandon stds, kan programmet som utfr utskriften frga anvndaren om dessa kryddor nskas,2 och i s fall haka p denna information i PostScript-len innan utskriften skickas vidare till lpr. lpr skickar drefter
1 Skrivarporten (printer port) p en PC r en 25-polig DSUB-kontakt och kallas ibland fr LPT1 efter den gamla CP/M- och DOS-namngivningen. Du kan som sagt ocks ha anslutit en skrivare till USB-porten. 2 Extrainformationen, kryddorna bestr i sjlva verket av en s.k. PPD-l, PostScript Printer Denition.

269

Kapitel 7 Kringutrustning hela den resulterande PostScript-len till skrivardemonen, som tolkar extrainformationen och konverterar PostScript-len till en rasterbild, och sedan i slutnden skickar denna rasterbild till sjlva skrivaren.3 Extrainformationen skickas i slutskedet direkt till skrivarens drivrutin. Att lgga p sdan extrainformation p utskriften stdjs i varierande grad av olika skrivare och kongurationsprogram. KDE:s skrivarkongurationsprogram KPrint r t.ex. mycket vlutvecklat och har std fr att hantera de esta sdana kryddor. Instllningarna kan gras i KDE:s kontrollcenter. De graska grnssnitten kan ibland hantera andra utskriftsystem n CUPS, t.ex. LPRng, Windowsskrivare och Hewlett-Packards JetDirect. Det gr det i och fr sig mjligt att till viss del anvnda andra skrivarsystem n CUPS, men det r sllan detta behvs. I ett rent, modernt GNU/Linux-system med era datorer och en gemensam skrivare, r en av datorerna kopplad till till skrivaren, och alla andra datorer anvnder sedan i sin tur skrivaren via ntverket och CUPS. Med hjlp av programmet Samba kan en CUPS-skrivare ansluten till ett GNU/Linux-system gras tillgnglig ven fr Windowsanvndare p ett lokalt ntverk, se avsnitt A.6 p sidan 413.

7.2

Scanner
Ofciell hemsida: http://www.sane-project.org/

Precis som r fallet med skrivare, s ligger all hantering av bildinlsare (engelska: scanner, ibland slarvigt kallade skannrar) helt utanfr Linuxkrnan. Program som anvnder bildinlsare anvnder SCSIgrnssnitten, USB-portarna eller rent av skrivarporten p datorn, men den enda roll krnan har r i princip att skicka vidare signalen till den fysiska porten. Ett fristende och helt dominerande projekt tar hand om uppgiften att hantera bildinlsare: programbiblioteket Sane (Scanner Access Now Easy). Detta fyller exakt samma funktion som scannersystemet TWAIN4 som anvnds i Macintosh- och Microsoft Windows-system. Du kan testa om Sane kan hitta din scanner genom att kra kommandot sane-nd-scanner som fljer med programbiblioteket. Om detta program kan hitta scannern, kommer alla andra program som anvnder Sane frmodligen ocks att gra det.
3 Om

skrivaren kan tolka PostScript direkt kommer sidorna naturligtvis inte att rastre-

ras.
4 Namnet TWAIN kommer frn en idiomatisk fras av Rudyard Kipling: . . . never the twain shall meet . . . men mnga lser nd ut det som en akronym fr Technology Without an Interesting Name.

270

7.2 Scanner Tillmpningsprogram Xsane, Kooka, etc. Programbiblioteket Sane /dev/sg0, /dev/lp0, /dev/usb/scanner0 . . . Linuxkrnan SCSI-port, Skrivarport, USB-port
Figur 7.2: Scannersystemet i GNU/Linux, versiktligt.

Till detta bibliotek nns de graska anvndargrnssnitten Xsane5 (X:et kommer naturligtvis av att programmet r skrivet fr fnstersystemet X) som r baserat p GTK+ och Kooka6 som anvnds av KDE. Det senare kan ven utnyttja GNU-projektets Ocrad eller det fristende GOCR som r program fr att tolka textmassor frn inlsta dokument, s.k. textigenknning (p engelska kallat fr OCR, Optical Character Recognition). Dessa anvndargrnssnitt kan anvndas fristende fr att lsa in bilder, men det vanligaste r att de i sin tur startas av andra program som t.ex. The GIMP,7 dr inlsta bilder kan beskras och bearbetas. Svl programbiblioteket Sane som ett eller era graska anvndarverktyg fljer med i de esta GNU/Linux-distributioner. Om du vill anvnda en scanner ansluten till den egna datorn r det oftast bara att starta Xsane eller Kooka (eventuellt frn ett annat program som The GIMP) och lsa in bilden. Om du vill ha en scanner ansluten till en enda dator i ett ntverk och lta andra datorer ansluta sig till denna dator fr att utfra bildinlsningar nns en scannerdemon med namnet saned som medfljer programbiblioteket Sane. Denna demon startas vid behov frn inetd eller xinetd (se avsnitt 9.4 p sidan 329) och brukar vara deaktiverad i de esta distributioner. Manualsidan fr saned ger mer information fr den som behver anvnda detta system.

http://www.xsane.org/ http://www.kde.org/apps/kooka/ 7 Program som The GIMP avhandlas i kapitel 11 om tillmpningsprogram.


6 Se:

5 Se:

271

Kapitel 7 Kringutrustning

7.3

USB-enheter

USB-enheter r all form av modern utrustning som ansluts till USBportarna p din dator. Moderna IBM PC-kompatibla datorer har ofta minst tv USB-portar, och dessa kan sedan grenas ut med s.k. USBhubbar s att upp till 127 olika USB-enheter (teoretiskt sett) kan anslutas till en och samma dator. USB r en de facto-standard denierad av USB Implementers Forum och erstter successivt alla gamla anslutningsdon fr modem, skrivare, scanner, externa hrddiskar etc. i syfte att skapa ett mer enhetligt och intelligent system fr externa enheter. ven tangentbord, hgtalare och musar ansluts nu allt oftare via USB. Ett av huvudmlen med USB-specikationen r att externa enheter inte skall fordra speciella drivrutiner, utan tillhra en s.k. enhetsklass som anger hur enheten skall bete sig visavi operativsystemet, oavsett vilket operativsystem detta nu rkar vara. P s vis blir det allt lttare att anvnda ny kringutrustning med GNU/Linux. USB-systemet i GNU/Linux bygger p tv separata delar: Krnans drivrutin fr den fysiska USB-porten. Denna kan vara en av tre typer: OHCI (Open Host Controller Interface), UHCI (Universal Host Controller Interface) eller EHCI (Extended Host Controller Interface). OHCI och UHCI r drivrutiner fr USB 1.1-specikationen, medan EHCI anvnds fr USB 2.0. P nyare datorer r det sledes den senare som skall anvndas. Stdet fr EHCI i 2.4-versionen av Linuxkrnan r dessvrre ganska oplitligt, och det kan drfr vara ndvndigt att istllet anvnda ngon av de gamla drivrutinerna. I 2.6-versionen av krnan skall EHCI fungera som tnkt. Hotplug-systemet. USB-enheter r gjorda fr att kunna kopplas in och ut under drift. Krnan kommer d att lgga till, respektive ta bort grnssnittet ur krnan, och anropar sedan programmet /sbin/ hotplug.8 Detta program delegerar i sin tur arbetet till skriptet /etc/hotplug/usb.agent som i sin tur kan anvnda ytterligare skript p samma plats. Om ngra speciella moduler behver laddas in i krnan fr att hantera den enhet som just anslutits, kommer skripten i /etc/hotplug att se till att dessa moduler laddas. Om modulerna inte nns tillgngliga kan det bli problem. Skripten i /etc/hotplug kommer ven att anropas nr utrustningen kopplas loss.
8 Hotplug anvnds ven fr andra enheter som kan kopplas in under krning, t.ex. rewire (IEEE 1394), vissa ntverkskort, vissa PCI-enheter o.s.v.

272

7.3 USB-enheter

Figur 7.3: Schematisk bild av hur Linuxkrnan anvnder USBmasslagringsenheter. I detta exempel har en digitalkamera monterats som /mnt/camera.

7.3.1

USB-lagringsenheter, digitalkameror etc.

USB kan anvndas fr att ansluta svl mus som tangentbord och t.o.m. hgtalare till datorn, men den vanligaste typen av USB-enheter r antagligen s.k. USB mass storage-enheter. Denna enhetstyp anvnds av USB-nycklar (den typ av USB-enheter som mnga har som nyckelring och universell diskett) och av mnga digitalkameror, MP3-spelare och portabla hrddiskar. Varje USB-enhet som ansluts till en buss tillhr en s.k. enhetsklass. Den klass som gller fr USB mass storage r gemensam fr alla enheter av denna typ. Denna klass kommer alltid att hanteras p samma vis av hotplug-systemet, och din Linuxkrna behver allts inte knna till just din typ av enhet fr att veta vad som skall gras d den ansluts, det rcker att den avsljar att den tillhr klassen USB mass storage. En enhet som anvnder USB mass storage blir frst en USB-enhetsl ngonstans under hierarkin /dev/usb. Drefter kommer hotplugskripten med hjlp av modprobe att ladda en SCSI-lagringsenhetsmodul med namnet sd_mod (storage device), som i sin tur anvnder den generella scsi_mod. Dessa SCSI-moduler behvs, eftersom dessa lagringsenheter anvnder en speciell form av SCSI-protokollet ver USB-kabeln. Drefter laddas modulen usb-storage in i krnan, och ansluts mellan USB-enhetslen och SCSI-modulen. USB-enheten kommer d att dyka upp som en ren SCSI-enhet med ett namn som t.ex. /dev/sda. Enheter av det hr slaget har sllan mer n en partition. Alla de moduler som nmnts mste nnas tillgngliga i Linuxkrnan eller i form av inladdningsbara moduler, annars kommer det hela att misslyckas, och du kan inte anvnda din lagringsenhet. De esta distributioner (men inte alla) kommer frdiga med alla dessa moduler tillgngliga ngonstans i /lib/ modules. USB-lagringsenheten r vanligen sedan partitionerad i olika partitioner som vilken hrddisk som helst, t.ex. kommer antagligen /dev/sda1 att beteckna den frsta partitionen p lagringsenheten /dev/sda. Om denna inte monteras automatiskt kan du vanligen montera den som root med kommandot mount /dev/sda1 /mnt/foo frutsatt att mon273

Kapitel 7 Kringutrustning teringspunkten (katalogen) /mnt/foo existerar. En frformaterad USB-enhet brukar anvnda ngon variant av lsystemet FAT9 och detta mste d naturligtvis stdjas av krnan. Filsystemet FAT r bland GNU/Linux-anvndare ven knt som VFAT, men VFAT betecknar egentligen bara metoden fr att lagra lnga lnamn i ett FAT-lsystem.10 Det nns inget krav p att just FAT skall anvndas p en USB-enhet, men i t.ex. en digitalkamera s skall ju sjlva kameraoperativsystemet ocks kunna anvnda lsystemet, och dessa stdjer oftast bara FAT. Filsystemet p en USB-nyckel kan du byta hur du vill, och du kan ven partitionera om nyckeln, men om du vill kunna anvnda nyckeln tillsammans med Microsoft Windows br du hlla dig till en partition med FAT-lsystem. De esta USB-nycklar kommer dessutom frformaterade med detta lsystem. Vissa portabla hrddiskar levereras med lsystemet NTFS frinstallerat, och om din Linuxkrna inte stdjer detta kan du utan vidare formatera om det till t.ex. Ext2. De esta distributioner har kommit lngt med std fr denna typ av enheter, och fr en vanlig anvndare kan det ofta rcka med att koppla in USB-enheten fr att den skall dyka upp som en ikon p anvndarens skrivbord.

7.4

CD- och DVD-brnning

Det nns olika slags CD- och DVD-skivor: CD-ROM och DVD-ROM r skivor som tillverkats p fabrik genom en litogrask process. CD-R eller DVDR r skivor som levereras tomma och kan brnnas hemma, en gng. Att skivorna kan brnnas en gng betyder i detta fall att samma omrde p skivan bara kan skrivas en gng. Du kan sedan i och fr sig skriva en liten bit av skivan t gngen, genom att anvnda olika s.k. sessioner. Beteckningen DVDR kommer ur frhllandet att det nns tv konkurrerande DVD-standarder fr brnnbara skivor: en med namnet DVD-R och en med namnet DVD+R. De esta moderna brnnare och lsare kan hantera bda dessa standarder och anvnder drfr i allmnhet samlingsbeteckningen DVDR. De tomskivor som du kan kpa i handeln brukar i allmnhet vara DVD+R. CD-RW och DVDRW r samma sak som CR-R och DVDR med tillgget att skivan ocks kan raderas och p s vis anvndas era gnger.
Allocation Table nns i varianterna FAT12, FAT16 och FAT32 innebr att ett lnamn lagras som upp till extra fyra individuella FATkatalogposter som har typen hidden och som drmed inte syns, men som d anvnds som frvaringsutrymme fr de extra lnamnstecknen.
10 Tekninken 9 File

274

7.4 CD- och DVD-brnning I princip all form av CD- och DVD-brnning i GNU/Linux utfrs med ett programpaket som heter CDRtools. Detta r en samling av en rad program. Det huvudsakliga programmet r cdrecord, men ocks t.ex. mkisofs som anvnds fr att skapa sjlva lsystemet fr en CDeller DVD-skiva och cdda2wav som kan kopiera spr frn vanliga ljudCD-skivor ingr. Programmen i detta paket r skrivna av Jrg Schilling och anvnds ven av BSD-projektet. Ytterligare ett par viktiga projekt nns: cdrdao, som anvnds fr att spela in skivor i disc-at-once-lget, och cdparanoia som r ett avancerat program fr att kopiera ljudspr frn ljud-CD-skivor till hrddisk. Alla dessa program brukar flja med i de esta distributioner, och cdparanoia r betydligt bttre n cdda2wav som medfljer CDRtools. Fr DVD-brnning krvs en hel del specialparametrar till cdrecord och mkisofs och drfr anvnds programmen oftast indirekt genom programmet growisofs. Detta och ett antal andra verktyg, bland annat dvd+rw-format som anvnds fr att formatera DVD-skivor som bde r ls- och skrivbara ingr i paketet DVD+RW-tools. Linuxkrnan har i sig inget speciellt std fr att brnna CD-skivor: detta skts istllet helt av cdrecord eller cdrdao. I Linuxkrnan version 2.4 bygger all kommunikation med brnnaren p att kommandon skickas via SCSI-grnssnittet. Detta innebr att brnnaren alltid mste vara installerad s att den betraktas som en SCSI-enhet. Detta r inte ndvndigt i version 2.6 av krnan. Mnga brnnare r idag inte av SCSI-typ utan IDE-typ,11 och i sdana fall mste linuxkrnan i version 2.4 kongureras om s att IDECD-brnnare anvnds genom att emulera SCSI, istllet fr att anvnda IDE direkt. Detta r inte speciellt enkelt och r drfr ett problem fr mnga anvndare. (Om du istllet har skaffat en CD-brnnare av SCSItyp r detta naturligtvis inget problem.) I den nya 2.6-krnan r detta problem tgrdat, och det skall vara mjligt att brnna CD-skivor utan att anvnda SCSI-emulering. Bortse i s fall frn fljande utvikning. Fr att sl p SCSI-emulering i krnan nns tv vgar: Om du har svl SCSI support, SCSI CD-ROM support IDE/ ATAPI CDROM support och SCSI emulation support installerat i form av moduler, kan du ge ett kommando till krnan under uppstart (genom att modiera uppstartlerna fr LILO eller GRUB, se sidan 184), som ser till s att IDE CD-brnnaren frvandlas till en SCSI CD-brnnare. Heter din IDE CD-lsare t.ex. /dev/hdc r kommandot fr LILO, i din lilo.conf-l:
11 IDE (Integrated Drive Electronics) r som tidigare nmnts ett annat namn fr ATA (Advanced Technology Attachment).

275

Kapitel 7 Kringutrustning

append="hdc=ide-scsi"

I GRUB r det bara att lgga till detta i slutet av en rad som specicerar nskad krna, t.ex.:
kernel /vmlinuz-2.4.20 ro root=/dev/hda2 hdc=ide-scsi

Utver detta mste du ocks instruera din krna att ladda in SCSIemuleringsmodulen med modprobe ide-scsi eller liknande kommando, i systemet uppstartler. Efter detta kommer din CD-brnnare istllet (i just detta fall) att dyka upp som blockenheten /dev/shc. Lokala variationer frekommer. Om du vill styra om din IDE CD-brnnare hrt t.ex. i en krna utan moduler, mste SCSI support, SCSI generic support och SCSI CD-ROM support sls p, medan IDE/ATAPI CDROM support skall sls av, och SCSI emulation support sls p. Krnan mste sedan kompileras om och installeras. Detta medfr att enhetslen fr CD-spelaren, som tidigare kanske var en IDE-enhet som hette /dev/hdc frvandlas till /dev/scd0. Den kan fortfarande monteras och anvndas som vanligt, men numera bara som om den vore en SCSI-enhet. Det nns ocks en tredje typ av CD-brnnare som anvnder parallellporten. Dessa r om mjligt nnu svrare att f att fungera (ven under Microsoft Windows!), och kommer inte att behandlas hr. Istllet hnvisas till CD-Writing HOWTO12 (som ven innehller en hel del annan matnyttig information.) I det fljande kommer att beskrivas hur en CD-skiva kan skapas med hjlp av frmst kommandoradsverktygen mkisofs och cdrecord. Flera graska program har skapats fr att frenkla anvndandet av de helt kommandoradsbaserade verktyg som ligger till grund fr CDbrnningssystemet i Linux, t.ex. gtoaster fr GNOME eller K3b fr KDE. Prova dem grna nr du vl ftt din brnnare att fungera!

7.4.1

Skapa en Data-CD/DVD

Att fr hand (d.v.s. utan graska hjlpverktyg) skapa en CD- eller DVD-skiva krver tv steg:
12 Se:

http://www.tldp.org/HOWTO/CD-Writing-HOWTO.html

276

7.4 CD- och DVD-brnning Skapa frst ett lsystem i form av en stor l, (en s.k. ISO-l) som innehller allt du vill lgga p CD-/DVD-skivan. Brnn den stora len till en tom CD-/DVD-skiva. Skapa ISO-len De stora lerna som i sin tur innehller lerna du vill brnna kallas ISO-ler eftersom de innehllet ett lsystem av en typ som denieras i standarddokumentet ISO 9660. De esta skapar de stora ISO-lerna med kommandot mkisofs, som kan anvndas p fljande vis:
# mkisofs -r -iso-level 2 -o foo.iso /bar

Detta tar alla ler och kataloger under katalogen /bar och kopierar in dem i ett ISO-lsystem lagrat i len foo.iso. (Du kan naturligtvis inte lgga len du skapar i samma katalog som lerna du kopierar, du kan nog sjlv rkna ut vad som hnder d.) Flaggan -r talar om att garskap och skrivbarhet av lerna skall avlgsnas (detta r oftast inte meningsfullt p en CD-skiva), -iso-level 2 gr det mjligt att tminstone ha lnga lnamn (-iso-level 3 passar bttre fr svenska men kanske inte alltid kan anvndas av systemet du skall lsa skivan p) och aggan -o foo.iso anger att len som skapas skall heta s. En ISO-l r i praktiken bara en lng rad bytes, med ett lsystem denierat enligt ISO 9660. Anledningen till att detta system anvnds r att det stdjs av s gott som alla operativsystem, t.ex. Microsoft Windows eller MacOS X. mkisofs fljer inte slaviskt ISO 9660, utan anvnder utkningarna JOLIET (lnga lnamn i Windows), HFS (Macintosh lnga lnamn) och Rock Ridge Extensions (POSIX-linformation) fr att lagra lerna i lsystemet. Om du vill kan du montera din ISO-l innan du brnner den. Detta kan ocks anvndas fr att titta p innehllet i andra ISO-ler som du fr tag p:
# mount -t iso9660 -o loop foo.iso /mnt/foo

Detta kommer att montera ISO-len foo.iso i monteringspunkten /mnt/ foo, frutsatt att det nns en katalog med det namnet. (Monteringen anvnder det s.k. loopback-grnssnittet, som beskrevs i avsnittet om krypterade hrddiskar i skerhetskapitlet p sidan 353.) Montera av len igen med umount /mnt/foo. Om du vill tillverka en ISO-l av en CD-skiva du redan har kan du skriva: 277

Kapitel 7 Kringutrustning

# dd if=/dev/cdrom of=foo.iso

Detta frutsatt att din CD-lsare r kopplad till enhetslen /dev/cdrom. (Om din CD-lsare r t.ex /dev/hdc kan du helt enkelt gra en symbolisk lnk frn hdc till cdrom fr att lsa problemet.) r det ngon form av fel p CD-skivan kommer operationen att misslyckas: d kan du be kommandot dd att fortstta trots felen med parametern noerror, men mnga tycker kanske att det r det bttre att montera skivan och kopiera ver alla hela ler, en l i taget:
# mount /mnt/cdrom # mkisofs -r -o foo.iso /mnt/cdrom

Det nns egentligen inget som helst krav p att en ISO-l skall innehlla ett ISO 9660-lsystem (frutom att namnet s att sga antyder det). Nr len brnns betraktas den nd bara som en lng rad bytes lagda efter varandra. Du kan skapa en skiva med vilket lsystem som helst p, t.ex. Ext2:
# dd if=/dev/zero of=foo.iso bs=1M count=650 # mkfs -t ext2 foo.iso # mount -t ext2 -o loop foo.iso /mnt/foo

Detta skapar en ISO-l p 650 megabyte (vilket ju r den storlek som ryms p en vanlig CD-skiva) som innehller ett Ext2-lsystem. (mkfs kommer skert att varna om att du frsker skapa ett lsystem inuti en l istllet fr en blockenhet, men det behver du inte bry dig om.) Den monteras sedan via ett loopback-grnssnitt och kan drefter fyllas med innehll genom att du kopierar ler till /mnt/foo tills len blir full. D avmonterar du len och brnner den. Det gr naturligtvis bra att kryptera innehllet ocks genom att anvnda en krypterad loop. CD-skivor som inte innehller ett ISO 9660-lsystem kommer oftast inte att monteras automatiskt under GNU/Linux, eftersom /etc/fstab vanligen anger att enheten /dev/cdrom skall monteras som ett iso9660lsystem. Du fr drfr montera skivan fr hand, eller ndra i /etc/fstab (lsystemstypen auto kommer t.ex. antagligen att detektera om CDskivan innehller Ext2). Om du skall anvnda CD-skivan med ngot annat operativsystem n GNU/Linux eller t.ex. i en MP3-spelande stereo eller DVD-spelare till din TV br du hlla dig till ISO-formatet. 278

7.4 CD- och DVD-brnning DVD-skivor kan innehlla strre lsystem n CD-skivor. En vanlig DVDR kan innehlla hela 4,7 gigabyte!13 Brnn ISO-len Fr att brnna en CD-skiva skall du utnyttja cdrecord eller cdrdao. Dessa kommandon mste i princip alltid kras som root. Det frsta du mste veta r vad din brnnare har fr SCSI-ID. Du fr en lista ver tillgngliga SCSI-enheter med kommandot:
# cdrecord -scanbus

En av dessa mste vara din CD-brnnare, annars har du inte lyckats installera SCSI-emuleringen ordentligt i din dator. (G i s fall tillbaka och ordna det frst.) SCSI-ID:t har oftast formen 0,N,0 dr N r en siffra mellan 0 och 9, t.ex. 0,0,0 eller 0,5,0. Nr du vl vet vilket SCSI-ID din CD- eller DVD-brnnare har r det bara att brnna:
# cdrecord -v speed=2 dev=0,N,0 foo.iso

Hr skall speed sttas till den hastighet du vill anvnda (mindre n eller lika med din brnnares topphastighet) och dev skall sttas till det SCSI-ID som du just tagit reda p. Dessa bda parametrar mste alltid anges. Om du har en 2.6-krna och vill anvnda din IDE-baserade CDbrnnare utan SCSI-emulering behver du inte veta ngonting om SCSIID eller liknande. Om din brnnare heter t.ex. /dev/hdc skriver du bara:
# cdrecord -v speed=2 dev=/dev/hdc foo.iso

Motsvarande kommando fr en DVD-skiva r:


# growisofs -Z /dev/hdc=foo.iso

Fr att radera CR-RW-skivor innan de skrivs kan du ange vxeln blank=fast (utan minustecken framfr) till cdrecord. Detta raderar skivan frst, och skriver sedan det nya innehllet. Parametern -Z till growisofs har samma effekt fr DVDRW-skivor. Om du vill skapa en DVDskiva som innehller en lm som skall kunna spelas i en vanlig DVDspelare br du ocks haka p parametern -dvd-compat till growisofs.
13 De tomskivor som nns i handeln nr detta skrivs har 2295104 sektorer 2048 bytes vardera, och en ISO-l som precis fyller hela skivan kan drfr skapas med t.ex.: dd if=/dev/zero of=$1 bs=2048 count=2295104

279

Kapitel 7 Kringutrustning DVD-brnnare krver som du ser inga hastighetsparametrar: om inget anges kommer den hgsta mjliga hastigheten att anvndas. Om du mste s kan du med hjlp av mkisofs och cdrecord skapa en CD-skiva och brnna den samtidigt, utan att frst gra en ISO-l. Du kan skriva t.ex.:
# size=mkisofs -print-size -quiet /foo # mkisofs /foo | cdrecord -v tsize=$size speed=2 dev=0,N,0

Fr DVD-skivor anvnds istllet genvgen med growisofs som r gjort fr att frenkla operationer av detta slag:
# growisofs -Z /dev/dvd -R -J /foo

Det nns en risk med detta: kanske hinner inte datorn med att gra bda sakerna samtidigt. I detta fall gr brnningen t skogen och du har frstrt en CD-skiva. andra sidan kan det ju hnda att du har ont om diskutrymme, och d r detta enda utvgen.

7.4.2

Skapa en Audio-CD

Att skapa en Audio-CD krver att du har tillgng till ljudet som skall brnnas i form av enkla s.k. CDR-ler (CD-record), eller WAV-ler14 som innehller ljuddata i PCM-format15 inspelade i 44100 Hz, 16-bit stereo. Detta r nmligen det format som CD-skivor anvnder. WAV-ler r egentligen bara helt vanlig 44100 Hz 16-bit stereo PCM-data med ngra extra byte (en RIFF-header) i brjan av len, och CDR-formatet r samma sak minus de extra byten. Vilken sort som anvnds spelar ingen strre roll, men WAV-ler r vanligast. Dessa CDR- eller WAV-ler kan stadkommas p olika vis: Om du redan har tillgng till lerna i ett annat format, t.ex. MP3 eller Ogg Vorbis kan du antagligen konvertera dem till CDR-ler eller WAV-ler med ngon mediaspelare. XMMS kan t.ex. kongureras att skriva utdatan frn programmet till ler p hrddisken, vilket allt som oftast r 44100 Hz 16-bit stereo WAV-ler. ven enkla kommandoradsprogram som t.ex. mpg321 kan stadkomma detta:
14 WAV-ler r ett farligt begrepp: ler frn Microsoft Windows med lndelsen .wav betecknar en slags containerl (RIFF, Resource Interchange File Format) och kan i princip innehlla vad som helst. Nr jag skriver WAV-l r detta fr att beteckna PCMrdataler. 15 PCM-format (Pulse Coded Modulation) innebr i detta fall att ljudtrycket i varje tids1 gonblick med intervallet 44100 sekund omvandlas till ett numeriskt vrde mellan 0 och 16 1. 2

280

7.4 CD- och DVD-brnning

# mpg321 --wav foo.wav foo.mp3

Om du bara har tillgng till lerna i form av en ljud-CD-skiva mste skivan frst lsas av och omvandlas till WAV-ler. Detta kan gras med programmet cdda2wav, men programmet cdparanoia16 rekommenderas framfr cdda2wav, eftersom detta gr mer ordentliga anstrngningar att kopiera ljudet om det t.ex. skulle vara repor p skivan. Fr att lsa av en CD-skiva med cdparanoia skapar du en tom katalog, dr du stller dig och skriver:
# cdparanoia -B

Detta kopierar alla spr p musikskivan till WAV-ler. Detta kommer ven att kopiera spr som r data frn skivor med blandat innehll, s kontrollera att det du fr med verkligen r ljudspr. De esta CD-skivor brukar ven innehlla ett mycket kort spr noll i brjan av skivan. Om du skulle rka ha en l i ngot annorlunda format, t.ex. Macintosh AIFF eller 8-bitars r samplingsdata, kan detta konverteras till 44100 Hz 16-bitar stereo-PCM-ler med t.ex. programmet sox.17 Fr att brnna de CDR-ler eller WAV-ler du nu stadkommit till en tom CD-skiva som skall kunna spelas i en vanlig hemmastereo skriver du:
# cdrecord -v -audio speed=2 dev=0,N,0 *.wav

Globbningsuttrycket (*.wav) i slutet av raden kommer dock att vlja alla lerna i bokstavsordning, s vill du ha dem i en speciell ordning fr du rada upp dem. Du kan ocks spela in CD-spren ett i taget genom att ange aggorna -nox -pad fr varje WAV-l du brnner, och avsluta med cdrecord -x. Detta lmnar skivan ppen mellan inspelningen av spren och stnger den sedan med ett speciellt kommando. Att spela in ljuskivor direkt med cdrecord p detta vis skapar ett kort tomrum mellan varje spr p skivan. Fr det mesta spelar detta ingen roll, men om du vill ha full kontroll ver dina ljudskivor, och om
16 Se: 17 Se:

http://www.xiph.org/paranoia/ http://sox.sourceforge.net/

281

Kapitel 7 Kringutrustning du vill kunna spela in musik utan avbrott, mste du anvnda den s.k. disc at once-tekniken, vilket innebr att hela skivan brnns i ett svep utan att lasern slcks frrn all data r brnd. Detta stdjs inte av cdrecord s i detta fall mste programmet cdrdao anvndas istllet. Detta program krver dock en speciell skriptl fr att kunna gra skivan.

282

K APITEL

8 Kompilera sjlv

Om ngot skall gras ordentligt: gr det sjlv! Den korta historien r som fljer. Frutsatt att du laddat ner ett program du vill kompilera i form av ett larkiv, komprimerat med GNU tar och GNU Zip (vilket r det vanligaste), och frutsatt att programmet fljer konventionerna fr GNU Autotools (vilket r vanligt) och frutsatt att inga fel intrffar, kommer fljande kommandosekvens att kompilera och installera ett nytt program:
tar xvfz foo-1.1.0.tar.gz cd foo-1.1.0 ./configure make su make install

Detta gr att du packar upp kllkoden (rad 1), gr in i den uppackade katalogen (rad 2) kongurerar den med skriptet congure (rad 3),1 kompilerar den (rad 4), vxlar till root-anvndaren (rad 5) och installerar programmet i /usr/local (rad 6). Lokala variationer p komprimerade ler frekommer: ibland dras lsufxet .tar.gz samman till .tgz. Det r samma sak, och packas upp
1 Om du inte minns varfr du mste skriva ./ fre skriptets namn, s g tillbaka och ls p sidan 58.

Kapitel 8 Kompilera sjlv precis som ovan. Det r ocks alltmer populrt att anvnda komprimeringsprogrammet bzip2 istllet fr gzip. I sdana fall heter kllkodsarkivet foo-1.1.0.tar.bz2 istllet, och packas d istllet upp med tar xvfj foo-1.1.0.tar.bz2.2 Fungerade det inte? Trkigt. D r det tyvrr s, att det som fljer i detta kapitel inte ger ngon fullstndig information om vad som krvs fr att lsa alla fel som kan tnkas ha uppsttt. De vanligaste och mest triviala felen kommer att presenteras, tillsammans med de sammanhang som de hr hemma i. Men fr att kunna kompilera alla program som nns fordras det faktiskt att du r mer eller mindre programmerare. Detta r anledningen till att en normal anvndare br hlla sig till att anvnda de frdiga paket som kommer med distributionen, eller paket som r avsedda att anvndas tillsammans med en viss distribution.3

8.1

Kompileringsverktyg

Fr att kunna kompilera program under GNU/Linux behver du naturligtvis frst och frmst tillgng till de verktyg som en programmerare anvnder. De viktigaste r: GNU Compiler Collection (GCC) GNU Make GNU C Library (glibc), samt eventuellt utvecklarpaket. Ibland kan detta vara uppdelat i era underpaket, som glibc-common, glibckernheaders o.s.v. Normalt r alla dessa paket installerade med distributionen. Standard C++ library (libstdc++), samt eventuellt utvecklarpaket. Utvecklarpaketet till C++ saknas ofta i en standardinstallation och mste installeras separat. Dessa verktyg kan s gott som alltid installeras direkt frn paket som fljer med din distribution. (Vad som menas med ett utvecklarpaket frklaras i nsta avsnitt.) Hrnst kommer du att stta p beroenden mellan ditt program och andra systemkomponenter.
2 Jag ger hr bara olika aggor till kommandot tar, aggan z signalerar att det r frga om ett GNU zip-paket, medan j signalerar att det r frga om bzip2. Det gr sklart lika bra att frst dekomprimera arkiven med gunzip eller bunzip2, och drefter packa upp dem med tar xvf foo . . . . 3 Se ven avsnitt 4.6 p sidan 166 om program utanfr distributionen.

284

8.2 Beroenden

8.2

Beroenden

Fr att kompilera ett program mste vissa beroenden vara uppfyllda. De vanligaste r: Beroenden av vissa verktyg som behvs under kompileringen, frmst de som nmndes i fregende avsnitt. Beroenden av programbibliotek som tillhandahller delar av funktionalitet. Beroenden av andra installerade program eller vissa kongurationsler. Den vanligaste typen av beroenden som uppstr nr kompileringsverktyg r installerade och kompilering vl kan komma till stnd r beroenden av andra programbibliotek.4 Denna typ av beroenden brukar ge sig tillknna under kongureringsfasen. Kongureringsprogrammet brukar testa tv saker: frst att en s.k. .h-l nns tillgnglig. Detta betyder att det letar efter en l med ett grnssnitt till programbiblioteket, och i programsprken C och C++ heter dessa ngot i stil med foo.h. I den lhierarki som rder i GNU/Linux-system nns dessa ler normalt i /usr/include eller /usr/local/include och kongurationsskripet med namnet congure kommer automatiskt att leta efter dem dr. Om dina programbibliotek ligger ngon helt annanstans, blir du normalt sett tvungen att ange detta fr kongurationsprogrammet med hjlp av ngon parameter. Om du inte r herre ver systemet du anvnder kan det t.ex. hnda att du har lagt lerna i din hemkatalog,5 och d blir du tvungen att ange detta till congure, oftast i form av en fullstndig skvg till din hemkatalog.6 Efter att kongureringsskriptet letat efter .h-len kommer det normalt ocks att leta efter sjlva programbiblioteket, vilket vanligtvis ligger i /usr/lib eller /usr/local/lib. Har vl .h-len identierats brukar inte detta vara ngot problem. Ett vanligt problem r att .h-lerna inte kan hittas i /usr/include, fastn sjlva programbiblioteket nns i /usr/lib. Detta beror p att mnga distributioner helt sonika plockar bort .h-lerna, eftersom de tar plats och bara anvnds vid kompilering. Sjlva programbiblioteken behvs ju
4 Vad programbibliotek eller dynamiska lnkbibliotek r, och hur de anvnds i Linuxkrnan frklaras utfrligt i avsnitt 5.4.5 p sidan 195. 5 En del har en hel standardhierarki i sin hemkatalog med /home/foo/lib, /home/foo/ include, /home/foo/bin o.s.v. 6 Du kan normalt anvnda miljvariabeln $HOME som fullstndig skvg till din hemkatalog, undersk grna denna med echo $HOME.

285

Kapitel 8 Kompilera sjlv under krning och fljer drfr alltid med, om de anvnds. Eftersom s.k. vanliga anvndare inte skall behva kompilera program, har dessa .h-ler drfr lagts i ett speciellt paket, oftast med namn med sufx som -dev eller -devel. Om ditt program t.ex. anvnder programbiblioteket libfoo betyder detta att ett lnkbart programbibliotek skall nnas installerat i form av /usr/lib/libfoo.so.1 (eller liknande) och en .h-l skall nnas i form av /usr/ include/foo.h eller kanske /usr/include/libfoo.h. Den senare len kan allts ha hamnat i ett speciellt utvecklarpaket, och detta medfr att kongureringen sprar ur med ett felmeddelande. I distributionen Debian GNU/Linux tgrdar du i s fall detta med apt-get install libfoo-dev och i RPM-baserade distributioner mste du hitta ett RPM-paket med ett namn i stil med libfoo-devel-1.0.0.i386.rpm, och installera det. Rr det sig om ett standardbibliotek nns detta paket oftast p skivorna som medfljer distributionen. I mnga fall kan ditt pakethanteringssystem hjlpa till att underska vilka programbibliotekspaket som nns installerade och vilka de motsvarande utvecklarpaketen r. Nr vl alla utvecklarpaket kommit p plats brukar kompileringen g igenom utan problem. I ngot fall kan det hnda att din version av det nskade programbiblioteket r fr gammalt, och du mste i s fall uppgradera biblioteket. Om det rr sig om en standardkomponent i en distribution kan det vara farligt att uppgradera programbibliotek, eftersom dessa i sin tur kan anvndas av hundratals andra program, s tnk dig fr. De som utvecklar programbibliotek brukar i och fr sig frska undvika att orsaka situationer dr nyare bibliotek r inkompatibla med gamla, men sdant hnder trots allt. Om programbiblioteket inte nns alls p din dator, kan du vara tvungen att frst ladda ner och kompilera sjlva programbiblioteket. Programbibliotek kan sedan i sin tur vara beroende av andra programbibliotek. Det kan bli ganska mnga olika bibliotek som mste laddas ned och kompileras separat om du har otur. Ett otrevligt misstag r att ladda ner och kompilera ett programbibliotek trots att detta redan nns tillgngligt, men utvecklarpaketet med .h-lerna saknas. I sdana fall kommer .h-len i /usr/local/include (som du installerar) att anvndas tillsammans med sjlva programbiblioteket frn /usr/lib, vilket har fretrde framfr det nya programbibliotek som du precis installerat i /usr/local/lib. Om detta rr sig om tv helt olika versioner av programbiblioteket kan beteendet bli helt ofrutsgbart. Nr du vl har installerat ett programbibliotek gller det att ditt program kan hitta det ocks. Under kompileringen gr detta fr det mesta bra, men nr programmet skall kras kan ytterligare problem 286

8.3 GNU Autotools uppst: nr ett program krs kommer nmligen bara vissa specika platser att genomskas efter programbibliotek. Detta beskrivs utfrligt i avsnitt 5.4.5 p sidan 195, som du br lsa ordentligt innan du ger dig p att kompilera program p egen hand.

8.3

GNU Autotools

GNU Autotools r ett antal verktyg som utvecklats inom GNU-projektet med syfte att frenkla och standardisera konguration av kllkodspaket fre kompilering samt sjlva kompileringen, d.v.s. byggandet av exekverbara program och programbibliotek frn kllkodsler. Syftet med detta avsnitt r inte att lra ut GNU Autotools fr programmerare, utan att frklara dess funktion fr den som behver veta ngot om dessa verktyg fr att kunna kompilera program som anlnder i form av kllkodspaket.7 GNU Autotools bestr av: GNU Autoconf ett kongureringsverktyg fr att generera ett skript med namnet congure, som i sin tur kan kongurera kllkodspaket precis innan de kompileras. GNU Automake ett verktyg fr att automatiskt generera Makeler, d.v.s. ler med namnet Makele eller Makele.in. GNU Libtool r ett ertal mindre skript som i sin tur genererar ett skript med namnet libtool vid kongurering av kllkodspaket och som i sin tur tar hand om kompilering och installation av dynamiska lnkbibliotek p olika plattformar. Det r mjligt fr en programmerare att anvnda vart och ett av dessa program var fr sig, men de esta anvnder alla tre samtidigt, och brukar d sga att de kr GNU Autotools som byggsystem. Den smidiga mjligheten att kongurera ett program bara genom att skriva ./congure kommer frn GNU Autoconf, och r egentligen den enda del av Autotools som skall berra en anvndare av ett POSIX-system direkt.

8.3.1

Utvecklarens perspektiv

I gur 8.1 ternns en skiss av det mellan de olika auto-verktygen: programmeraren anvnder tre olika program: aclocal, autoconf och automake.
7 Den utvecklare som vill lra sig GNU Autotools p djupet rekommenderas att lsa den beryktade Getaboken, GNU Autoconf, Automake and Libtool[36]

287

Kapitel 8 Kompilera sjlv

Figur 8.1: Arbetsdet i GNU Autotools. De delar av programmen som du som anvndare skall anvnda nns under den streckade linjen.

autoconf anvnds fr att kompilera ett program skrivet i skriptsprket GNU M4 till ett stort skript helt och hllet skrivet i Bourne Again Shell (bash). M4-programmet lagras i en l som tidigare hette congure.in men som i nyare projekt oftast heter congure.ac. Namnbytet skedde fr att inte blanda ihop denna .in-l med andra .in-ler (som vi skall bekanta oss med senare). Nr en programmerare skall kompilera sitt M4-program skriver denne frst aclocal fr att kopiera en del M4-program som ligger lagrade i systemet till en form av programbibliotek. Detta programbibliotek lagras i en l med det upplysande namnet aclocal.m4 i programmets byggkatalog. Sjlva kommandot autoconf kommer sedan att kompilera congure.in/congure.ac, bland annat med hjlp av de makron som nns i aclocal.m4, till en l som heter bara congure. Detta r den l som du som anvndare sedan kr fr att kongurera ett kllkodspaket. En del anvndare, som gett sig i kast med att titta efter vad skriptlen congure i sjlva verket innehller, har storgt frgat sig vilken demon som skrivit detta totalt genomrriga och olsliga skript. Det r allts inte skrivet av ngon mnniska, utan det r frga om ett skript som r genererat frn ett helt annat program skrivet i sprket M4. GNU Autoconf kompilerar allts M4-program till skript. Programmeraren kr ocks automake fr att generera s.k. makeler (ler som innehller kommandosekvenser till kommandot make). 288

8.3 GNU Autotools Kommandolerna till automake har namnet Makele.am. Det kan nnas era sdan ler i en kllkodskatalog, men den som ligger lngst ner i kllkodskatalogen pekar i sin tur ut andra Makele.am-ler som skall bearbetas, s kommandot behver bara kras en gng. Vanligtvis genererar automake inte direkt den make-l med namnet Makele som anvnds fr att slutgiltigt kompilera programmet, utan en mellanl med namnet Makele.in. Denna mste sedan bearbetas av congure-skriptet fr att till sist producera den l med namnet Makele som i slutnden faktiskt kompilerar programmet. Om en utvecklare glmt att kra de hr kommandona innan programmet distribuerades ut, eller om du t.ex. hmtar ut kllkod frn CVS, kan en frdig congure-l saknas. Om det dremot nns en Makele.am och congure.in eller congure.ac kan du sjlv skapa congurelen med fljande kommandosekvens:
# aclocal # automake # autoconf

Ibland nns ett skript med namnet autogen.sh som utfr samma sak fast p ett lite mer sostikerat stt. Om nu inte detta fungerar r det inte mycket mening att fortstta kmpa. Du mste ge upp och antingen hitta en annan lsning eller utbilda dig sjlv till programmerare.

8.3.2

Anvndarens perspektiv

Ur anvndarperspektiv nns det alltid en frdig congure-l att kra. Denna anvnds fr att kongurera kllkodspaketet fr den dator och det operativsystem dr det till sist skall kompileras och anvndas. Anledningen till att detta behvs r att programmet mste gra anpassningar av en del smsaker som skiljer sig mellan olika operativsystem, samt att beroenden av programbibliotek mste kontrolleras innan kompilering sker. Du kan ocks sjlv behva gra en del instllningar med congure. Fr att se vilka instllningar som kan gras skriver du ./congure --help.8 Detta kommer att lista en rad mjliga val, varav vissa r standardiserade val som alltid gr att gra, och vissa (som ofta rknas upp i slutet) r specika fr just detta kllkodspaket. De vanligaste standardinstllningarna r:
8 Du borde vid det hr laget veta att ./congure --help | less ger dig hjlptexten en sida i taget. (Jag bara kollar att du r med.)

289

Kapitel 8 Kompilera sjlv ./congure --prex=/foo/bar anger ett prex fr vart programlerna och andra delar av programmet skall lagras. Om du inte anger detta kommer programmet att installeras i /usr/local-hierarkin, d.v.s. i /usr/local/bin, /usr/local/lib och liknande. En vanlig variant r att du som vxel anger miljvariabeln $HOME (med --prex=$HOME) fr att tala om att programmet skall installeras i din egen hemkatalog. Detta r bra p system som du inte administrerar sjlv (t.ex. i en skola) men som du nd vill kunna installera program p. Det skall vl tillggas att strre program sllan r mjliga att installera p detta vis utan en hel del extra slit. Om du till ventyrs vill kompilera program som skall ligga direkt i /bin, /lib eller /sbin mste du tnka p att ange detta till autoconf med ./congure --prex=/. Program som skall paketeras fr att vara en del av en distribution skall kompileras med ./congure --prex=/usr. (Att installera p dessa platser rekommenderas inte om du inte vet exakt vad du hller p med!) ./congure --exec-prex=/foo/bar talar om att de exekverbara programmen (inklusive programbibliotek) skall installeras p ett speciellt stlle. Detta r ganska obskyrt, men en anvndare kan t.ex. tnkas anvnda en och samma hemkatalog fr Solaris och GNU/ Linux-system, och installerar d kanske krbara Solarisprogram och krbara GNU/Linux-program p tv olika platser i sin hemkatalog. ./congure --program-prex=foo kommer att gra s att alla exekverbara program fr ett eget prex, vilket normalt r meningslst eller dumt, men om du installerar t.ex. GNU Make p ett system som redan har ett eget make-kommando, vill du kanske kalla GNU Make fr gmake istllet, och anger d --program-prex=g. Nr du kr congure kommer det ibland, nr det program du tar dig fr att kompilera innehller programbibliotek, ven att generera skriptet libtool. Detta skript anvnds fr att installera programbibliotek p just ditt operativsystem. Det sista congure gr r att modiera ett antal angivna ler med namn som slutar p .in, s att Makele.in blir Makele, foo.in blir foo o.s.v. Oftast r det bara ett ftal ler som pverkas. Den genererade Makelelen r dock ndvndig fr att programmet alls skall g att kompilera, och mste alltid genereras. Efter att paketet r kongurerat skall det kompileras och du skriver make. GNU Make anvnder d Makele-len (vilket strikt sett r 290

8.3 GNU Autotools


Miljvariabel $CC Anvndning C-kompilator. Normalt vljs GCC automatiskt, men har du kpt eller programmerat en ovanligt exklusiv C-kompilator kan du byta den genom att ndra denna miljvariabel. Du kan ocks ha tv eller er olika versioner av GCC installerade fr att kunna byta till en nyare med t.ex. export CC=gcc4 om det nns en gcc4-kompilator installerad vid sidan om din standardkompilator. Denna anvnds normalt ven som lnkare. Flaggor till C-kompilatorn. Preprocessor fr C-kod. Flaggor till C-kodspreprocessorn. C++-kompilator. Samma resonemang som fr $CC gller fr denna. Flaggor till C++-kompilatorn. Preprocessor fr C++-kod. Lnkare fr C++-kod. Flaggor till lnkaren, som bland annat kopplar den kompilerade koden till eventuella programbibliotek. Om du vill kompilera ett program som inte skall vara beroende av ngra dynamiska lnkbibliotek kan du gra detta genom att stta variabeln till -all-static. Detta grs t.ex. fr alla program som installeras direkt i /bin, eftersom de skall kunna fungera sjlvstndigt. Anger standardskalet som skall anvndas av make. Om detta inte anges kommer ditt aktuella skal att anvndas, vilket inte alltid fungerar som avsett. Prova d att stta $SHELL till /bin/ sh.

$CFLAGS $CPP $CPPFLAGS $CXX $CXXFLAGS $CXXCPP $CXXLINK $LDFLAGS

$SHELL

Figur 8.2: Miljvariabler som pverkar beteendet hos kommandot make.

ett program skrivet i ett funktionellt sprk) fr att underska vilka ler som skall kompileras, och framfr allt i vilken ordning de skall kompileras. Beteendet hos make kan modieras genom att du ndrar ngon eller ngra av miljvariablerna i gur 8.2 innan du skriver make. Efter att make har krt frdigt har programmet kompilerats frn kllkod till krbara program. D kan det installeras p avsedd plats (/usr/local eller den plats som valdes med --prex=. . . -aggan till congure) med make install. Detta kommer vanligen att anropa ett program som heter install och som har till uppgift att kopiera de olika lerna dit de skall hamna, t.ex. i olika underkataloger till prexet. Detta tar ven hand om att stta normala rttigheter p lerna, s att t.ex. exekverbara ler verkligen r exekverbara. ven om du kan kompilera ett helt kllkodspaket utan att vara root, kan du inte installera ett program annat n i din egen hemkatalog om du inte frst vxlar till root-anvndaren. Den plats dr programmen 291

Kapitel 8 Kompilera sjlv kommer att installeras om du inte angivit ngot speciellt r /usr/local, och denna katalog r bara skrivbar fr root.

8.4

Att kompilera Linuxkrnan


Faust: Det var sledes pudelns krna! En vandrande skolast! Jag mste skratta gott. Mephistopheles: Jag hlsar er, bland lrde mn en stjrna! Av er har jag ett duktigt svettbad ftt. Johann Wolfgang von Goethe9

Att kompilera Linuxkrnan r ett ndvndigt ont fr den avancerade anvndaren. En del lr sig till och med att tycka om detta. Genom att sjlv kompilera om krnan kan du utforma ett system som r specialanpassat till just de komponenter som sitter i just din dator. Fr ett inbyggt system r denna hga grad av anpassning en sjlvklarhet, men fr en vanlig skrivbordsdator brukar detta moment helt utg, eftersom de esta distributioner tillhandahller en frdig krna, som inkluderar alla tnkbara moduler, som sedan bara laddas in om de behvs. Krnan tar p det viset inte upp ondigt stort utrymme i datorns minne. Det nns dock en del situationer nr tv komponenter i krnan mste vljas uteslutande av varandra. Ett vanligt sdant dilemma var i 2.4krnan valet mellan APM, Advanced Power Management och ACPI, Advanced Conguration and Power Interface. Dessa tv strmbesparningstekniker kunde inte bda nnas i krnan samtidigt. De kunde inte heller anvndas i form av moduler. Drfr kom de esta distributioner med det vanligare APM inkompilerat, och ACPI avstngt. I 2.6-versionen av Linuxkrnan avhjlptes problemet genom att gra det mjligt att anvnda bda funktionerna alternativt med varandra: den modul som laddas in frst kommer att anvndas. Om du nu bara har en ACPI-dator och en installerad standarddistribution med 2.4-krnan som inte kan hantera detta, krvs det att du stter dig ner och kompilerar om krnan. Det nns ocks situationer d ngon ny hrdvara precis har dykt upp, och d kan du behva anvnda ngon experimentell modika9 Viktor Rydbergs versttning frn femte upplagan 1915 av fljande originaldialog: Faust: Das also war des Pudels Kern! / Ein fahrender Skolast? Der Kasus macht mich lachen. Mephistopheles: Ich salutiere den gelehrten Herrn! / Ihr habt mich weidlich schwitzen machen.

292

8.4 Att kompilera Linuxkrnan tion av Linuxkrnan. Ytterligare en tnkbar situation r att du vill infra kryptering i en ldre version av krnan (2.4-serien) som inte direkt stdjer detta. Mnga kompilerar om krnan fr att lgga p extra patchar fr realtidsstd, vilket r bra fr t.ex. vissa professionella musiktillmpningar. Det r dessutom s att den som kompilerat om krnan ngra gnger fr en god knsla fr hur sjlva krnan fungerar inuti, ven utan att sjlv vara programmerare. Fr att f tag p Linuxkrnan kan du ladda ned den frn dess hemsida,10 men vanligtvis medfljer det ett kllkodspaket till din distribution. Om du vill ha din nuvarande konguration som utgngspunkt br du anvnda distributionens egna kllkodspaket, eftersom de instllningar som distributren har gjort oftast nns med som exempel. Kllkoden fr krnan brukar lggas i katalogen /usr/src/linux-x.y.z dr x, y och z r versionen av krnan. Du kan p det viset ha kllkod till era olika versioner av krnan liggande. Kompileringen av krnan sker ocks i denna katalog.11 Frutsatt att du frst ftt tag i kllkoden och stllt dig i den uppackade kllkodskatalogen kan du stta igng med att kongurera krnan. Eftersom en Linuxkrna innehller s mnga komponenter och valalternativ gr det inte att anvnda GNU Autotools fr att bygga krnan. Istllet anvnds normalt ett menysystem dr den som skall kompilera krnan sjlv vljer vilka komponenter som skall vara med och vilka som inte skall vara det. make menucong startar ett kongureringsgrnssnitt med menyer som bara anvnder textlget, och allts gr att kra i nstan vilken terminal som helst. Fordrar att programbiblioteket curses (och dess eventuella utvecklingspaket) nns installerat. make xcong startar ett fullgraskt X-baserat kongurationsgrnssnitt. I 2.6.x-krnan anvnds programbiblioteket Qt i detta alternativ, och detta (samt motsvarande utvecklingspaket) mste nnas installerat. make gcong (nns bara fr.o.m. version 2.6.x av krnan) r ett annat graskt kongurationsgrnssnitt, som anvnder GTK+ fr lite snyggare kongurationsmenyer. Fordrar GTK+ och dess eventuella utvecklingspaket.
http://www.kernel.org/ r mjligt att kompilera objektler till en separat katalog om du skriver make O=/foo/bar, men notera att detta mste skrivas efter varje make-kommando.
11 Det 10 Se:

293

Kapitel 8 Kompilera sjlv make cong fungerar nr inget annat fungerar. Anvnder bara text, men du mste ocks svara p hundratals frgor. Nr det gller att vlja moduler mste du ha en mental modell av hur Linux fungerar fr att kunna vlja rtt: vissa delar skall kompileras in i krnan fr att alltid vara tillgngliga och vissa delar skall eventuellt ligga som moduler. Ls noga igenom avsnitt 5.4 p sidan 179 om arkitekturen i GNU/Linux, s att du r medveten om vad du gr. Nr du valt dina moduler r det dags att kompilera krnan. I version 2.4 skriver du d:
make dep make bzImage make modules

Medan du i version 2.6 av krnan kan nja dig med:


make make modules

Efter detta har krnan respektive modulerna byggts var fr sig. P vissa distributioner r det mjligt att skriva make install fr att installera den nya krnan. I annat fall fr du manuellt kopiera den nya krnan p plats. Sjlva krnan ligger p en vanlig PC i arch/i386/boot/ bzImage i kllkodskatalogen och skall kopieras till din boot-partition dr den ofta ha namn i stil med /vmlinuz, /boot/vmlinuz, /boot/vmlinuz2.x.x. Den initiala RAM-disken (om en sdan anvnds) mste, om den anvnds, skapas och installeras separat.12 Nu kommer en stor varning. Kopiera inte bara ver din gamla krna rakt av! Om den nya krnan inte skulle fungera s sitter du vackert med en dator utan fungerande krna, och drmed ocks helt utan fungerande operativsystem. I s fall r enda utvgen att starta systemet frn diskett eller CD-skiva, montera hrddiskens lsystem, och terskapa krnan p ngot vis. Detta r kanske inte alltid ens mjligt! Av den anledningen skall du antingen gra en skerhetskopia av din gamla krna, eller anvnda bootstrap-loaderns inbyggda mjlighet att starta era olika krnor, s att du ltt kan g tillbaka till din gamla krna. Modulerna behver sedan installeras separat. Hr duger make modules_install fr det mesta alldeles utmrkt. Detta kopierar lerna p
12 Red Hat / Fedora Core har ett specialkommando fr detta, mkinitrd. Om detta inte nns tillgngligt mste denna RAM-disk skapas fr hand, genom loopback-montering.

294

8.4 Att kompilera Linuxkrnan plats i /lib/modules/<krnversion>. En ny modulkatalog kommer att skapas fr varje unik version av krnan, med utgngspunkt frn namnet varifrn krnan kompilerades. Den statiska delen av krnan kommer sedan att veta om vilken underkatalog den skall lsa sina moduler ifrn. Fr att gra en experimentell version av den krna som anvnds i systemet kan du helt enkelt kopiera kllkodskatalogen eller byta namn p den, t.ex. cp -R linux2.6.4 linux-2.6.4-test. Om du gr detta kommer en ny modulkatalog med namnet /lib/modules/2.6.4-test att skapas, och denna gr s att din testkrna inte str den riktiga systemkrnan.

295

Kapitel 8 Kompilera sjlv

296

K APITEL

Internet och andra ntverk

Nr det gller Internets historia r denna s pass mycket allmnbildning att jag inte kommer att g in p den hr. Den bsta kllan till en kort och bra beskrivning av Internets historia r A Brief History of the Internet1 som publicerats av The Internet Society. Om lokala ntverk i allmnna ordalag kan sgas att de hr i landet ursprungligen var den naturliga frlngningen av stordatorsystem enligt klient-server-modellen med speciella seriekablar kopplade frn en stordator ut till terminaler. Under 1980-talet kade lokala ntverk i popularitet, eftersom de gjorde det mjligt fr anvndare att lagra ler och gra skerhetskopior centralt. I vissa fall anvndes inte ens en central lserver: anvndarna kunde d frn en viss dator se innehllet i andra lsystem p andra datore anslutna till ntverket och p s vis utbyta ler. Sverige brjade anslutas till olika internationella publika datorntverk kl 14:02 den 7 april 1983,2 d ENEA Data3 i Tby anslts till EUnet av Bjrn Eriksen. ENEA blev snart navet i ett mindre UNIX-ntverk baserat p protokollet UUCP (UNIX-to-UNIX-copy) omfattande de strsta svenska universiteten. r 1986 registrererades toppdomnen .se fr Sverige, och runt 19871988 skapades SUNET (Swedish University Computer Network) och
1 Titeln r en ordlek med Stephen Hawkings boktitel A Brief History of Time eller Tiden, en kort historik som den hette p svenska. Se [1] 2 Den frsta svenska domnen, enea.se r ocks registrerad detta datum. 3 ENEA var en gng en frkortning av Engmans Elektronik Aktiebolag, men r vl numera antagligen bara varumrket ENEA.

Kapitel 9 Internet och andra ntverk NORDUNET (Nordic University Computer Network). Dessa universitetsnt vergav till sist de gamla ntverkssystemen X.25, DECNet och UUCP fr att uteslutande anvnda internetprotokollet, mest knt som IP. I och med att IP-adresser brjade anvndas blev Svenska datorntverk successivt en del av det publika Internet.

9.1

Allmnt om datornt

Om du ngon gng har varit i kontakt med mnet datornt kommer detta avsnitt att trka ut dig. Hoppa i s fall direkt till nsta avsnitt. Datornt r ntverk av datorer, d.v.s. datorer anslutna till varandra med en digital informationskanal. De olika anslutningsformerna har gett upphov till fljande terminologi: Datornt kan klassas efter storlek; lokala ntverk, stadsnt eller stora ntverk (Internet).4 De kan klassas relativt en organisation ssom ett fretag: ett intrant nns internt p fretaget, medan ett extrant nr fretagets kunder och leverantrer. De kan delas in efter hur kablarna r dragna, d.v.s. enligt topologi: stjrnnt, maskformat nt, bussnt, ringnt o.s.v. De kan ven klassas efter komponenternas roller: klient-server,5 peer-to-peer (P2P) o.s.v. Datorer i ntverk anvnder protokoll, vilket r konventioner fr hur data skall formateras och kapslas in i paket,6 ven kallade datagram, bestende av binra talsekvenser, fr transport ver ntet. Dessa talsekvenser omvandlas och bearbetas sedan som andra (strre, komplexare) paket i ett antal niver, och till sist frvandlas de till elektriska signaler, ljuspulser, radiovgor eller ngot annat elektromagnetiskt vgutbredningsfenomen, fr att sedan omvandlas tillbaka till paket i andra nden av frbindelsen. Protokollen innehller snillrika funktioner fr att med hjlp av kontrollsummor skerstlla att paketen kommer fram intakta, och kan ibland
4 Mer eller mindre godtagna versttningar av engelskans LAN (Local Area Network), MAN (Metropolitan Area Network) och WAN (Wide Area Network). 5 Se avsnitt 2.3.10 p sidan 104. 6 Paketfrmedlade datornt r den idag dominerande formen av datorntverk. Principen r inte annorlunda frn att skicka paket med posten eller ngon budrma, med skillnaden att det rr sig om abstrakta enheter, som kan betraktas som komponenter av ett strre meddelande.

298

9.1 Allmnt om datornt Tillmpning: FTP, HTTP, SSH o.s.v. Transport: TCP, UDP, RTP Ntverk: IP, ARP, RARP, ICMP Lnk: PPP, SLIP, Ethernet, Token ring o.s.v.
Figur 9.1: TCP/IP-stacken har fyra tydliga lager: tillmpning, transport ntverk och lnk. Under lnken nns sedan de fysiska elektromagnetiska signalerna.

ven se till att de kommer fram i en viss ordning, eller tminstone att de sorteras nr de kommer fram. De protokoll som med frkrossande majoritet anvnds av dagens ntverk brukar kallas internetprotokoll. De har tack vare Internets framvxt ftt en sdan total dominans att de i princip helt ersatt gamla protokoll som IPX/SPX7 frn Novell, X.25 frn ITU-T, AppleTalk frn Apple och NetBEUI frn Microsoft. Internetprotokollen, som vanligen bara kallas TCP/IP-stacken,8 har det hierarkiska utseendet i gur 9.1. De olika hierarkiska stegen brukar i datorkommunikationssammanhang kallas fr lager. Lagren i TCP/IP-stacken heter sledes tillmpningslager, transportlager, ntverkslager och lnklager.9 Nuvarande standardiseringsorganisationen ITU-T10 , fre detta standardkommittn CCITT,11 har uppfunnit en modell som kallas OSI (Open Systems Interconnect) och har vissa vaga likheter med realiteterna i TCP/IP-stacken. Hr har samtliga inblandade protokoll namn som brjar med X (X.25, X.500 o.s.v.) och systemet avsg att erstta alla bentliga protokoll, inklusive det beprvade och tlmodigt utarbetade TCP/IP. Detta projekt har numera vederbrligen dtt sotdden, men anvnds nd ibland fr att t.ex. tortera studenter som lser datorkommunikationskurser p universitet. Linuxkrnan r, liksom de esta POSIX-system, byggd fr att anvndas tillsammans med TCP/IP. Krnan kan naturligtvis hantera andra protokoll som IPX eller AppleTalk, men nyttan med detta r nog
7 IPX/SPX 8 Transmission

utlses Internetwork Packet eXchange/Sequenced Packet eXchange. Control Protocol/Internet Protocol r ett samlingsnamn p protokoll-

stacken. 9 Lagerterminologin ger upphov till en del facktermer av typen lager-3-router. Undvik helst sdan jargong, eftersom det ofta r oklart vilket lager som r det tredje. 10 ITU-T utlses Internationella teleunionen, Telekom-avdelningen. 11 CCITT utlses Comit Consultatif International Tlphonique et Tlgraphique.

299

Kapitel 9 Internet och andra ntverk ganska begrnsad. Frn lnklagret och nedt kan krnan hantera alla mjliga protokoll. Ethernet och PPP (point-to-point protocol) r kanske de vanligaste, men FDDI,12 SLIP,13 Token Ring, och ATM14 kan lika grna anvndas. P senare tid har ven lokala radiontverk (engelska: wireless local area network, WLAN) blivit populra och krnan stjer ven dessa protokoll.

9.2

TCP/IP-stacken: internetprotokollen

Detta avsnitt avhandlar internetprotokollstacken, som anvnds av de esta moderna datorsystem, och av alla system som r anslutna till Internet. Om du tidigare anvnt TCP/IP i ett annat operativsystem r detta avsnitt inga nyheter eftersom protokollen inte skiljer sig mellan operativsystemen, och du kan med gott samvete hoppa direkt till kongureringsavsnittet, som gr in p hur just GNU/Linux anvnder TCP/ IP. De protokoll som ingr i TCP/IP-stacken denieras av Internet Engineering Task Force, IETF. Detta arbete sker genom arbetsgrupper dr vem som helst kan bli medlem genom att prenumerera p arbetsgruppens epostlista. Arbetet dokumenteras i standarddokument med namngivning av typen RFC NNNN, av engelskans Request For Comments och dr NNNN r en siffra. Namnet Request For Comments kan lta bakvnt och instabilt, men har historiska skl och dokumenten har hetat s sedan 1969. RFC-dokumenten r frvnansvrt lttlsta jmfrt med mnga andra tekniska standarddokument.15 Med gur 9.1 i gott minne skall vi som hastigast bekanta oss med de viktigaste protokollen i TCP/IP-stacken. Fr att frst dessa protokoll fordras kunskaper i binr aritmetik (i synnerhet att kunna verstta mellan binra och decimala tal). Om du inte har sdana kunskaper kommer en del av det fljande att framst som mystiskt och obegripligt, och du kan d nja dig med att tillsvidare betrakta IP-nummer, ntmask, standardgateway och DNS som ngot magiskt som du fr frn din ntverksleverantr. Mnga fr alla sina ntverksinstllningar via DHCP (se nedan) och behver drfr inte bekymra sig om saken.
12 FDDI, vilket str fr Fibre Distributed Data Interface r ett lgnivprotokoll avsett fr lokala ntverk byggda p optisk ber istllet fr metallkablar. Det kan dock lika grna anvndas p metallkabel och kallas d CDDI, Cable Distributed Data Interface. 13 SLIP utlses Serial Line Interface Protocol och r en fregngare till PPP. 14 ATM str fr Asynchronous Transfer Mode och anvnds mycket i hgpresterande frbindelser. 15 Se: http://www.ietf.org/rfc.html

300

9.2 TCP/IP-stacken: internetprotokollen Det som fljer r p inget vis ngon uttmmande redogrelse fr internetntverk: rekommenderad lsning fr frdjupning r motsvarande RFC-dokument, som i vart fall r angivet.

9.2.1

Tillmpningsprotokoll

Tillmpningsprotokollen, varav det nns ganska mnga, skall hr enbart avhandlas sporadiskt: de anvnds p hg niv direkt av olika tillmpningsprogram fr att kommunicera med andra program. De allra esta av dessa protokoll bestr i praktiken av ngra rader med ren text, fljd av en datastrm. Fr att sedan skta sjlva transporten av datastrmmen anvnder de vanligtvis TCP, UDP eller RTP, som alla beskrivs nedan. Samtliga tillmpningsprotokoll bygger p klient-server-modellen, se avsnitt 2.3.10 p sidan 104. HTTP Hyptertext Transfer Protocol (RFC 2068) skapades ursprungligen av Tim Berners-Lee vid CERN fr transport av HTML-dokument ver Internet. HTTP ppnar en TCP-frbindelse, hmtar eller skickar data, och stnger sedan frbindelsen igen. HTTP kan ocks teruppta en pbrjad verfring som av ngon anledning avstannat, och anvnds drfr ofta ven till lverfring. Se vidare avsnitt 11.2 p sidan 379 om webblsare. FTP File Transfer Protocol (RFC 959) r ett protokoll som verfr hela ler ver Internet. Ett FTP-program ppnar en TCP-frbindelse till en annan dator, och hller den sedan ppen tills anvndaren har hmtat alla ler som denne behver. SMTP Simple Mail Transfer Protocol16 (RFC 2821) anvnds fr att skicka elektronisk post ver Internet. Det motsvarar postverkets gula brevldor, dr posten stoppas i fr att skickas vidare till mottagaren. SMTP anvnder sig i sin tur av TCP. IMAP Internet Message Access Protocol (RFC 3501) anvnds fr att ta emot elektronisk post frn en brevlda dit det levererats med protokollet SMTP. Det motsvarar den vanliga brevldan vid grinden till ett hus eller i en lgenhetsdrr. Ett ldre protokoll fr epost kallas POP Post Ofce Protocol (RFC 1939 m.., ven kallat POP3) och anvnds allt mindre. IMAP kan hantera mycket som POP inte kan, t.ex. lagring av brev p en server, till skillnad frn POP som bara kan hmta hem dem till din egen dator. Bde IMAP och POP anvnder TCP.
16 Ibland

skmtsamt kallat Send Mail To People.

301

Kapitel 9 Internet och andra ntverk NTP Network Time Protocol (RFC 1305 och RFC 2030) anvnds fr att synkronisera klockan p en dator mot klockan p en annan dator som erbjuder en synkroniseringsserver. NTP anvnder i sin tur vanligtvis UDP. SSH Secure Shell r nnu ingen standard, eller ens freslagen standard. Endast ett utkast till standard freligger. Emellertid anvnds SSH mycket fr att via TCP ppna en krypterad terminalfrbindelse mellan tv datorer, och r drfr de facto-standard. SSH erstter tidigare protokoll som Telnet (RFC 854 och RFC 855) som inte erbjd ngon krypering alls, utan bara ett ganska simpelt terminalfnster. Terminalinloggning r fr vrigt Internets ldsta praktiska anvndingsomrde och den direkta anledningen till att fregngaren ARPAnet en gng skapades. Att starta Internettillmpningar (ven kallat tjnster) p en dator r att gra datorn till en server fr en viss tjnst. T.ex. r en dator med en demon fr protokollet HTTP en dator som kan tillhandahlla tjnsten hypertext och kallas sledes fr en webbserver. Att starta servertjnster utver de mest grundlggande betraktas i denna bok som stordrift (ej husbehov), och vilka GNU/Linux-program som anvnds fr dessa tjnster avhandlas endast versiktligt i appendix B.4 p sidan 423.17 Tillmpningsprotokoll: DNS Domain Name System (RFC 1034 och RFC 1035)18 r ett viktigt protokoll: detta anvnds fr att koppla samman ett symboliskt namn p en dator med ett IP-nummer (vilket kommer att frklaras senare, men som i princip r ett slags telefonnummer till en annan dator), s att t.ex. datornamnet www.foo.org automatiskt verstts till IP-numret 123.124. 125.126. DNS r ett tillmpningsprotokoll, men upplevs ltt som om det lg lngre ner i ntverksstacken, eftersom det anvnds av i princip alla tillmpningar. T.ex. anvnder varje program som kan utnyttja FTP ocks DNS, varje webblsare som anvnder HTTP anvnder ocks DNS o.s.v.
17 Annan litteratur p omrdet tvekar inte att introducera bde FTP- och HTTP-servrar fr nybrjare, mjligen i tron att mnga som anvnder GNU/Linux vill anvnda systemet till just sdant. Skulle sdana program och kongurationer behandlas p ett rttvist stt skulle den hr boken vara minst dubbelt s tjock. 18 RFC 1034 och 1035 utgr en uppdatering av den ursprungliga standarden som publicerades i RFC 882 och RFC 883.

302

9.2 TCP/IP-stacken: internetprotokollen I begynnelsen fanns endast IP-nummer. Numren var svra fr anvndarna att komma ihg, och drfr brjade symboliska namn att anvndas. Bruket av symboliska adresser tog sin brjan i att datorerna anslutna till Internet anvnde en l kallad hosts som fanns p varje dator, och som innehll listor ver vilka datornamn som svarade mot vilka IP-nummer. Alla datorer p hela Internet fanns upprknade i denna l. Filen nns fortfarande i de esta POSIX-system, och i GNU/Linux hittar du den i /etc/hosts. (Vi terkommer till hosts-len lngre fram.) Efter ett tag blev det omjligt att underhlla den hr len. Folk hade inaktuella och felaktiga hosts-ler, och ibland manipulerades lerna godtyckligt av administratrer. Fr att lsa detta skapades det hierarkiska, distribuerade, sjlvreplikerande och eleganta DNS-systemet, och med det alla de kryptiska Internet-adresser vi anvnder idag. Datornamnen som anges i DNS r delade i tv delar: datornamn (engelska: hostname) och domnnamn (engelska: domain name). Om de tv delarna sls samman med en punkt kallas resultatet fr det fullstndigt kvalicerade domnnamnet (engelska: fully qualied domain name, FQDN). Datorn med det fullstndigt kvalicerade domnnamnet www.foo.org har exempelvis datornamnet www och domnnamnet foo.org.

9.2.2

Transportprotokoll: TCP

Transmission Control Protocol (RFC 793) fastslogs redan r 1981. TCP packar in data i paket med en storlek mellan 25 och 65536 byte. Cirka 90% av all trak p Internet bestr av TCP-paket. Varje paket har ett sekvensnummer: detta anvnds fr att p mottagarsidan se till att paketen kommer fram i rtt ordning och fr att detektera om ngot paket skulle saknas och i s fall begra omsndning av paketet. Med hjlp av sekvensnumren och omsndningsmekanismen kan TCP-paketen passas samman till en frlustfri datastrm av samma slag som en l. Det nns ven en kontrollsumma i paketet som kan anvndas fr att veriera att paketet verfrts korrekt. Frutom ren data innehller ett TCP-paket ven tv portnummer: porten paketet skickades frn och porten det r avsett att g till. Dessa 16-bitarssiffror r rena konventioner och har inget att gra med portar p baksidan av datorn eller i datorns minne. De anvnds fr att era tillmpningsprogram skall kunna anvnda TCP samtidigt: om detta inte grs kan mottagare och sndare inte avgra vilken process i operativsystemet19 som skall hantera ett inkommet paket.
19 Den

mottagande processen (programmet) r oftast en demon (t.ex. en server, se si-

303

Kapitel 9 Internet och andra ntverk Port 20, 21 23 53 70 80 110 123 177 Protokoll FTP Telnet DNS Gopher HTTP POP3 NTP XDMCP Port 22 25 69 79 88 119 143 540 Protokoll SSH SMTP TFTP Finger Kerberos NNTP IMAP UUCP

Figur 9.2: Ett antal standardiserade portar och deras protokoll. Portnumren tilldelas av IANA (Internet Assigned Numbers Authority) och omfattar oftast transport fr det avsedda protokollet ver bde TCP och UDP, ven om TCP i de esta fall r det enda som aktivt utnyttjas.

Genom att kombinera kunskap om portnummer med ett IP-nummer (se nedan) kan tv processer p tv olika datorer utbyta information ver ett TCP/IP-ntverk, t.ex. ver Internet. Denna kombination av ntverksadress och portnummer kallas fr en sockel (engelska: socket). Vilket portnummer som skall anvndas till vad r dels stanardiserat av IANA Internet Assigned Number Authority, dels baserat p ren konvention. De standardiserade portnumren svarar vanligen mot ett visst tillmpningsprotokoll och drmed mot ett specikt anvndartillmpningsprogram. Ngra vanliga exempel ternns i gur 9.2. I len /etc/ services som nns i de esta distributioner nns en lngre och mer utfrlig lista ver vilka portar som r till fr vad. Notera att dessa portnummer r de som anvnds fr inkommande trak. Utgende trak anvnder en slumpmssigt vald port i ett hgt sifferomrde20 s ven om du ansluter till en annan dators port 80 fr att hmta en webbsida, kan ditt program mycket vl ha angett att svaret skall skickas till port 49160.

9.2.3

Transportprotokoll: UDP

Uniform Datagram Protocol (RFC 768) r en frlustvariant av TCP. Liksom TCP anvnder UDP checksumma och portnummer och kan sledes skapa socklar, men ngra sekvensnummer nns inte.
dan 42) men kan ocks vara ett interaktivt program som t.ex. en webblsare eller ett epostprogram. 20 Olika protokoll har denierat olika omrden bland de hga portnumren som de anvnder fr klientanslutningar, medan numren mellan 49192 och 65535 (hexadecimalt $C000-$FFFF) r helt fria att anvnda hur som helst.

304

9.2 TCP/IP-stacken: internetprotokollen UDP anvnds fr att s.a.s. kasta data p en mottagare. Om paketet inte kommer fram eller r trasigt, anses det ha gtt frlorat. UDP anvnds ofta fr att skicka information som r brttom och som nd skulle vara vrdels om den skickades om senare. Eftersom UDP ofta ges hgre prioritet n TCP i ntverken hnder det att tillmpningsprogram anvnder UDP p ett okynnesvis fr att ge sig sjlva hgre prioritet. Det gr t.ex. att emulera omsndning och resekvensiering av UDP-paket hgre upp i lagerhierarkin.

9.2.4

Transportprotokoll: RTP

Real Time Protocol (RFC 1889) r ett protokoll som brjade utarbetas redan i brjan av 1980-talet och som omnmns i specikationen fr TCP, men som inte publicerades frrn 1996 och inte frrn nu brjat bli anvndbart. Det anvnds fr strmmande video och ljud, IP-telefoni (ven kallat VoIP) och liknande realtidstillmpningar.

9.2.5

Ntverksprotokoll: IP

Internet Protocol (RFC 791) r det viktigaste av internetprotokollen. Svl TCP, UDP och RTP-paket kapslas in i IP-paket fr att kunna skickas till den mottagande datorn. Den viktigaste tillggsinformationen i ett IP-paket r mottagarens och avsndarens IP-nummer, ett slags telefonnummer p Internet som leder fram till den mottagande datorn. Fr att IP skall fungera p din dator krvs att din dator knner till fljande saker, som kommer att frklaras nrmare lngre ned i detta avsnitt: Sitt eget, unika IP-nummer, t.ex. 192.168.1.64 Sin subntmask, t.ex. 255.255.255.0. Sin standardgateway, t.ex. 192.168.1.1 Ofta krvs ocks adressen till en DNS-server fr att din ntverksanslutning skall upplevas som fullt fungerande, men strikt sett krvs inte detta fr att sjlva IP-ntverket skall fungera. Alla dessa siffror kan tilldelas din dator automatiskt genom ngot av protokollen PPP eller DHCP. Dessa kommer att frklaras lngre fram. Om du inte anvnder PPP eller DHCP mste du ange dem sjlv. IP-nummer anvnds fr tv saker: att numrera ntverk och att numrera datorer. Det nns naturligtvis er datorer n ntverk. 305

Kapitel 9 Internet och andra ntverk IP-numren r 32 bitar (fyra byte) lnga, och kan sldes anvndas fr att numrera hela 232 (drygt fyra miljarder) datorer och ntverk i teorin, men mnga nummer r reserverade och mnga nummerserier r utdelade i stora sjok som inte alltid anvnds. De 32 bitarna r delade i tre grupper: bitar i brjan som anger ntverksklass (se nedan), bitar som anger ntverksnummer och bitar som anger datornummer. Fr att adressera sjlva ntverket anvnds en IP-adress med alla datornummerbitarna satta till 0. Fr att adressera alla datorer p ntverket (en s.k. broadcast, betyder ungefr rundradio), anvnds en IP-adress med alla datornummerbitar satta till 1. Ntverket med nummer 192. 168.1.0 innehller allts datoradresserna 192.168.1.1 till och med 192. 168.1.254 och broadcast-adressen 192.168.1.255. Om ett paket av ngot slag skickas till broadcast-adressen kommer alla datorer i ntverket att lyssna. Om ditt ntverk har publika IP-nummer och r en del av Internet, r en av datorerna, eller rttare sagt: en av de enheter som har ett IPnummer, en gateway. Denna dator har till uppgift att frmedla paket vidare till Internet. Om ett pakets IP-adress inte kan hittas p ditt lokala ntverk mste det skickas vidare uppt tills det kommer till rtt ntverk. Detta r anledningen till att datorer som skall ing i ett IP-ntverk mste frses med en standardgateway det kan nmligen nnas era gateway:ar21 och systemet behver d en partner att vnda sig till om ingen annan gateway frivilligt tar p sig att frmedla ett paket till Internet. IP-adresserna brukar skrivas ut med varje byte av 32-bitarsadressen angiven separat, med byte:arna avskilda med en punkt, t.ex. 192.168.1. 64. Eftersom varje siffra representerar en byte kan den bara anta vrden mellan 0 och 255. Nten r delade i fem olika klasser: A, B, C, D och E. Klass A-nt r enorma och kan innehlla upp till 224 2 (drygt 16 miljoner) datorer.22 Klass B-nt omfattar 216 2 (65534 st) datorer och klass C-nt, som r vanligast, kan innehlla 254 olika datorer. Indelningen illustreras i gur 9.3. Av praktiska skl anvnds ocks en s.k. ntmask eller subntmask. Denna bestr av fyra byte (precis som en IP-adress) med alla bitar som adresserar ntverket (de inledande bitarna plus n-bitarna i gur 9.3) satta till 1, och de vriga bitarna (som indikerar datorn, h-bitarna i guren) satta till 0. Fr ett klass C-nt blir subntmasken t.ex. 255.255.255.0.
21 Svensk terminologi fr ordet gateway saknas tyvrr. Inkrsport r den ordagranna versttningen av ordet. Frmedlare r ett tnkbart alternativ. 22 Notera att tv adresser faller ifrn: en fr att adressera sjlva ntverket och en fr att adressera alla datorer (broadcast). I praktiken gr ofta minst en adress till t fr gateway.

306

9.2 TCP/IP-stacken: internetprotokollen

Figur 9.3: Illustration av adresseringsklasserna fr IP-nummer. Figuren visar adressernas fyra byte: de bitar som givits vrdet 1 eller 0 r xerade, och variabeln n betyder att bitarna anvnds fr att numrera ntet, medan h numrerar datorerna i ntet (h kommer av engelskans host, vrddator.) T.ex ser vi att det nns 27 = 127 mjliga klass A-nt med 224 datorer i varje, ett av dem anvnds fr 127.0.0.1-adressen.

Det frmsta anvndningsomrdet fr ntmasken r d operativsystemet eller ntverkselektroniken skall avgra ifall en dator ligger p det lokala ntverket eller ej. En logisk AND mellan datornumret och (sub)ntmasken ger i s fall sjlva ntverkets adress. Verkliga subnt blir det frga om ifall bitmasken delar av ntverkets adressrymd i ngon jmn tvpotens. Bitarna lngst till vnster i masken mste alltid vara satta till konsekutiva 1:or och bitarna lngst till hger mste vara satta till konsekutiva 0:or, men genom att skjuta till en etta till en klass C-ntmask, s att den blir 255.255.255.128, kommer tv subnt med 128 datorer i varje att skapas. Om ditt klass C-nt tidigare hade adressen 192.168.1.0 nns nu subnten 192.168.1.0 med datorer med IP-nummer frn 192.168.1.1 till 192.168.1.126 och broadcast-adressen 192.168.1.127 och sedan nnu ett ntverk med adressen 192.168.1.128 och datorer med nummer mellan 192.168.1.129 och 192.168.1.254, och broadcast-adressen 192.168.1.255. Det vanligaste anvndningsomrdet fr subnt r att dela klass Boch klass A-ntverk i mindre bitar. P s vis kan delar av de stora klass A-nten portioneras ut till behvande. Den typ av ntverksnumrering som anvnder en subntmask r inte lmplig fr all ntverksutrustning. Vissa routrar23 kunde t.ex. till en brjan bara hantera subntklasserna A, B och C, och drmed bara ntmaskerna 255.0.0.0, 255.255.0.0 och 255.255.255.0. Fr att lsa detta
23 Routrar r det svengelska namnet p en ntverkskomponent som kopplar samman tv eller era olika nt med varandra. De skiljer sig frn en s.k. hubb, som inte r stort mer n en grenkontakt fr ntverkskablar, genom att routern kan bearbeta inkommande och utgende paket p ett intelligent vis, som datorntets motsvarighet till en telefonvxel.

307

Kapitel 9 Internet och andra ntverk problem introducerades en notation med namnet klassls interdomnroutning (engelska: classless inter-domain routing, CIDR) som anger ntmasken som antalet ettstllda bitar frn vnster, s att t.ex. ett klass C-nt kan ha adressen 192.168.1.0/24. Denna notation r bra att knna till eftersom den ger mjlighet att dela ner ntverk i storlekar andra n A, B och C-klass, s lnge ntets storlek kan uttryckas som en jmn tvpotens. Vissa speciella IP-nummerserier r dokumenterade i RFC 3330. Hr listas t.ex. 127.x.x.x som r ett helt klass A-nt reserverat bara fr den lokala datorn (som alltid har IP-nummer 127.0.0.1). Det nns ocks 273 hela ntverk reserverade fr privat anvndning: 10.x.x.x (ett klass A), 172.16.x.x172.31.x.x (sexton stycken klass B) och 192.168.x.x (256 stycken klass C). Detta betyder att om du skapar ett lokalt ntverk som inte skall vara en del av Internet, s skall du anvnda nummer ur t.ex. 192.168.x.x-serien om du maximalt behver kunna adressera 256 datorer. Detta anvnds mycket. En enskild dator kan ha mer n ett IP-nummer, men r den ansluten till Internet s har den alltid minst tv: 127.0.0.1 och ett unikt, publikt IP-nummer. Den version av IP-protokollet som dokumenteras i RFC 791 kallas ibland IPv4, eftersom det var den 4:e revisionen av IP, och den som blev utbredd. P grund av att den mngd av IP-nummer som kan stadkommas med det nuvarande systemet inte rcker till har IETF ven specicerat ett nytt protokoll: IPv6 (RFC 2373 och RFC 2374). Detta anvnds parallellt med IPv4 under en vergngsperiod. IPv6 innehller era nnesser, men den viktigaste r att protokollet har std fr 2128 datoradresser, vilket motsvarar cirka 667 kvadriljoner datorer per kvadratmillimeter p jordens yta.24 Detta borde rcka ven fr de lskiga maskinerna i lmen The Matrix. IPv6-adresserna anges hexadecimalt med kolon mellan varje fyrstllig grupp, t.ex: 416c:6c20:796f:7572:2062:6173:6520:6172.25 De frsta 64 bitarna anger ntverkadressen och de sista 64 bitarna anger datoradressen.

9.2.6

Ntverksprotokoll: ICMP

Internet Control Message Protocol (RFC 792) r egentligen en del av IPprotokollet, och alla implementationer av IP mste ven implementera ICMP. Protokollet anvnds t.ex. fr att ta reda p vilken vg ett IP-paket
24 Jordens

yta r c:a 5, 1 108 km2 .

25 Om era fyrstlliga grupper innehller vrdet 0000 kan de sls samman och uteslutas

med en notation som innebr att en rcka 0000-grupper kan ersttas med tv kolon ::.

308

9.2 TCP/IP-stacken: internetprotokollen skall ta; exempelvis vilken dator som nrmast skall skicka paketet vidare. Det anvnds ven fr program som ping och traceroute fr att testa tillgngligheten till olika datorer p Internet.

9.2.7

Ntverksprotokoll: ARP

Address Resolution Protocol, adressupplsningsprotokollet (RFC 826) r ett protokoll som anvnds p Ethernet-ntverk fr att ta reda p nrmast mottagande dators MAC-adress. MAC-adressen (frn engelskans Media Access Control address) r 48 bitar lng och skall vara unik fr varje ntverkskort. P vissa kort kan den dock ndras. MAC-adressen hr hemma i lnklagret. Fr att skicka ett IP-paket ver ett lokalt ntverk av typen Ethernet duger det inte med ett IP-nummer: istllet fordras en unik adress kopplad till det mottagande ntverkskortet. ARP hjlper till att vaska fram denna adress.26 ARP:s tvillingprotokoll RARP Reverse Address Resolution Protocol det omvnda adressupplsningsprotokollet (RFC 903) anvnds i omvnda fallet: du har en MAC-adress och vill veta vilket IP-nummer som tillhr datorn som har denna MAC-adress.

9.2.8

Lnkprotokoll: PPP

Point-to-Point Protocol (RFC 1661 och RFC 1662) anvnds fr att etablera en ntverksfrbindelse mellan tv punkter, t.ex. mellan tv datorer.27 Ett underprotokoll till PPP kallas LCP, Link Control Protocol, och anvnds fr att verfra olika meddelanden om lnken mellan de tv punkterna. LCP anvnds fr att upprtta lnken, t.ex. fr att verfra ett anvndarnamn och ett lsenord som slpper in den nya punkten i ntverket. LCP kan utkas med olika moduler beroende p vad som behver gras mellan de tv punkterna. Den frsta, och mest sjlvklara modulen r PAP, PPP Authentication Protocols (RFC 1334), som gr det mjligt att ange anvndare och lsenord. PPP mste inte anvndas till att ansluta till ett IP-ntverk: vilken ntverkstyp det r frga om bestms av ett annat protokoll som r spe26 I sjlva verket r det s, att nr ett IP-paket skickas ver Ethernet, packas det i sin tur in i ett Ethernet-paket, frses med den mottagande datorns MAC-adress och skickas ut i etern, d.v.s. ntverkskabeln. Om krockar eller fel uppstr i paketet fr TCP eller motsvarande protokoll p hgre niv ta hand om att skicka om paketet tills dess att det kommer fram. 27 Historiskt sett grundar sig PPP p det ldre protokollet HDLC, High Level Data Link Control, men fr en nutida anvndare r vl denna relik i sammanhanget en pipa snus.

309

Kapitel 9 Internet och andra ntverk cikt fr IP, IPX, DECNET eller vad som nu anvnds i ntverket i frga. Det som med frkrossande majoritet anvnds r naturligtvis IP, och d r det modulen IPCP PPP Internet Protocol Control Protocol28 (RFC 1332) som anvnds. IPCP kan via utkningar tilldela svl standardgateway, subntmask och DNS-server till den som ansluter sig. PPP r ett klient-server-protokoll:29 en dator agerar server som erbjuder klienter att ansluta sig till den och erhlla IP-adresser och annan konguration via IPCP. Detta stt att tilldela information r mycket populrt bland internetleverantrer, eftersom det gr det mjligt att hushlla med IP-adresser. En modempool med 500 modem behver t.ex. bara ha tillgng till 500 IP-adresser, ven om 60000 personer anvnder modempoolen bara maximalt 500 personer kan ju anvnda den samtidigt! Det vanligaste anvndningsomrdet fr PPP r fr att ansluta en dator till ett ntverk via modem. S gott som alltid r det en anslutning till Internet (eller ett internt IP-baserat ntverk) som grs med PPP. Modemet som sitter i din dator ringer upp ett modem som sitter i en annan dator, och via modemlnken frhandlar din dator och den andra datorn med hjlp av PPP och dess underprotokoll om hur kommunikationen skall fungera. Med PAP ger din dator sig till knna, och med IPCP ber den om olika IP-instllningar. Andra mjliga anvndningsomrden fr PPP r att uprtta en frbindelse mellan tv datorer ver ISDN (Integrated Services Digital Network), ver en simpel seriekabel, eller mellan tv hela lokala ntverk ver en seriekabel eller telefonfrbindelse. Anvndandet av PPP i Sverige minskar i takt med att bredbandsnten (vad nu det betyder) byggs ut. Eftersom ordet bredband inte betyder ngonting30 myntar vi begreppet hghastighetsanslutning istllet, fr att referera till abonnemangstjnster med en fast Internetanslutning som inte sker via modem utan via Ethernet. Hghastighetsnt anvnder i allmnhet DHCP (se nsta avsnitt) fr att kongurera frbindelsen. Fre PPP-protokollets fdelse r 1994, och speciellt i Internetboomens ungdom p det tidiga 1990-talet, anvndes ofta SLIP (Serial Line Interface Protocol, RFC 1055) istllet fr PPP. Detta protokoll kunde t.ex. inte tilldela den uppringande datorn ngot IP-nummer och r idag inte srskilt vanligt.
r inte jag som vljer dessa idiotiska namn. Jag ursktar IETF:s vgnar. avsnitt 2.3.10 p sidan 104. 30 Detta modeord har ingen teknisk betydelse. Bredbandig radiokommunikation existerar och betyder att radiokanalen tar upp ett stort frekvensomrde och sledes kan verfra stora mngder information. Student-TV i Lund lanserade i ett program begreppet fetkabel, vilket sger ungefr lika mycket.
29 Se 28 Det

310

9.3 Att stlla in ntverket

9.2.9

Svrdenierat: DHCP

Dynamic Host Conguration Protocol (RFC 2131) kan anvndas fr att tilldela IP-adress, standardgateway, ntmask och DNS-server till en nystartad klientdator helt automatiskt. Det fungerar s att en dator som startas i ntverket anvnder broadcast fr att frga sjlva ntverket om vilken IP-adress o.s.v. som den skall ha. En speciellt kongurerad dator DHCP-servern kommer d att svara med den begrda kongureringsinformationen. DHCP r svrt att placera in i bilden av en ntverksstack: det r i ngon mening ett applikationsprotokoll, men det r samtidigt komplicerat att tnka sig en applikation som kan fungera utan att anvnda de andra lagren i stacken. Funktionsmssigt r det inte svrt att frst DHCP, och drfr rekommenderas en syn p DHCP som ngot eget helt fristende frn ntverksstacken.31 I ett ntverk dr DHCP anvnds utgr det ibland ett skerhetsproblem: vem som helst som ansluter en dator till ntverket fr ju tilldelat sig en IP-adress, och kan d brja anvnda ntverket! Det r dessutom fritt fram att ansluta hur mnga datorer som helst till ntet, bara du har tillgng till det fysiska ntverket. Av dessa anledningar villkoras ibland DHCP-tilldelningen s att bara datorer vars MAC-adress registrerats hos DHCP-servern kan tilldelas ett IP-nummer. I vissa fall uppstr nskan om att en viss dator i ett ntverk som administreras med DHCP skall ha ett fast IP-nummer. Detta fungerar utmrkt numret kan antingen anges lokalt p datorn, och sedan plockas bort ur den nummerserie som DHCP-servern har tillgnglig att dela ut, eller s kan DHCP-servern kongureras att tilldela datorn med en viss MAC-adress samma IP-nummer varje gng den begr ett. Som redan tidigare nmnts r DHCP populrt p dagens hghastighetsanslutningar. Tidigare anvndes protokollet BOOTP (RFC 951) istllet fr DHCP. Detta har dock gtt ur tiden p samma vis som PPP har ersatt SLIP.

9.3

Att stlla in ntverket

Det absolut trevligaste alternativet nr det gller att kongurera ntverket i GNU/Linux r om din distribution kan gr det t dig. Detta gller i synnerhet sdana saker som modemanslutningar och ADSL-linjer.
31 Jag har mrkt att en del mnniskor har stora problem med saker som inte passar in i modellen. Tnk p att internetprotokollen r utvecklade baserat p praktisk erfarenhet av vad som behvs i ett datorntverk och inte i ngot platonskt parallelluniversum.

311

Kapitel 9 Internet och andra ntverk Applikation Ntverksgrnssnitt lo, ethN, pppN etc. Drivrutin Ntverkskort
Figur 9.4: Ntverket s som det uppfattas av programmen i GNU/ Linux-sviten. Bland de tillmpningar p versta nivn som talar med ntverksgrnssnitten nns Net-tools, som skter alla grundinstllningar av ntverket d datorn startas. Inetutils-verktygen, SSH, Mozilla samt alla andra ntverksklienter och servrar r andra tnkbara tillmpningar.

Har du ett vl fungerande lokalt ntverk eller t.ex. ADSL-anslutning av ngot slag, rcker det fr det mesta med att ngon gng under installationen ange att du vill anvnda DHCP fr ntverkskonguration, och sedan behver du inte bekymra dig mer om saken. Har du en modemuppkoppling kan det vara knepigare: d krvs ofta en del extra instllningar, t.ex. telefonnummret till din modempool, anvndarnamnet och lsenordet. ven dessa instllningar klarar de esta distributioner galant. Nu gr vi in i nrbild p hur GNU/Linux anvnder ntverket. Linuxkrnan och de program som anvnder sig av den uppfattar ntverket som i gur 9.4. Hr r ethN, pppN o.s.v. ett numrerat ntverksgrnssnitt.32 Din dator kan vara ansluten till era ntverk med era olika ntverkskort eller modem. Det r emellertid vanligast att du bara har en ntanslutning och sledes bara ett ntverkskort eller ett modem, och d nns det normalt bara endera eth0 eller ppp0. Har du en ISDN-anslutning kallas dess grnssnitt ippp0. Den egna datorn har ven ett s.k. loopback-grnssnitt med namnet lo, som svarar mot IP-adressen 127.0.0.1 och som inte anvnder ngon hrdvara alls, utan bara pekar anslutningar du gr till den egna datorn tillbaka till dig sjlv. Andra typer av ntverksgrnssnitt existerar, men de nmnda typerna str fr en frkrossande majoritet av alla i naturen frekommande ntverksanslutningar. Bakom det skikt i modellen som bara kallas ntverksgrnssnitt och som svarar mot enheter som eth0 eller ppp0, dljer sig i sjlva verket he32 Vi har redan tidigare noterat att dessa grnssnitt inte renderar ngon enhetsl i /dev. Ntverket hanteras inte som en block- eller teckenenhetsl.

312

9.3 Att stlla in ntverket la TCP/IP-stacken frn gur 9.1 i fregende avsnitt. TCP/IP r en naturlig del av Linuxkrnan och ligger drfr automatiskt inkompilerad, s lnge som ngon ntverksdel valts under kompileringen av krnan, d.v.s. i praktiken s gott som alltid.

9.3.1

Net-tools

Ett antal ndvndiga verktyg fr att stlla in ntverket i GNU/Linux nns i programpaketet Net-tools. Precis som med t.ex. Modutils ligger detta programpaket utanfr sjlva Linuxkrnan, och anvnder bara krnan via de denierade grnssnitten. Ett annat programpaket med namnet Inetutils innehller de mest basala Internetverktygen i form av klient- och serverprogram och kommer att behandlas lngre fram. Varje distribution har oftast en uppsttning skript som ser till att kongurera ntverkskorten, eller ringa upp en internetleverantr automatiskt under uppstart. (Uppringning kan ocks ske p begran.) Dessa skript anvnder i sin tur i allmnhet endast programmen frn paketet Net-tools, men ingr inte sjlva i Net-tools-paketet, utan hr till distributionen. Det existerar ingen som helst standard fr vart de mest grundlggande ntverksinstllningarna skall lagras i ett GNU/Linux-system, utan detta r helt beroende p distribution. Red Hat / Fedora Core lagrar dem t.ex. i /etc/syscong/networking, och Debian GNU/Linux lagrar dem i /etc/network. Fr att f reda p hur det fungerar i just ditt system fr du konsultera dokumentationen frn din distributr eller sjlv rota runt i /etc och man-sidorna. Frn dessa kongurationsler hmtas vid uppstart av systemet en del information, som sedan anvnds fr att med hjlp av de olika verktygen i Net-tools-paketet kongurera och starta ntverket. Om du bygger ditt eget system frn grunden fr du sjlv utveckla rutiner fr hur ntverksinstllningarna skall sktas, s du kan gra allt fr hand om du vill. De verktyg och ler frn paketet Net-tools som behvs fr att stlla in ntverket fr hand kommer nu att beskrivas. Vissa av dessa kommandon r bara tillgngliga fr root-anvndaren, men kan oftast kras ven av vanliga anvndare som vill ha information om systemet, bara de skriver ut en fullstndig skvg, t.ex. /sbin/ ifcong. arp utan argument ger information om vilka IP-adresser eller datornamn (t.ex. 192.168.1.64 eller foo.bar.se) som r kopplade till vilken MAC-adress (t.ex. 00:40:06:5D:63:CE) och vilket av datorns ntverksgrnssnitt (t.ex. eth0) som en viss dator sist sgs till p. 313

Kapitel 9 Internet och andra ntverk Som syns av namnet r detta information som genereras och anvnds av internetprotokollet ARP33 , och kallas fljdaktligen fr ARP-tabellen (engelska: ARP cache). Den tabell som ges av kommandot skall utlsas som fljer: om jag vill ha tag p datorn x, vilken MAC-adress har i s fall dess ntverkskort, och vilket av mina ntverksgrnssnitt skall jag anvnda fr att prata med det?34 De MAC-adresser som nns i ARP-tabellen avser adresser p ditt lokala ntverk. Om systemet vill skicka ett paket till en dator som ligger utanfr ditt eget ntverk, kommer den att skicka det till en gateway istllet, och d rcker det med att din gateway:s hrdvaruadress r knd. Att skicka paketet vidare p andra ntverk efter detta r inte ditt operativsystems huvudvrk, utan skts av andra datorer. (Detsamma gller nr ett paket kommer till dig frn ett yttre ntverk det ser rent fysiskt ut att komma frn en gateway.) ARP-tabellen p en hemdator innehller oftast ganska f IPnummer, men mste tminstone innehlla gateway-datorns nummer fr att kunna kommunicera med Internet. Nr datorn startas upp r ARP-tabellen tom. Nr din dator vill n en annan dator p ntverket kommer den att frga efter deras hrdvaruadresser med broadcast, och drefter lgga till dem i ARP-tabellen. Det r mjligt att anvnda arp interaktivt fr att lgga till eller ta bort datorer ur listan, men det fr betraktas som mycket udda. Ett mjligt anvndningsfall r om du har era ntverk anslutna till din dator och yttar en annan dator frn ett av ntverken till ett annat. Din dator kommer d att ha fel grnssnittsinformation fr den yttade datorn, och du kan uppdatera den fr hand med arp.35 Kommandot arp r naturligtvis meningslst fr t.ex. PPP-anslutningar, eftersom en sdan anslutning inte behver gra uppslag mellan IP-nummer och fysiska adresser p detta vis. Det nns bara en plats dit en dator med PPP-anslutning kan nska skicka ett paket, och det r till den andra punkten av frbindelsen. hostname anvnds fr att ta reda p vad datorn heter i ntverket. Det gr ocks att ange vad den skall heta genom att ge en parameter, t.ex. hostname foo. Denna frndring r dock hgst tillfllig och
avsnitt 9.2.7 p sidan 309. du bara har ett ntverkskort i din dator r detta sklart fga meningsfull information, men Linuxkrnan r gjord fr att hantera mnga ntverkskort i en och samma dator. 35 Enklast r kanske att starta om datorn istllet, eller skriva init 1 fljt av init 5.
34 Om 33 Se

314

9.3 Att stlla in ntverket lr frsvinna nsta gng du startar om datorn, och skall drfr inte ndras p detta vis utan i den instllningsl som anvnds nr datorn startas upp. (Ibland heter den len /etc/hostname, och ibland ngot helt annat.) Ngra andra verktyg som i sjlva verket bara r symboliska lnkar till hostname r: dnsdomainname ger DNS-domnnamnet fr datorn. Du kan inte ndra domnnamnet med detta kommando, och det vill du frmodligen inte heller gra, eftersom det bestms av din DNS-server. Vill du se det fullstndigt kvalicerade domnnamnet (www.foo.org) kan du skriva hostname --fqdn. domainname ger NIS- eller YP-namnet fr denna dator. Se avsnitt B.1 p sidan 418 fr mer information om dessa saker. Du kan ndra NIS/YP-domn med kommandot om du vill, men bara temporrt. Kommandona ypdomainname och nisdomainname har exakt samma funktion. ifcong (som skall utlsas network interface congurator, ntverksgrnssnittskonguratorn) r den huvudsakliga arbetshsten fr att kongurera ntverket. Distributionernas uppstartskript kr detta program automatiskt vid uppstart med en rad parametrar fr att stlla in de viktigaste ntverksinstllningarna. ifcong -a ger en lista ver installerade ntverksgrnssnitt och alla deras nuvarande instllningar.36 Detta r ett bra stt att t.ex. ta reda p MAC-adressen till ett ntverkskort i datorn om du behver det. Hr kan du ocks f en verblicksbild ver alla saker du kan kongurera fr ett ntverkskort. Alla former av grnssnitt kan listas med ifcong, men inte alla kan kongureras och startas med det: PPP-grnssnittet r ett sdant. PPP-anslutning beskrivs drfr i ett separat avnitt p sidan 321. Om du har ett Ethernetkort (vilket vl ocks r det vanligaste) kan du dock anvnda ifcong direkt. Fr de allra esta anslutningar duger:
# ifconfig eth0 192.168.1.64 netmask 255.255.255.0 up # route add -net 192.168.1.1 netmask 255.255.255.0 eth0

Detta kommer att stta upp en ntverksfrbindelse med IP p en dator. 192.168.1.64 r ditt tilltnkta IP-nummer, och 255.255.255.0
36 Om

du bara skriver ifcong kommer alla aktiva anslutningar att listas.

315

Kapitel 9 Internet och andra ntverk din ntmask, samt 192.168.1.1 din standardgateway. (route-kommandot kommer att behandlas snart). Du kan ha era olika IP-nummer kopplade till ett och samma ntverksgrnssnitt. Detta brukar kallas aliasing.37 Om du i exemplet ovan vill koppla grnssnittet eth0 till ytterligare ett nummer kan du skriva:
# ifconfig eth0:1 192.168.1.65 netmask 255.255.255.0 up

nameif kan kras innan ifcong har krts p ett ntverksgrnssnitt med kommandot up. Det anvnds fr att utifrn ntverkskortets MAC-adress ge det ett speciellt namn, t.ex. foo istllet fr det vanliga numrerade namnet (t.ex. eth0, eth1 etc.). Kommandot anvnds fr att du skall kunna vara sker p att ett visst ntverkskort alltid heter foo oavsett om du stter in ytterligare ett kort i datorn. Namngivningen av ethN-enheterna kan komma att ndras av detta. nameif anvnds knappt alls, eftersom f har detta specika behov att kunna byta kort i datorn. Nr det krs lser det in len /etc/mactab som innehller en lista med MAC-adresser och motsvarande grnssnittsnamn p formen:
foo 00:61:57:62:4A:24 bar 00:71:51:11:22:34 ...

Alla efterfljande kommandon mot detta grnssnitt, t.ex. ifcong eller route mste sedan kras mot det nya namnet fr att fungera. route r det viktigaste kommandot efter ifcong. route utan ngra argument ger en tabell ver paketrutter (engelska: routes). Eftersom Internetrutter r den vanligaste typen av rutt, kommer dessa att visas. Nr ett paket skall skickas med IP-protokollet testas mjliga rutter uppifrn och nedt i tabellen: adressen som paketet skall till utstts fr en logisk AND med ntmasken fr den frsta posten i tabellen, jmfrs med destinationsntet, och matchar de s skickas paketet till det ntverksgrnssnitt som anges sist p raden.
37 Frn det engelska alias som betyder ungefr pseudonym. Grnssnittet heter i exemplet 192.168.1.64 men r ven knt som 192.168.1.65. (Litteraturvetarna kanske fredrar att kalla det fr nom de plume.)

316

9.3 Att stlla in ntverket Tv rutter som s gott som alltid r denierade r till klass Antet 127.0.0.1 och sist i listan standardrutten (engelska: default route) som har ntmasken 0.0.0.0 och som tar hand om alla adresser som inte matchat ngon av fregende poster. P det viset kan helt obekanta datorer p Internet alltid kontaktas. Det viktigaste anvndningsomrdet fr route r att lgga till standardrutten, med t.ex.:
route add default gw 192.168.1.1

Vilket anger att gateway-datorn p ditt lokala ntverk med IPnumret 192.168.1.1 skall ta hand om alla paket som inte tas om hand av ngot annat lokalt ntverk. Nr du bygger lokala ntverk kan du anvnda route p allehanda innovativa stt fr att skyfa data mellan olika delar av ditt nt. Du kan t.ex. ltt ha era olika gateway-datorer i ditt nt fr att skicka mellan olika delnt. Det r ocks mjligt att ha era olika gateway-ppningar till Internet. netstat ger information om alla ntverksanslutningar och paketrutter som nns denierade i systemet vid ett givet tillflle. Det kan ven visa status fr anslutningar nr Linuxkrnan anvnds som brandvgg eller ntverksversttare (engelska: network translator). netstat utan parametrar eller netstat --protocol=unix kommer att ge en lista ver ntverksanslutningar med Unixdomnsocklar (engelska: unix domain sockets).38 Dessa gr till den egna datorn och r kanske inte srskilt intressanta annat n fr programmerare. Ett vanligt anvndningsomrde fr dessa socklar r interprocesskommunikation (IPC) och om du kr detta kommando kan du se att din dator pratar ganska mycket med sig sjlv. netstat --protocol=inet r nog det vanligaste sttet att anvnda netstat. Detta ger en lista ver aktiva anslutningar till och frn den egna datorn, som anvnder internetprotokollet. (Ett alternativ som fordrar frre knapptryckningar r netstat Ainet.) Detta ger en lista ver protokoll (oftast TCP), hur mngar paket som ligger i k p frbindelsen (oftast 0, om det r snabba na anslutningar), lokal IP-adress eller datornamn och port, samt mottagande dators IP-adress och port.
38 Det korrekta standardnamnet r dock POSIX Local IPC sockets, se ven avsnitt 2.3.5 p sidan 73.

317

Kapitel 9 Internet och andra ntverk Den mottagande datorns port kan ibland anges direkt med protokollnamnet, t.ex. foo.bar.org:ssh om du har en SSH-session ppen mot den datorn. Drutver anges ven tillstndet fr frbindelsen. Om du misstnker att ngon r inne och rotar i ditt system och har tagit sig in via Internet, avsljar detta kommando ofta allt.39 netstat -r ger samma resultat som kommandot route utan argument: en lista ver paketrutter. plipcong anvnds fr att kongurera en IP-anslutning via datorns parallellport, s att tv datorer kan utbyta data via en printerkabel. Detta kallas PLIP (Parallell Line Internet Protocol) och r vl inte speciellt anvndbart fr en normal anvndare, men den som r innovativ kan ibland vilja ansluta en riktigt gammal dator utan Ethernetkort till Internet genom att utnyttja parallellporten p en annan dator. Ett vanligt anvndningsomrde r att ansluta ntverk till gamla brbara datorer utan inbyggt ntverkskort. rarp anvnds fr att ta reda p en dators IP-nummer om du vet dess MAC-adress. Detta anvnds nstan inte alls, och de esta frkompilerade Linuxkrnor saknar ocks std fr detta. Ibland r sjlva programmet t.o.m. borttaget ur distributionen. slattach anvnds fr att ansluta en annan dator med SLIP, fregngaren till PPP. Eftersom PPP r det dominerande systemet fr seriekabelanslutningar nufrtiden har detta frmodligen spelat ut sin roll. (PPP kommer att behandlas i nsta avsnitt.) Eftersom det r ganska jobbigt att kongurera en dators ntverk med ifcong och route medfljer det ibland ett par bonusskript i vissa distributioner: ifup r det icke-standardiserade program som din distribution i slutnden brukar kra fr att starta varje slag av ntverksfrbindelse. Programmet ligger ofta i /sbin-katalogen i ditt system. I en del system r detta ett kompilerat, binrt program, och i andra ett skript. Det lser in instllningar frn ngon/ngra ler i /etc och startar sedan ntverket med hjlp av ifcong och route. Det krs oftast med ifup eth0. Om du anvnder DHCP kommer oftast dhclient (se lngre fram i detta kapitel) att anropas automatiskt.
39 Om inte inkrktaren har varit listig nog att byta ut sjlva kommandot netstat naturligtvis, vilket r nog s vanligt. Du kan lsa om detta i avsnitt 10.5.1 p sidan 359.

318

9.3 Att stlla in ntverket ifdown deaktiverar ett aktivt ntverksgrnssnitt. Typiskt anvndningsfall: ifdown eth0. Distributionerna brukar kra detta program nr datorn stngs av.

9.3.2

DNS-konguration

Utver kongurationen med ifcong och route mste du ven ha tillgng till en DNS-server fr att kunna anvnda vanliga symboliska datornamn (t.ex. www.foo.org) fr att anropa andra datorer p Internet. Detta kallas med en svengelsk term fr namnupplsning efter engelskans name resolution. Ett separat programbibliotek knutet till Linuxkrnan har hand om denna del av operativsystemet. Namnet p en eller era DNS-servrar skall alltid, om du inte anvnder DHCP eller PPP (som ju automatiskt tillhandahller DNS-servrar), anges i len /etc/resolv.conf. Detta varierar inte mellan distributioner som anvnder GNU C Library40 och len innehller oftast bara tv-tre rader i stil med:
domain bar.org nameserver 192.168.1.2

Den frsta raden anger ett domnnamn, s om din dator heter foo skall dess fullstndiga namn vara foo.bar.org, och namnet foo skall nnas i /etc/hostname eller motsvarande l. Detta innebr dock inte att din dator har registreras i DNS-servern s att andra kan hitta din dator med hjlp av detta namn; en sdan registrering kan bara en DNS-serveradministratr gra, och registrering av hela domner skts av ett ftal landsomfattande organisationer. Det huvudsakliga anvndningsomrdet fr domain-parametern r om du t.ex. anger ett visst datornamn utan nrmare specikation, t.ex. ping fnord. D kommer krnan att anta att det r datorn fnord.bar.org som avses. Den andra raden anger en DNS-server, som inte behver vara placerad p det lokala ntverket. /etc/resolv.conf kommer att laddas av krnan nr det frsta programmet som behver DNS-uppslagning krs. Om du har tillgng till era olika DNS-servrar kan era IP-nummer anges hr. I len /etc/hosts.conf anges vilka metoder namnupplsarbiblioteket skall anvnda fr att verstta ett givet datornamn till ett IP-nummer. Det normala r att len bara innehller raden:
order hosts,bind
40 I princip alla program fr GNU/Linux anvnder GNU C Library fr att gra namnupplsning.

319

Kapitel 9 Internet och andra ntverk Detta talar om fr namnupplsaren att den frst skall frska sl upp datornamnet i len /etc/hosts och drefter, om detta misslyckas, frska med den DNS-server som angivits i /etc/resolv.conf. Om du har en instabil DNS eller manuellt vill ndra namnuppslagningen kan du modiera len /etc/hosts. Denna l innehller normalt bara en rad som kopplar datornamnet localhost (i olika varianter) till den egna datorns IP-nummer 127.0.0.1. Vill du blockera tillgngen till en viss dator kan du t.ex. skriva in 127.0.0.1 www.fnord.com i /etc/hosts fr att skicka alla frsk att ansluta till www.fnord.com till den egna datorn. Detta blockerar dock ingen anvndare som r listig nog att anvnda IP-adressen direkt. Kommandot host kan anvndas fr att manuellt sl upp IP-numret fr en viss dator, s om ngon systemadminstratr blockerat tillgngen till datorn www.fnord.com fr dig kan du ta reda p den datorns IPadress med host www.fnord.com och sedan surfa till IP-numret som anges. Kommandot kan ocks anvndas p omvnt vis i de fall du bara vet ett IP-nummer och vill veta vilket datornamn det IP-numret svarar mot. (Kommandot host hette tidigare nslookup.) Tycker du att host inte ger tillrckligt mycket information nns ven kommandot dig att tillg. Detta fungerar p samma vis, men ger ven mngder med DNS-protokollrelaterad information till den intresserade. Kommandot whois r tnkt att anvndas fr att ta reda p vem som ligger bakom en viss domn. whois foo.org skall till exempel ge namn, adress och telefonnummer till innehavaren av domnen foo.org. De svenska domnerna anses dock inte kunnas lmnas ut p detta vis p.g.a. viss lagstiftning, och dessa mste drfr istllet underskas via ett webbgrnssnitt.41 Det nns ytterligare en form av namnupplsning, som innebr att du anvnder katalogtjnster (engelska: name service) som t.ex. NIS. Detta kommer inte nrmare att behandlas hr, men kan kongureras i len /etc/nsswitch.conf. Ls mera om detta i avsnitt B.1 p sidan 418.

9.3.3

DHCP med dhclient

Om du nu har tillgng till en DHCP-server att hmta instllningar till ditt ntverkskort ifrn blir det hela mycket enklare. I princip alla instllningar vi gtt igenom ovan kan sktas med hjlp av DHCP, s som tidigare nmnts. Till detta anvnds uteslutande programmet dhclient som distribueras separat frn Net-tools.
41 Se:

http://www.nic.se/domaner/domansok.shtml

320

9.3 Att stlla in ntverket I de esta fall anvnds dhclient av skriptet ifup eller ngon liknande komponent i en distribution. Det gr dock utmrkt att kra fr hand ocks, t.ex.:
# dhclient eth0

Kommandot mste utfras av root, och fr bland annat till fljd att innehllet i len /etc/resolv.conf automatiskt ndras, ditt ntverksgrnssnitt skall ocks ha ftt ett IP-nummer och en ntmask som du kan se med ifcong och en standardrutt som du kan se genom att skriva route. Om du r nyken p alla instllningar som dhclient har ftt frn DHCP-servern kan du underska lerna i /var/lib/dhcp. Dr lagras DHCPinformationen mellan anropen till servern. Vissa DHCP-servrar skickar ut mer information n andra.

9.3.4

PPP-anslutning

Modemanslutningar med PPP kongureras genom att ett separat program eller s.k. chat-skript, i praktiken oftast ett program med namnet wvdial (namngett efter fretaget Worldvisions som skapade programmet), ringer upp en modempool via ett modem anslutet till en av serieportarna (ttyS0, ttyS1 etc.). Sjlva uppringningen sker med modemkommandon, vilket vanligen r s.k. Hayes-kommandon.42 Ett Hayeskommando kan du sjlv skicka till ditt modem med t.ex. echo atz > /dev/ttyS0 (om ditt modem rkar sitta p den porten). Vanligtvis behver du inte befatta dig med dessa kommandon, eftersom uppringningsprogrammet skter det t dig. Efter uppringningen kan skriptet ibland behva skicka kommandon till servern p andra sidan, men oftast inte. Nr sjlva uppringningen r klar och modemet anslutet till PPP-servern lmnar chat-skriptet eller wvdial ver kontrollen till en demon med namnet pppd. Denna demon som har skrivits av Paul Mackerras kan ven anvndas med bl.a. Solaris. pppd-demonen tar ver den serieport som det fregende programmet anslutit sig till servern p, och brjar d anvnda sjlva PPP-protokollet: den frhandlar med servern om anvndarnamn och lsenord (via LCP), IP-adress, ntmask och DNS-server (via IPCP) och stter till sist upp frbindelsen fr ntverksgrnssnittet ppp0 (eller hgre grnssnittsnummer, eller ippp0 fr ISDN, o.s.v.). Att avsluta frbindelsen r ven det distributionsberoende, men wvdial kan startas i ett eget terminalfnster, och vntar d p att du skall
42 Dessa kommandon har ftt sitt namn efter modemtillverkaren Hayes Communications, som i sin tur ftt namnet efter grundaren Dennis Hayes.

321

Kapitel 9 Internet och andra ntverk avsluta processen genom att trycka Ctrl+c i detta fnster. Frbindelsen kommer d att kopplas ned. Fr att kongurera datorn att anvnda PPP ver modem beror tillvgagngssttet helt p din distribution, och ofta nns det helt graska hjlpverktyg som skter detta. Fr en ren dator utan grask anvndarmilj o.dyl. kan du installera wvdial och pppd, och som root kra wvdialconf /etc/wvdial.conf. Se till att ha modemet anslutet och pslaget, s kommer kongureringsprogrammet automatiskt att upptcka modemet och kongurera det. Du mste sedan ange telefonnummer, anvndarnamn och lsenord till modempoolen i den skapade len /etc/wvdial.conf. Drefter kan PPP kongureras ytterligare i ett antal ler i katalogen /etc/ppp. Det behvs normalt inte. Som tidigare sades kan du sedan starta din kongurerade frbindelse med kommandot wvdial i ett terminalfnster, och avsluta med Ctrl+c nr du inte vill vara ansluten lngre.

9.3.5

ADSL-anslutning

ADSL (Asymmetric Digital Subscriber Line) r en standard fr att stadkomma hghastighets dataverfring p en vanlig telefontrd av koppar. P telentet anvnds vanligen modem till detta, men om teletraken kopplas frn helt och utrustningen i bda ndar dynamiskt kan anpassas till trdens signalverfringskarakteristika, kan linjen utnyttjas mer effektivt fr dataverfring. Den lda som utgr abonnentdelen ansluts i abonnentens bostad och kallas ibland lite slarvigt fr kabelmodem. Den andra delen av utrustningen ansluts p telestationen. I vrigt r ADSL-anslutningen ett helt vanligt Ethernetuttag och krver ett ntverkskort av Ethernet-typ fr att anslutas till datorn. De esta svenska internetoperatrer som levererar ADSL-anslutningar till Internet anvnder ett DHCP-baserat system med tillgget att inloggning mste gras via en webbsida. System av detta slag r vanligt i trdlsa ntverk, eftersom vem som helst ltt kan ansluta sin utrustning till ntet, och separat inloggning krvs d fr att avgra om den som anslutit sig verkligen har rtt att anvnda ntet. Detta r ingen som helst Internetstandard utan baseras p Orbyte Wireless System frn fretaget kerstrms Nowire AB. Syftet med den extra inloggningen r sannolikt att frenkla rutiner och bokfring: den centrala servern hller reda p vilka abonnemang som r aktiverade. Till de operatrer som anvnder eller har anvnt detta system hr Telia, COMHEM och Tiscali. 322

9.3 Att stlla in ntverket Andra internetleverantrer njer sig med att t.ex. mekaniskt ansluta och koppla frn kabeluttaget i en viss lgenhet, eller registrerar ntverkskortens MAC-adresser i en DHCP-server fr att avgra om en viss dator skall slppas in i ntet eller ej. Denna typ av administration blir allt vanligare och kommer p sikt skert att erstta lsningar med inloggning. Att fylla i anvndarnamn och lsenord varje gng en uppkoppling skall gras r inte speciellt kul i lngden, s fr att underltta anvndandet av detta system under Linux skapade Jakob Stasilowicz det fria programmet GNU Alive (tidigare qADSL).43 Eftersom detta system r vldigt specikt fr Sverige ingr det i f distributioner, och du mste drfr installera det sjlv. Det nns dock med i Debian GNU/Linux. GNU Alive r en demon som automatiskt loggar in dig hos en Internetleverantr som anvnder Orbyte Wireless System, och drefter hller frbindelsen levande. Manualsidorna fr GNU Alive innehller ytterligare information om hur frbindelsen kongureras och stts upp.

9.3.6

Trdlsa nt

Ett Linuxsystem kan naturligtvis ven anvnda trdlsa ntverk, p engelska kallade Wireless LAN eller kort och gott bara WLAN. Standarden dessa kort grundar sig p kallas Wi-Fi och i denna ingr standarderna i 802.11-gruppen. Trdlsa ntverk identierar sig med ett ESSID, Extended Service Set Identier, vilket i praktiken bara r ett enkelt kortnamn, en strng. Eftersom ett och samma ntverk kan ha era sndare som r tillgngliga inom samma omrde och eftersom det ocks kan nnas era ntverk p samma plats, mste ntverkskortet veta vilka sndare som hr till vilket ntverk genom att underska deras ESSID. Om t.ex. bolaget Foo har fyra sndare p en viss plats och bolaget Bar har fem, kommer du att kunna veta vilka som hr till just din operatr genom att operatr Foo:s fyra sndare har ESSID foo medan operatr Bar:s sndare anvnder ESSIS bar. Om du anger att du vill anvnda ESSID foo kommer ntverkskortet vid behov att kunna vxla mellan Foo:s fyra olika sndare utan problem. Ett trdlst grnssnitt i Linux fungerar precis som ett vanligt ntverksgrnssnitt med den enda skillnaden att det eventuellt har ett fantasifullt namn, vanligtvis wlan0. Fr att f igng och anvnda detta grnssnitt behver du dock tv saker: En drivrutin till Linuxkrnan som stdjer det trdlsa ntverkskort du har tnkt anvnda.
43 Se:

http://www.gnu.org/software/alive/

323

Kapitel 9 Internet och andra ntverk Programpaketet Wireless-tools. Det frsta r oftast det mest problematiska. Trdlsa ntverkskort lgger stora delar av ansvaret p operativsystemet, och det r inte vanligt att drivrutiner fr Linux har utvecklats vare sig som del av krnan eller separat. Det r drfr ofta en god id att underska i frvg om ett visst kort stds av Linux eller inte. Var mycket noga med produktnamnet: det r inte ovanligt att en tillverkare byter chipset (de kretsar som sitter i sjlva kortet) mellan tv minimala uppdateringar av sjlva produkten. Detta innebr att produkten ser helt annorlunda ut fr operativsystemet och ofta krver en helt annan drivrutin. De esta WLAN-kort brukar vara av PCMCIA-typ (senare kallat PC Card eller CardBus. Fr Linuxkrnans del r detta oviktigt; de modernare korten kommer att behandlas som vilket PCI-kort som helst, och du kan se information om dina PCMCIA-kort med kommandot lspci precis som fr den mesta annan hrdvara som sitter i din dator. Med lspci -v kan du ofta ocks se vilket chipset som anvnds av det trdlsa ntverkskort som sitter i din dator. Nr du vl lokaliserat det chipset och den drivrutin som fordras fr ett visst trdlst ntverkskort fr du ofta kompilera om Linuxkrnan eller i bsta fall en enskild modul fr att kunna f kortet att fungera. Det behvs ofta dessutom en s.k. rmware, vilket kort uttryckt r ett datorprogram som skall kras i ntverkskortets processor. Vissa kort har till och med era processorer, och behver drfr era olika rmwareler. Att f tag p dessa drivrutiner och ler r inte alltid enkelt, och det enklaste r oftast att flja instruktionerna som nns p webbsidorna fr de olika drivrutinsprojekten. Dessa projekt frutstter ofta att du har installerat Wireless-tools och r frtrogen med detta. Wireless-tools innehller bland annat fljande viktiga verktyg: iwcong r Wireless-tools motsvarighet till Network-tools ifcong och r en universella Schweiziska armkniven fr att kongurera ett trdlst ntverkskort. De vanligaste kommandona r dessa: iwcong utan parametrar ger en lista ver alla ntverksgrnssnitt. Fr de som r trdlsa kommer ytterligare information att visas, bland annat vilken Wi-Fi typ kortet stdjer, vilket ESSID kortet frsker ansluta sig till, och vilken radiokanal det anvnder. Dr nns ven mer detaljerad information om kryptering och radiosndarens kapacitet med mera. iwcong wlan0 essid foo kommer att ange att detta ntverksgrnssnitt skall anvnda ESSID:t foo. Detta mste nstan alltid anges. Om du stter upp ett eget trdlst ntverk hemma r det mjligt att du anger ESSID:t (tom strng) men 324

9.3 Att stlla in ntverket om dina grannar brjar gra samma sak r det inte srskilt lyckat. Om du kr detta kommando fr det till fljd att kortet frsker ansluta sig till det angivna ntet. iwcong wlan0 channel 11 talar om att ntverkskortet alltid skall anvnda kanal 11. Eftersom kanal 1, 6 och 11 alltid brukar nnas tillgngliga och inte verlappar andra kanaler kan stabiliteten i ett ntverk ka om du gr denna instllning, men normalt skall det inte behvas. iwcong wlan0 mode Managed anger att drivrutinen sjlv skall byta mellan sndare och kanaler vid behov. Det nns tillfllen, om du t.ex. vill koppla samman tv datorer, d lget Adhoc anvnds istllet. Att bara kra dessa iwcong-kommandon (oftast behvs era av dem) tar dig s lngt att du anslutit kortet till en viss sndare fr ett visst nt, och en viss kanal. Drefter fordras den vanliga ntverkskongurationen med ifcong, men eftersom nstan alla trdlsa nt anvnder DHCP rcker det oftast att skriva dhclient wlan0 efter att radioinstllningarna r klara. De distributioner som stdjer trdlsa ntverkskort har naturligtvis automatiska kongureringsprogram fr alla dessa uppgifter. Andra anvndningsomrden fr iwcong r att stlla in krypteringsnycklar fr att kryptera traken mellan ntverkskortet och radiobasstationen och diverse andra komplicerade saker. Dessa kan med frdel lsas p manualsidan fr verktyget. iwlist r ett verktyg som tar hand om det mesta som iwcong inte klarar av. Det allra vanligaste r att lista alla tillgngliga ntverk med t.ex. iwlist wlan0 scan. Om du inte anger ett ntverksgrnssnitt kommer iwlist att frska anvnda alla ntverksgrnssnitt som stdjer trdlsa nt fr att lista tillgngliga ntverk. Det kan ofta bli en ganska lng lista. I princip alla ntverk du hittar vid en sdan listning brukar det vara mjligt att ansluta sig till, men det innebr inte att du med automatik kan anvnda dem (se nedan). ven om du ofta lyckas med att ansluta till ett trdlst ntverk med hjlp av dessa verktyg och DHCP, s att din dator har alla ndvndiga ntverksinstllningar, betyder inte detta automatiskt att du har tillgng till Internet. Ofta behvs en inloggning via en webbsida som ppnar upp din gateway och slpper fram traken till Internet. Detta krvs av naturliga skl: de esta trdlsa nt r kommersiella (t.ex. Telia HomeRun) och krver att du betalar fr att f tillgng till uppkoppling325

Kapitel 9 Internet och andra ntverk en. Mnga hotell och liknande krver ocks inloggning eftersom de vill hindra personer i angrnsande lokaler frn att anvnda ntverket.

9.3.7

Inetutils

Inetutils r en uppsttning standardprogram som skapats fr internetprotokollen av GNU-projektet. Flera av dem r enkla kommandoradsverktyg, medan vissa r demonprogram som skall kras i bakgrunden fr att en dator skall kunna agera server fr en viss tjnst. En delmngd av Inetutils fljer s gott som alltid med varje GNU/Linux-distribution, men vissa delar kan vara utelmnade eftersom de anses oskra eller urmodiga. ftp implementerar klientdelen av FTP-protokollet och gr det mjligt att hmta ler med TCP som underliggande transportprotokoll. Det gr bra att ansluta till en FTP-server p Internet med kommandoradsverktyget bara genom att skriva ftp foo.bar.org och klienten kommer d att ansluta till denna dator som i sin tur begr lsenord. Programmet anvnds i princip bara av gamla stoler som jag sjlv, eller av skript. Anledningarna r tv: Fr det frsta r FTP s oskert att det inte gr att anvnda fr att verfra ler mellan tv datorer dr du har konto. Lsenordet skickas i klartext ver Internet och kan ltt avlyssnas av vem som helst som har tillgng till den fysiska kabeln. Drfr anvnds nstan uteslutande scp eller sftp (se avsnitt 9.5) till lverfring mellan konton numera. Det enda undantaget r d ler hmtas anonymt, men ven i detta fall erstts FTP numera ofta med protokollet HTTP. Fr det andra r det f som anvnder FTP frn kommandolinjen, de esta anvnder ngot graskt FTP-program, t.ex. gftp, eller skriver en FTP-URL i sin webblsare, i stil med ftp://foo.bar.org/. En sdan URL kommer automatiskt att logga in p FTP-servern som anvndaren anonymous, men ett konto kan ocks anges med ftp://user:pass@foo.bar.org/. Fr att anvnda FTP fr att logga in anonymt p en FTP-server anger du anvndarnamnet anonymous fljt av en epostadress istllet fr lsenord. Nr du vl r ansluten till en FTP-server kan du anvnda olika kommandon frn FTP-standarden fr att lista ler p servern och eventuellt ladda ner ngra av dem, eller ladda upp ngon l. Observera att dessa kommandon inte r POSIX-kommandon eller 326

9.3 Att stlla in ntverket ngot annat utan enbart FTP-kommandon som skickas till FTPservern: den frvillande likheten med existerande kommandon i POSIX r bara avsedd att frenkla anvndandet. ls listar lerna som nns lagrade i den aktuella katalogen p FTPservern. ven kommandot dir nns att tillg. cd foo gr ned i katalogen foo p FTP-servern. ven andra intuitiva katalognavigeringsmjligheter som t.ex. cd .. fungerar bra. lcd foo gr ned i katalogen foo p den egna datorn istllet fr p FTP-servern. get foo.txt hmtar (laddar ner) len foo.txt till aktuell katalog p den egna datorn frn FTP-servern. put foo.txt snder (laddar upp) len foo.txt till FTP-servern. Ofta kan du i fallet med anonym FTP bara gra detta till vissa kataloger med ledande namn som t.ex. upload. mget foo* hmtar era ler med ett vanligt globbningsuttryck44 och frgar vid propmpten fr varje l om du verkligen vill ladda ned den. mput foo* ger samma funktion vid uppladdning. Med i Inetutils fljer ocks ftpd som gr det mjligt att kra en egen FTP-server i form av ett demonprogram. ping r ett av ntverksadministratrens favoritprogram. Det anvnds fr att testa om en annan dator p ntverket r tillgnglig via internetprotokollet. ping skrevs urspungligen av Michael Muuss och namnet kommer frn ubtssonartekniken, dr ett ping skickas med hjlp av en sonar45 fr att mta avstndet till freml i nrheten genom att se hur lng tid det tar fr ekot att komma tillbaka. P samma vis ger ping en bedmning av nrvaron och svarstiden fr en viss dator genom att skicka ICMP-paket till den och invnta svar. Genom att skriva ping foo.bar.org kommer du att skicka ett antal ICMPpaket till den avsedda datorn, och du fr sedan uppgift om hur lng tid det tar fr varje ICMP-paket att frdas fram och tillbaka till datorn.
avsnitt 2.3.6 p sidan 75. r en akronym fr sound navigation and ranging. Nr det trffar ett fartygsskrov ger det upphov till det dova, obehagliga ljud som ofta frekommer i ubtslmer som Das Boot (eller fr den delen samplat i Antiloop-lten Nowhere to Hide).
45 Sonar 44 Se

327

Kapitel 9 Internet och andra ntverk Vad som r bra svarstider r en erfarenhetssak: avstnd p Internet mts just i svarstid p ICMP-paket (d.v.s. ping) och har inget att gra med geograskt avstnd, vilket kan vara relaterat, men inte behver vara det. Avstndet mellan tv punkter kan ocks variera ngot beroende p ntverkets belastning. Genom att skriva t.ex. ping -b 192.168.1.255 kan du skicka ett ping till alla datorer i det lokala ntverket, och du skall d f svar frn samtliga startade datorer. rsh (remote shell) liksom rcp (remote copy) och rlogin (remote login) r p samma vis som ftp gamla, oskra protokoll fr anslutning till en annan dator. Inget av dem skall anvndas! Anvnd istllet SSH-svitens ssh (svarar mot rsh och rlogin) fr att ansluta till en annan dator och utfra kommandon, samt scp (secure copy) fr att kopiera ler mellan olika datorer och konton. talk r ett system fr att prata interaktivt med andra anvndare p datorer p Internet. Pminner till viss del om IRC (Internet Relay Chat) men r inte lika frgrenat. talk anvnds mest fr att tala med andra anvndare p en och samma dator, som r anslutna via andra terminaler. telnet r en implementation av Telnet-protokollet som gr det mjligt att logga in p andra datorer p Internet. Det som gller fr rlogin och rsh gller ven telnet: anvnd det inte fr fjrrinloggningar! Telnet r totalt oskert eftersom lsenord och allt du skriver mycket ltt kan avlyssnas direkt p ntverkskabeln. Fr fjrrinloggning skall du anvnda ssh istllet (se sidan 331). Telnet-demonen telnetd som ocks medfljer Inetutils och som mjliggr fjrrinloggningar med Telnet skall under inga omstndigheter startas p ditt system! Telnet r dock ett s simpelt protokoll att det kan anvndas till att ansluta till alla mjliga andra tjnster fr att testa att de fungerar: det allra vanligaste tricket r att anvnda telnet fr att testa att en webbserver svarar som den skall: skriv t.ex. telnet www.dn.se 80 fr att ansluta till port 80 p Dagens Nyheters webbserver, och skriv sedan GET / fljt av ENTER. Du fr d frst en avdelning med HTTP-meddelanden, och drefter HTML-koden fr Dagens Nyheters frstasida. Liknande trick kan anvndas fr att testa era av de protokoll som ternns i gur 9.2 och avsljar lite om hur enkelt uppbyggda internetprotokollen p hgre niv faktiskt r: i grunden r de alla rena, enkla textmassor som ges som svar p kommandon skickade i 328

9.4 Xinetd och TCPd klartext, som om de skrivits av en mnniska i ett terminalfnster. Populrt numera r t.ex. webbtjnster vilket egentligen inte r ngot annat n textmassor formaterade enligt XML-standarden, och transporterade ver HTTP via port 80 p exakt det vis som illustrerades ovan med Dagens Nyheters webbserver. tftp r en enkelt lverfringsverktyg baserat p TFTP-protokollet (RFC 1350), som anvnder UDP som transportprotokoll. Det r betydligt mindre begvat n FTP, men anvnds en del fr att t.ex. verfra uppstartler till X-terminaler i en del ntverk. Det r naturligtvis ocks lika oskert som FTP och skall inte anvndas fr ngon form av dagligt arbete. Inetutils innehller ven en server fr TFTP med namnet tftpd.

9.4

Xinetd och TCPd


Ofciell hemsida: http://www.xinetd.org/

En mngd mjliga demoner kan kras fr att tillhandahlla tjnster p din dator. T.ex. krs ftpd fr att erbjuda FTP och tftpd fr att tillhandahlla TFTP, o.s.v. Men det r inte alltid s att dessa demoner jmt och stndigt krs p din dator. ftpd nns t.ex. nstan aldrig med i processlistan om du skriver ps -A. Vissa demoner startas nmligen indirekt frn en annan demon: inetd eller xinetd, vilket str fr Internet Services Daemon respektive Extended Internet Services Daemon. Det r den senare som r i mer allmn anvndning numera, men det som str i detta avsnitt gller ven det ldre programmet, med vederbrliga modikationer. Vi vet att en demon kan ha som uppgift att svara p ett anrop till en viss TCP- eller UDP-port p datorn. Det betyder, att nr ingen anropar datorn fr att f tillgng till en viss tjnst, ligger demonen bara och sover och tar upp minne. Fr att du skall slippa ha ondigt mnga demoner startade, som bara har till uppgift att svara p enstaka anrop d och d, vljer mnga att lta demonen xinetd lyssna p ett antal portar och starta demoner d ett anrop kommer in, istllet fr att stndigt ha demonerna krande. Om xinetd r installerat i ditt system anvnder den i sin tur en annan demon, tcpd fr att avgra om ett anslutningsfrsk utifrn skall slppas in eller ej. Demonen tcpd kommer d i sin tur att anvnda lerna /etc/hosts.allow och /etc/hosts.deny fr att avgra om anslutningen 329

Kapitel 9 Internet och andra ntverk r tillten. Dessa ler kan styra tillgngen genom att ange ett eller era domnnamn eller IP-nummer.46 I len /etc/xinetd.conf kan du kongurera vilka demoner xinetd skall starta vid ett anrop till datorn, och drmed ocks vilka portar den skall lyssna p. Ibland anvnder distributionerna en hel katalog, /etc/xinetd.d fr kongurationen, dr varje l representerar ett program som skall kunna startas. Anledningen till att inte alla instllningar kan gras i /etc/xinetd.conf r att program som installeras efter hand mste kunna anmla sitt intresse av att f bli startade av xinetd. Installationsprogram fr programpaket r dliga p att editera kongurationsler, men bra p att bara installera en ny l p en viss plats, och drfr kan de ltt bertta fr ditt system att de vill bli startade genom att placera en kongurationsl i /etc/xinetd.d. Du br alltid titta ver len /etc/xinetd.conf och katalogen /etc/xinetd.d i ditt system fr att kontrollera att du inte har en massa ondiga tjnster startade. Om du upptcker att du inte har nytta av ngon enda av de saker som xinetd startar, s kan du naturligtvis stnga av den helt genom att modiera dina uppstartskript. Att ha ondiga tjnster startade r en skerhetsrisk. Det r ocks mjligt att i den/dessa ler kongurera tillgng per tjnst, d.v.s. lerna /etc/hosts.allow och /etc/hosts.deny avgr vilka tjnster som skall f komma in ver huvud taget, medan xinetd i sin tur kan bestmma att bara en specik dator fr tillgng till en specik tjnst. Fr ett hemmasystem r kanske den huvudsakliga uppgiften fr xinetd att hlla igng skrivarsystemet CUPS (se sidan 267), och det anvnds ocks fr att starta t.ex. Samba (se sidan 413). Frdelen med att anvnda xinetd fr att starta olika demoner r att xinetd kan stta begrnsningar p hur mnga demoner som fr startas av olika slag, s att systemet inte blir verbelastat, samt att tkomstkontroll till olika tjnster kommer gratis. Trots detta anvnder mnga serverdemoner inte xinetd: webbservern Apache och SSH-servern sshd r exempel p sdana demoner. Anledningarna till detta varierar: vissa anser att xinetd r vrdelst och anvnder det inte alls, andra anvnder det till allt.

46 De esta vljer dock att gra sdana begrnsningar med hjlp av Netlter, se avsnitt 10.6 p sidan 360.

330

9.5 SSH

9.5

SSH

SSH, som utlses secure shell r dels ett mer eller mindre standardiserat internetprotokoll, dels namnet p ett program som anvnds fr att utnyttja detta protokoll. Protokollet SSH anvnds fr att gra en krypterad47 fjrranslutning frn en dator till en annan via ett IP-ntverk, t.ex. Internet, och ppna ett skal p den mottagande datorn. SSH kan ocks veriera att datorn som anropas verkligen r den dator den utger sig fr att vara. SSH var ursprungligen ett program som skrevs av Tatu Ylnen i Finland r 1995 och som distribuerades som fri mjukvara. Eftersom intresset fr SSH var stort valde Ylnen att exploatera uppnningen genom att starta ett fretag med namnet SSH Communications Security Oy, som sedan dess slt nyare versioner av programmet via fretaget F-Secure. Problemet med att ingen modern, fri version av SSH fanns allmnt tillgnglig tgrdades r 1999 d svensken Bjrn Grnvall tog den ursprungliga fria versionen av SSH och rttade en del fel, varefter han kallade resultatet OSSH. I detta lge uppmrksammades OSSH av OpenBSD-projektet, som med sitt hga fokus p skerhet ville ha ett skert och fritt fjrrinloggningsprogram. P kort tid vidareutvecklade och sjsatte en grupp medlemmar frn OpenBSD-projektet en fullstndig version av SSH under namnet OpenSSH, med std fr bde version 1 och version 2 av SSH-protokollet. Snart drefter anpassades OpenSSH s att det ven gick att kra under GNU/Linux. GNU-projektet har en egen implementation av SSH-protokollet som utvecklas av svensken Niels Mller under namnet lsh. Denna version stdjer bara version 2 av SSH-protokollet. IETF arbetar med att gra SSH-protokollet till en internetstandard, och har en arbetsgrupp som jobbar med standarddokumenten, men har nnu inte publicerat ngon specikation. 70% av de SSH-demoner som hittas p Internet anvnder i dagslget OpenSSH. P grund av problem med exportrestriktioner rrande kryptoprodukter har alla kryptograska delar av SSH utvecklats utanfr USA. Den syntax som anges i fljande stycken har testats fr att fungera med OpenSSH. Fyra huvudsakliga program ingr i de esta SSH-varianter: ssh r den mest grundlggande komponenten och handhar fjrrinloggningar. Du loggar in p en annan dator med:
47 Har

du ingen aning om vad kryptering r, s smygls avsnitt 10.4 p sidan 352.

331

Kapitel 9 Internet och andra ntverk

# ssh fnord@foo.bar.org

Detta betyder att du vill logga in p datorn med namnet foo.bar.org med anvndarnamnet fnord. Om du inte anger ngot anvndarnamn kommer OpenSSH att anta att du heter samma sak p det andra systemet som du heter p den dator dr du redan benner dig, och kommer d att anvnda det det aktuella inloggningsnamnet. Den mottagande datorn kommer att frga dig efter ett lsenord, och kommer drefter att ppna ett skal dr du kan anvnda alla kommandon och starta program precis som vanligt. Det gr naturligtvis bra att ansluta frn/till helt andra operativsystem n det du sjlv anvnder.48 scp utlses secure copy och r ett program fr att kopiera enstaka ler. Det anvnds p liknande vis som ssh, men som hos de esta POSIX-kommandon mste bde klla och destination anges. Om jag t.ex. r inloggad p en viss dator, och har en l med namnet foo.txt som jag vill kopiera till datorn foo.bar.org, dr jag har ett anvndarkonto med namnet fnord, skriver jag:
# scp foo.txt fnord@foo.bar.org:

Lgg mrke till det avslutande kolonet: efter detta fljer nmligen det lnamn som du vill att len skall ha p den mottagande datorn. Eftersom jag vill ha samma lnamn p den andra datorn som p datorn jag redan benner mig p, skriver jag inget efter kolonet. Filken kommer d att lagras i min hemkatalog p den mottagande datorn, under namnet foo.txt. Om jag dremot vill att len skall lagras under namnet /tmp/bar.txt p den mottagande datorn skriver jag istllet:
# scp foo.txt fnord@foo.bar.org:/tmp/bar.txt

Om jag instllet vill hmta len foo.txt frn min hemkatalog p den andra datorn, skriver jag:
# scp fnord@foo.bar.org:foo.txt .
48 SSH-klienten PuTTY som nns till alla versioner av Microsoft Windows r t.ex. mycket populr bland anvndare av olika POSIX-system som behver komma t sina datorer frn Windows-maskiner.

332

9.5 SSH Detta kommer att kopiera len till den katalog dr jag benner mig d jag skriver kommandot, d.v.s. .. Vill jag istllet lgga len jag hmtar i /tmp skriver jag:
# scp fnord@foo.bar.org:foo.txt /tmp

scp anvnder sig i sin tur av ssh fr att ansluta till den andra datorn, och r allts inte i sig ngot sjlvstndigt program. Det behvs ingen speciell service p andra sidan anslutningen utver den mottagande datorns sshd-demon (se nedan). sftp r ett kommando som anvnds fr att skicka er ler ver en SSHfrbindelse. Det har en kommandosyntax som r densamma som fr ftp och r enklare att anvnda fr mer komplicerade loperationer. Det nns ocks ett antal graska verktyg, t.ex. gftp som kan anvnda sig av sftp fr att verfra ler.49 I likhet med scp r sftp ingen sjlvstndig tjnst: nr du ansluter med programmet kommer ssh att anvndas fr att ansluta till den andra datorn, men den mottagande datorns sshd-demon kommer att starta ett separat program med namnet sftp-server fr att hantera kommandon som skickas av sftp. Ibland nns inte denna serverdel installerad, och d fungerar inte sftp. sshd r den demon som krs p den mottagande datorn fr att mjliggra fjrrinloggning. Utan denna demon r det inte mjligt att anvnda SSH fr att logga in p datorn, och eftersom de esta vill kunna logga in p sina datorer utifrn brukar den vara installerad och startad. Vissa distributioner frgar om detta under installationen. sshd kan kongureras i len /etc/sshd_cong, och det r i princip bara en viktig sak som ibland behver ndras: raden X11Forwarding behver ibland manuellt sttas till yes, vilket r ndvndigt fr att kunna kra X-program ver SSH och drmed via en krypterad frbindelse. Du kan ocks lgga mrke till att sshd vid installation genererar ett antal nycklar fr datorn, som ocks lagras i /etc/ssh och som refereras frn denna l. SSH bygger i grunden p den teori om digitala nycklar, signaturer och certikat som r centrala inom datorskerheten och som inte kan avhandlas utfrligt hr. Vi skall dock lra oss lite om det praktiska handhavandet betrffande nycklar.
49 Fr Microsoft Windows nns en populr SCP/SFTP-klient med namnet WinSCP, se http://winscp.sourceforge.net/.

333

Kapitel 9 Internet och andra ntverk Som tidigare sades kommer sshd under installationen att generera ett antal nycklar fr att identiera sig mot andra datorer. Nycklarna skickas ver till de datorer som ansluter sig via ntverket, och frsta gngen en anslutning sker kommer den ocks att sparas p den dator som ansluter sig, efter en frga om huruvida nyckeln godknns. Pongen med detta r att nyckeln sedan automatiskt kommer att jmfras vid senare anslutningar till samma dator, och skulle nyckeln skilja sig frn den som tidigare erhllits kommer SSH att varna. Det r dessvrre inte ovanligt att nycklar ndras av helt legala orsaker: den vanligaste r att datorn i andra nden har installerats om, och d har nya nycklar genererats, efterom systemadministratren p det systemet inte tnkte p att spara undan de gamla nycklarna i /etc/ssh innan hon eller han installerade om systemet. S gott som alla administratrer gr sig skyldiga till detta misstag. Nr du som anvndare ansluter dig till en sdan ominstallerad dator kommer ssh att basunera ut varningar i stil med it is possible that someone is doing something nasty (vilket i och fr sig r mjligt) och vgrar sedan att ansluta sig. Du fr d ibland manuellt ta bort den gamla nyckeln, som lagras i len known_hosts i den dolda katalogen .ssh i din hemkatalog. Gr detta genom att redigera known_hosts med en texteditor och ta bort raden fr den aktuella datorn. I den dolda .ssh-katalogen kan du ocks skapa en l som heter authorized_keys. Denna anvnds nr du vill kunna logga in p en annan dator utan att behva ange lsenord. Om du vill logga in frn dator A till dator B skall du frst kra programmet ssh-keygen p dator A:
# ssh-keygen -b 1024 -t rsa

Detta kommer att generera en RSA-nyckel50 p 1024 bitar. Nr programmet ber om ett lsenord brukar de esta bara sl ENTERfr att undvika att ange ngot lsenord pongen med att anvnda nycklar fr att identiera sig r ju att slippa ange lsenord. Den genererade nyckeln med ett namnet id_rsa.pub skall sedan kopieras till dator B, dr du skarvar till den i len /.ssh/authorized_keys med:
# cat rsa_id.pub >> ~/.ssh/authorized_keys

Du kan drefter ta bort den verfrda len, och logga ut. Vid nsta
50 RSA r initialerna i efternamnen p uppnnarna bakom algoritmen: Ron Rivest, Adi Shamir och Len Adleman och bygger p svrigheten med att faktorisera stora primtal. En normal rekommendation fr att upprtthlla skerheten i en RSA-nyckel r att den skall vara minst 1024 bitar lng.

334

9.6 NTP inloggning frn dator A kommer sshd p dator B att upptcka att den datorn r godknd, och slpper in dig utan lsenord.51 Men. Detta ppnar ett stort, otckt skerhetshl i systemet och medfr att den som obehrigen tar sig in i dator A genast kan ansluta sig till dator B precis som du sjlv kan gra detta utan att ange lsenord. Administratren av dator B kanske inte uppskattar detta och kan d helt stnga av funktionen att anvnda godknda nycklar i /etc/ssh/sshd_cong. Anledningen till att detta nd r vanligt och oftast tilltet r att de esta r mindre oroliga fr att obehriga skall ta sig in i deras system: anledningen till att de anvnder SSH r att detta krypterar den verfrda informationen, s att frbindelsen inte kan avlyssnas. SSH kan ocks anvndas fr s.k. tunnling. Detta gr till s att en TCP-port p den egna datorn ansluts till en TCP-port p en annan dator, via en krypterad SSH-frbindelse. Via denna krypterade kanal kan sedan all form av ordinarie ntverkstrak tunnlas mellan datorerna. Datorerna uppfattar detta som om de skickade data till sig sjlva. Tunnling fr nog anses vara ett ganska avancerat stt att anvnda SSH och sparas drfr till ett annat tillflle.

9.6

NTP
Ofciell hemsida: http://www.ntp.org/

NTP, Network Time Protocol, r denierat av David Mills i RFC 1305 samt RFC 2030 och r avsett att synkronisera klockan i en dator med klockan i en annan dator, oftast via UDP-protokollet. Idn med detta r naturligtvis enkel: en dator frgar en annan dator som helst skall vara ansluten till ett atomur vad klockan r. Nr den andra datorn svarar, stller den frgande datorn sin klocka. Kruxet med detta r att hg precision fordras. Hg precision fordras speciellt i ntverk dr anvndare delar ler: de esta operativsystem stmplar sina ler med tid och datum, och skulle ngon annan dator ha en annan klocka som gr fre, kan ler pltsligt vara daterade i framtiden, vilket kan inverka frvirrande p mnga datorprogram. Detta r inte enda anledningen till att klockan i datorn helst skall g rtt: mnga anvndare anvnder klockan i sin dator till allt mjligt,
51 I detalj: dator B skickar ett meddelande krypterat med den publika nyckeln i authorized_keys och begr att dator A skall dekryptera detta, vilket den gr med hjlp av den privata nyckeln i /.ssh/id_rsa och returnerar resultatet. Om resultatet matchar det ursprungliga meddelandet slpps du in. Sjlva meddelandet, som kallas fr en utmaning (engelska: challenge) bestr bara av slumptal genererade av sshd.

335

Kapitel 9 Internet och andra ntverk och vill helt enkelt att den skall g s rtt som mjligt. Fr mnniskor krvs det inte lika hg precision som fr program, men ven i detta fall anvnds naturligtvis NTP. Hg precision r komplicerat att uppn via IP-ntverk: det tar nmligen olika lng tid fr paket att frytta sig frn en dator till en annan. Fr att kompensera fr detta anvnder sig NTP av vissa trick som gr det mjligt att stlla klockan s att den slr p hgst 10 millisekunder eller ngot ditt. Hur detta gr till kan vi lmna t sidan i denna framstllning. Det rekommenderas att du anvnder NTP fr att stlla klockan p din dator. Vissa distributioner erbjuder dig att automatiskt kongurera systemet att anvnda NTP. Synkroniseringen skall utfras dels d systemet startas och dels med jmna intervall under krning, s att klockan inte drar sig. Sveriges Provnings- och Forskningsinstitut tillhandahller mycket noggranna NTP-servrar installerade vid riksmtplatsen fr tid och frekvens, och kan anvndas fr att synkronisera datorer i Sverige. Dessa r: ntp1.sp.se och ntp2.sp.se.52 Det nns ven ett antal allmnt tillgngliga NTP-servrar p era hll i landet. Ju kortare ntverksavstnd det r mellan dig och NTP-servern, desto bttre blir synkroniseringen. Fljande serverar tillhandahlles av fretaget Netnod och kan anvndas: Gteborg Malm Stockholm ntp1.gbg.netnod.se och ntp2.gbg.netnod.se ntp1.mmo.netnod.se och ntp2.mmo.netnod.se ntp1.sth.netnod.se och ntp2.sth.netnod.se

Din ntverksleverantr kan ha stngt av tillgngen till NTP-serverar med hjlp av en brandvgg,53 och vill d oftast att du skall anvnda en lokal NTP-server istllet. Kontakta i s fall din nrmaste ntverksadministratr och frga efter NTP-servern. NTP-programmen fr olika POSIX-system utvecklas direkt av samma personer som utvecklar protokollet, och programmen r samlade i ett paket som oftast bara heter ntp, ibland med programmet ntpdate utbrutet i ett eget paket med namnet ntpdate. Finns det senare r det antagligen det du som vanlig anvndare har mest nytta av, eftersom programmet ntpdate kan kras frn kommandoraden fr att stlla klockan p den egna datorn. ntpdate krs tillsammans med ett servernamn, t.ex. ntpdate ntp1.sp.se fr att stlla klockan i din dator mot den angivna NTP-servern.
52 Se: 53 Se

http://www.sp.se/metrology/timefreq/sv/tidssynk_ntp.htm avsnitt 10.6 p sidan 360.

336

9.6 NTP Programmet mste kras som root och ligger drfr ibland i katalogen /usr/sbin och kan eventuellt saknas i dina ordinarie skvgar. Programmet skall kras varje gng datorn startas. De esta distributioner erbjuder en l med namnet /etc/rc.local dr detta lmpligen grs, om NTP inte installeras automatiskt under installationen. Drutver kan du stta upp ett cronjobb54 som krs som root och som synkroniserar mot tidsservern t.ex. en gng i timmen. Ett bttre alternativ till att kra ntpdate titt som ttt r att instllet starta demonen ntpd. NTP-demonen synkroniserar kontinuerligt datorns klocka mot en server enligt diverse regler. Bland annat detekterar demonen hur snabbt din dators klocka hamnar ur fas och synkroniserar med ledning av detta klockan mot en server lagom ofta. Administrerar du ngon form av lokalt ntverk br du vervga att stt upp en lokal NTP-server fr ditt ntverk, som alla andra datorer i ntet i sin tur anvnder. P det viset uppns hg lokal synkronisering mellan datorernas klockor. Din NTP-server br sedan i sin tur synkroniseras mot en publik NTP-server p Internet. Kongurationsprotokollet DHCP kan automatiskt ange att en viss NTP-server skall anvndas fr ntverket, detta anvnds dock tyvrr mycket sllan.

54 Se

avsnitt 2.3.12 p sidan 107.

337

Kapitel 9 Internet och andra ntverk

338

K APITEL

10 Skerhet

Bara fr att du r paranoid, behver inte det betyda att de inte r ute efter dig.1

Kurt Cobain Dataskerhet (ven kallat datorskerhet) r i strsta allmnhet ett omtalat mne. Intresset fr dataskerhet tilltar kvadratiskt med storleken p den organisation vars integritet skall skyddas. Med skerhet menas i detta sammanhang: Skydd av data som nns lagrad p datorn, t.ex. skerhetskopiering av data s att en hrddiskkrasch inte frstr utfrt arbete. Skydd mot driftstrningar, t.ex. mot fel som kan uppst i programmen och frstra utfrt arbete eller orsaka kostsamma driftstopp. Skydd mot datorintrng, spioneri o.s.v. med mekaniska, tekniska och psykologiska medel. Skerhet har olika niver. Det skraste datorsystemet r ett som inte alls kan anvndas. Drefter ett som r startat och inlst i ett pltrum,
1 Min

versttning av Just because youre paranoid, dont mean theyre not after you.

Kapitel 10 Skerhet utan ntverksanslutning, och med en eller era heltidsanstllda operatrer som tar hand om systemet och utfr anvndarnas uppdrag. Eftersom stora datorsystem en gng verkligen fungerade p det viset, var de faktiskt mycket skra. Vad som menas med en lagom skerhetsniv varierar. Frelsaren i dataskerhet p Lunds Tekniska Hgskola, Ben Smeets, brukar ange att en sdan denition beror helt p hur paranoid du r. Paranoia r en schizofrenibeslktad psykisk sjukdom som ofta har som symptombild att den som drabbas tror sig vara frfljd av diverse ender eller hemliga organisationer. Skerhetskraven tenderar att ka med storleken p det system som skall skras. Dataskerhet i en stor organisation r en betydligt allvarligare historia n den begrnsade skerhet som skall avhandlas hr.2 Syftet med detta avsnitt r att ge en enskild GNU/Linux-anvndare tillrcklig medvetenhet fr att upprtthlla ett visst mtt av skerhet p den egna datorn.

10.1

Fysisk skerhet

Att andra n betrodda anvndare kan anvnda en fysisk dator som de har tillgng till r ett direkt skerhetshl. Du kan inte lita p ngon av operativsystemets behrighetsfunktioner om ngon anvndare har tillgng till systemkonsollen. (Den faktiska datorn, bildskrmen och tangentbordet.) P sidan 186 talas det om hur ltt en anvndare kan starta datorn i enanvndarlge och drmed bli root p ett GNU/Linux-system. Detta r ett av de strsta skerhetshl som existerar i Linux: under frutsttning att den som vill ta sig in i en dator har tillgng till maskinen, kan denne ltt ge parametern single till krnan och r drmed root i systemet, eftersom detta frfarande normalt gr att systemet inte frgar efter ngot lsenord. Detta skerhetshl kan till viss del undvikas genom att ndra i len /etc/inittab och under raden id:N:initdefault: (dr N r standardkrnivn) lgga till raden :S:wait:/sbin/sulogin. I exempelvis Debian r detta gjort redan frn brjan. Detta r dock ingen fullstndig medicin eftersom parametern init=/ bin/sh har samma effekt som single. Istllet br du kongurera ditt LILO eller GRUB s att det frgar efter ett lsenord om en anvndare vill ndra ngot. Detta hjlper, men bara under frutsttning att anvndaren inte kan stoppa in egna disketter eller CD-ROM i datorn. Skall ven
2 Se

vidare sidan 417 om stordrift av GNU/Linux-system.

340

10.2 Uppdatering av systemet detta frhindras mste du stnga av mjligheten att starta frn diskett eller CD-ROM i BIOS, och sedan har du inte mindre n tre olika lsenord till en och samma dator: BIOS-, GRUB- och root-lsenord. Tnk p att svetsa igen datorldan ocks, eftersom det gr att nollstlla BIOS, och drmed lsenordet, genom att pilla p moderkortet. Ungefr i detta lge r det hg tid att du frgar dig om du inte r lite vl paranoid. Det r stor risk att du faktiskt glmmer ett lsenord och lyckas lsa dig sjlv ute. Detta kan ocks lsas som: om du har en GNU/Linux-dator du av ngon anledning inte kommer in i: nollstll BIOS och starta frn diskett om inget annat hjlper. Ett annat fysiskt skydd fr den riktigt paranoide r att skrma av rjande signaler frn datorn. Till exempel kan en bildskrm avlyssnas p lngt avstnd med speciell utrustning, och buggar monteras i tangentbord och inuti datorer. Att placera hela datorsystemet i en Faradaybur lser problemet med rjande signaler. Den hr typen av tgrder r dock av militr skerhetsgrad, och har du verkligen hot av militr grad eller tror dig vara i riskzonen fr industrispionage kan du kanske brja med att skerhetskontrollera alla mnniskor som vistas i lokalen, innan du tillgriper denna typ av tgrder. Ibland skojas det ganska friskt med de som gnar sig t verdriven fysisk skerhet, de kallas aluminiumhattar efter en grupp paranoiker i USA som enligt en vandringssgen isolerar sina hattar med aluminiumfolie fr att undvika att f sina tankar avlyssnade av frmmande agenter.

10.2

Uppdatering av systemet

Fr att hlla ett operativsystem skert mste det med jmna mellanrum lappas ihop fr att rtta till fel som upptckts av tillverkaren. Det engelska ordet patch betyder ungefr lapp eller plster. Nr vi p svengelska talar om patchning av ett operativsystem r de patchar, eller programlappar det r frga om avsedda att tppa igen en brist i systemet. Detta fungerar enligt samma princip som nr en vulkaniserad gummilapp anvnds fr att laga ett cykeldck, eller s som armbgslappar av lder p trjor gr det mjligt att anvnda dem trots att det blivit hl p armbgarna. Ett annat namn p dessa programlappar r kort och gott programuppdateringar eller systemuppdateringar. De esta GNU/Linux-distributioner slpper med jmna mellanrum sdana lappar, fr att rtta till brister i programvaran som upptckts efter att installationsmedier redan distribuerats. Frr i vrlden kom dessa p kassettband, sedan p CD-ROM-skivor, och uppdateringsfrekvensen kunde vara ngon gng var sjtte mnad eller liknande. 341

Kapitel 10 Skerhet Nufrtiden r sdana programlappar mycket mera frekventa: de distribueras via Internet och installeras ibland rent av automatiskt. De gamla systemen med manuell uppdatering frn CD-ROM-skivor anvnds i princip bara fr uppgradering av en hel distribution frn en version till en annan, och knappt ens d. Emedan en del programlappar helt enkelt tgrdar enkla anvndarfel, som gr det svrt att anvnda systemet eller orsakar obehag t.ex. om ett populrt ordbehandlingsprogram tenderar att krascha mitt i en viss operation r andra avsedda att rtta till allvarliga skerhetsbrister i systemet, som kan gra att andra kan ta ver kontrollen av din dator via ntverket. Du br, fr att hlla ditt system skert i detta avseende: Veta hur ditt GNU/Linux-system skall uppdateras p enklaste stt. Ha ngon form av informationskanal som snabbt upplyser dig om nr det r dags att installera programlappar, i synnerhet om dessa p ngot vis r skerhetsrelaterade, t.ex. via epost, en webbsida du dagligen besker, eller ett datorprogram som krs automatiskt och upplyser om frndringen. Det senare r att fredra. Flera distributioner innehller system fr att hlla datorn uppdaterad med nya programlappar. I Debian GNU/Linux nns APT-systemet och i Red Hat Enterprise Linux nns Up2date-funktionen. Dessa hjlper till att se till att de senaste uppdateringarna alltid r installerade, men krver fr det mesta att anvndaren aktivt vljer att utfra tgrden, s att en manuell rutin krvs fr varje ny uppdatering. Vissa tar sig fr att lgga in cronjobb3 som automatiskt uppdaterar operativsystemet med alla programlappar som kommer frn distributionen. Exempelvis kan crondemonen kra ett skript p en Red Hatinstallation som en gng om dygnet kr up2date -u eller p en Debianinstallation kr apt-get update -q -y ; apt-get upgrade -q -y. Detta kommer kontinuerligt att hlla maskinen igenlappad, men r lite smtt farligt, i vart fall gllande Debian testing som lite d och d fr in trasiga saker i sin paketstruktur, ngot som kan stlla till det rejlt.

10.3

Skerhetskopiering

Skerhetskopiering (engelska: backup) innebr att du gr kopior av alla viktiga ler p en dators hrddisk. Det kan ven rra sig om att gra
3 Se

sidan 107.

342

10.3 Skerhetskopiering kopior av alla ler p en centralt belgen lserver. Dessa kopior grs fr att data ibland gr frlorade, dels fr att hrddiskar gr snder, och dels p grund av anvndarfel, d.v.s. att du tar bort ngot av misstag eller med it, som det sedan visar sig att du behver. Datorvirus eller datorintrng kan ocks leda till att data frstrs, liksom inbrott och stld. Grunden till all skerhetskopiering r inte teknisk utan en rutin som beskriver vad som skall kopieras, hur ofta det skall gras, och vart kopiorna skall sparas. Misslyckandet med att flja dessa ganska sjlvklara rutiner r lustigt nog den vanligaste anledningen till att skerhetskopior inte nns nr de behvs. I POSIX-system grs skerhetskopior traditionellt sett med kommandona tar,4 compress och gzip. (Se sidan 59 fr beskrivning.) Sjlva namnet tape archive skvallrar en del om vad kommandot r till fr. Frr gjordes en skerhetskopia helt enkelt i form av en stor tar-l av det som var viktigt att spara, som sedan kopierades till ett band. I lsystemet Ext2 (och Ext3) nns ett inbyggt kommando kallat dump som kan gra en binr kopia av ett helt lsystem. Detta kan vara bra fr mindre lsystem, men inte fr stora system: att spara allt ur ett lsystem tar mycket plats, men r bra om du vill gra en fullstndig kopia av ett systems hrddisk, och dessutom har ngonstans att lgga den. dump -0 /dev/hda1 -f foo.dump kommer t.ex. att gra en skerhetskopia av frsta partitionen p IDE-hrddisk 1 till en l med namnet foo.dump.5 Det gr ven att gra en skerhetskopia till exempel till ett ertal disketter med dump -0 /dev/hda1 -f /dev/fd0. En frdel med dump r att det inte pverkar lsystemet p ngot vis: tar kommer om inte annat att pverka tiddstmpeln som anger den tid d en viss l sist lstes. Fr att terstlla ett lsystem anvnds restore som r omvndningen till dump. Om du nu inte anvnder Ext2/3 r detta inte ngot alternativ fr dig. Kommandot krver dessutom att lsystemet inte r monterat i skrivbart lge nr det dumpas.6 Ett mjligt stt att tillgodose behovet av skerhetskopiering r att hlla sig med dubletter. Du kan t.ex. kpa en extra hrddisk som r exakt lika stor som din vanliga, och regelbundet starta datorn i enanvndarlge och kopiera allt till denna disk med kommandot dd if=/ dev/hda of=/dev/hdb. (Var nu noggrann med att if r den disk du skall kopiera frn och of den disk du skall kopiera till!) Detta stt att anvnda tv hrddiskar r dock inte s smart. Det na4 Det nns ven en nyare variant av tar med namnet star, som ven kan hantera bl.a. accesskontrollistor. 5 Gr inte detta s att dumplen hamnar p samma partition som du gr en dump av, det blir rundgng d och hrddisken fylls snabbt. 6 mount -o remount,ro foo

343

Kapitel 10 Skerhet turliga sttet att anvnda en extra hrddisk r att kra RAID 1,7 vilket innebr att all information som gr genom systemet automatiskt skrivs till bda hrddiskarna. Detta ger dock bara skydd mot hrddiskkrascher, inte mot katastrofer som orsakas av att stora mngder ler raderats.

10.3.1

Vad?

Det r ltt att slnga ur sig att hela datorns innehll skall skerhetskopieras, men svrt att genomfra det, ofta p.g.a. utrymmesbrist. Fljande delar av lsystemet skall i princip alltid skerhetskopieras: /home hr ligger ju all data du och andra anvndare av systemet har skapat! Slarva aldrig med att skerhetskopiera /home! /etc hr ligger ju en hel del instllningar som du gjort i systemet efter installationen. ven om du inte tnker kopiera tillbaka /etc om t.ex. hrddisken kraschar och du fr installera om systemet, s kan det vara sknt att kunna kontrollera hur du gjorde instllningarna sist. /usr/local hr ligger alla program du har installerat sjlv. Synd att bli av med dem om ngot skulle hnda. /opt dr programpaket frn tredje part ibland har installerats med mycket mda och stort besvr. /var r platsen dr databaser, epost och liknande brukar hamna. Hr r det dock lite kluvet: distributionerna lgger t.ex. sina listor ver installerade programpaket hr, och har du d inte ocks kopierat /usr-hierarkin och resten av rotlsystemet, t.ex /bin s kommer systemet att bli instabilt ifall bara /var kopieras tillbaka till en ny installation. Det sparas dessutom en hel del loggar och liknande saker i /var som inte alltid r s ovrderliga. Vlj med omdme. En del vljer drfr att bara kopiera /home och konstatera att: om nt hnder, d fr jag installera om systemet och alla mina program. Denna strategi r helt acceptabel om operativsystemet installerats standardmssigt, t.ex. ett Red Hat Linux-system rakt av frn hyllan, utan krusiduller. I stora organisationer r /home oftast monterad p en ntverksenhet med t.ex. NFS, medan klienten r en ren standardinstallation. I sdana
7 Se

vidare avsnittet B.3 om RAID p sidan 421.

344

10.3 Skerhetskopiering fall kan en trasig eller problematisk dator helt enkelt installeras om, eftersom ingen anvndardata skall ligga p sjlva arbetsdatorn ver huvud taget. NFS-servern dremot, som lagrar alla anvndarler, mste skerhetskopieras desto noggrannare.

10.3.2

Hur ofta?

Rutiner fr skerhetskopiering har utkristalliserat sig under historiens gng. Nr skerhetskopieringsarbetet blev mer komplext var den naturliga tgrden att gra skript som utfrde arbetet och gjorde skerhetskopior av olika saker och med olika intervall. Alla som skrev sdana skript hade egna ider om hur mycket som var lagom att kopiera och hur ofta det skulle gras. En vanlig rutin som tillmpas r: En gng i mnaden skall allt viktigt i hela systemet skerhetskopieras, rubb som stubb. En gng i veckan grs en skerhetskopia av det som ndrat sig sedan mnadsskiftet. En gng om dagen t.ex. p kvllen, grs en skerhetskopia av det som ndrat sig sedan veckoskiftet. De olika skerhetskopiorna sparas sedan en lngre tid, tills du r helt sker p att de inte behvs lngre, eller fr alltid. r det ett medium som kan anvndas era gnger som anvnds fr skerhetskopieringen, s kan det naturligtvis raderas och teranvndas. (Omskrivbara CDROM- och DVD-skivor till exempel.) Att gra skerhetskopior som bara innehller det som ndrats jmfrt med ngon tidigare kopia kallas inkrementell kopiering eller ernivkopiering om er n tv niver r tillgngliga. Den hr freslagna metodiken har tre niver: mnad, vecka och dag. Den hgsta nivn symboliserar alltid en fullstndig kopia av allt som ska skerhetskopieras i systemet. Det tidigare nmnda kommandot dump fr Ext2/3-system stdjer upp till nio olika niver, men jag har aldrig hrt talas om ngon som anvnder s mnga niver. Om du bara gr skerhetskopior fr ditt eget vidkommande, t.ex. fr hemmabruk, kanske detta knns lite verdrivet. Kanske upplever du det ocks som ondigt att packa samman lerna i ett tar.gz-paket, och njer dig med att helt enkelt brnna alla viktiga ler p en CDeller DVD-skiva. 345

Kapitel 10 Skerhet

10.3.3

Hdup
Ofciell hemsida: http://www.miek.nl/projects/hdup16/

Om du nu inte njer dig med att anvnda tar och egna skript fr att gra skerhetskopior s nns det ven verktyg att ta till. Det frmodligen mest populra r Hdup. Detta program nns dessvrre sllan med i vanliga distributioner, s du r tvungen att ladda ner och kompilera det sjlv, om du inte kan hitta ett frdigt paket. Hdup r litet och simpelt. Det bygger p en kongurationsl som lagras i /etc/hdup/hdup.conf dr du stller in hur och var skerhetskopior skall gras. I denna l nns frst en global instllning som anger vrden som gller alla skerhetskopior, och sedan en sektion fr varje kopieprol, som r en egen typ av skerhetskopia, t.ex. p fljande vis:
[foo] dir = /etc /home

Du kr sedan en mnatlig skerhetskopia med kommandot hdup monthly foo. Eftersom programmet Hdup har en tendens att installera sig sjlvt i /usr/local/sbin kan du behva ange hela skvgen, eller lgga till denna plats i miljvariabeln $PATH. Nr du kongurerat och testat Hdup p din maskin kan du automatisera det genom att lgga in tre rader i din crontab-l8 s att programmet krs en gng i mnaden, en gng i veckan och en gng om dagen:
0 0 1 * * /usr/local/sbin/hdup monthly foo 0 1 * * 1 /usr/local/sbin/hdup weekly foo 0 18 * * * /usr/local/sbin/hdup daily foo

Denna crontabell kommer att gra skerhetskopior enligt prolen foo ovan. Notera att den dagliga kopian grs klockan 18, s att varje dags arbete nns sparat. Kopiorna hamnar p en viss plats i lsystemet, s om detta r exempelvis en bandstation, CD-R-brnnare eller en extra hrddisk, kommer skerhetskopiorna att underhlla sig sjlva dr. Om ngot sedan skulle intrffa, t.ex. en hrddiskkrasch, kan alla ler terskapas med hdup restore foo 2003-06-06 /tmp ifall den senaste kopian av foo gjordes den sjtte juni. Nr /tmp anges p det hr viset kommer kopiorna att dyka upp i /tmp som (i detta fall) /tmp/home och
8 Se

avsnittet 2.3.12 om cronjobb p sidan 107.

346

10.3 Skerhetskopiering /tmp/etc. Du kan d frst kontrollera att de r korrekta innan du kopierar tillbaka dem (eller delar av dem) till den plats varifrn de kopierades. Hdup kan ven gra skerhetskopior ver ntverk, vilket r det bsta sttet att anvnda programmet p om du har tillgng till mer n en dator. Detta fordrar dock en del nyckelutbyte med SSH9 s att Hdup kan logga in utan att skriva in ngot lsenord. Detta r i sig ett skerhetshl, men kanske ett du r villig att acceptera fr en annan form av skerhet. Om du kr ett system dr du anvnder accesskontrollistor r det viktigt att du gr skerhetskopiorna med programmet star istllet fr vanliga tar, som inte klarar av att hantera accesskontrollistor. Vilket larkiveringsprogram som Hdup skall anvnda gr ocks att modiera i /etc/hdup/hdup.conf. Frutom Hdup nns en mngd s.k. professionella skerhetskopieringssystem av varierande sostikation. Ofta r de proprietra, ganska dyrbara, och i ett stort system krvs dessutom speciell hrdvara, t.ex. robotar som automatiskt kan byta mellan ett stort antal kassetter fr att rymma stora mngder skerhetskopior.

10.3.4

Rsync
Ofciell hemsida: http://rsync.samba.org/

Rsync r ett program utvecklat av Andrew James Tridgell i syfte att tillhandhlla ett verktyg som kunde synkronisera innehllet i olika lsystem ver ett datorntverk. Detta program anvnds till era ndaml, t.ex. fr att publicera webbsajter frn ett internt ntverk till ett ppet, och diverse synkronisering av arbetsdata ver stora ntverksavstnd. Med stort ntverksavstnd menas inte geograskt avstnd, utan att datorerna har ett lngsamt ntverk mellan sig. Detta kan i och fr sig bero p lngt geograskt avstnd, men kan ocks bero p annat. I skerhetssyfte r ett av huvudanvndningsomrdena fr Rsync att kopiera hela, eller delar av ett lsystem mellan tv eller era datorer fr att p s vis spegla innehllet i ett lsystem fr att sprida riskerna. Ett typiskt sdant anvndningsomrde r att synkronisera en brbar dator med en stationr, s att lerna p den ena datorn ocks nns p den andra. Detta fungerar som en skerhetskopia genom att data i lsystemet dubbleras. Blir vi av med den ena datorn nns den andra kvar. Vi skall nu titta nrmare p fallet hemdator och brbar dator, och visa hur vi kan synkronisera innehllet p dem.
9 Se

avsnitt 9.5 p sidan 331

347

Kapitel 10 Skerhet Rsync anvnds p olika stt. Det enklaste r en envgssynkronisering, frn en klla till en destination, vilket r lmpligt om du bara vill ha en kopia av alla saker frn en viss katalog p din hemdator med dig p din brbara dator. Rsync-kommandot har som s mnga andra POSIX-kommandon formen: rsync [-vxlar] KLLA ML Kllan r platsen det skall synkroniseras frn och mlet r platsen det skall synkroniseras till. S om kllan r en katalog p den datorn dr du har ppnat ditt skal, och mlet r en katalog p en dator med namnet laptop.bar.org skriver du till exempel:
rsync -avrz -e ssh /home/eva/mp3 eva@laptop.bar.org:/home/eva

Detta kommer frsta gngen att gra en kopia av katalogen /home/eva/mp3 frn den datorn dr det krs, till datorn med namnet laptop.bar.org, i anvndarkontot eva, och p samma plats.10 Vxlarna -avrz talar om att Rsync skall kras i arkiveringsmod, vilket betyer ungefr kopiera allt, att vi vill ha mycket utskrifter frn programet (verbose), att katalogen foo skall synkroniseras rekursivt, d.v.s. att ven underkataloger och ler och kataloger som nns i dessa skall kopieras och synkroniseras, samt att datan som verfrs skall komprimeras med GNU Zip under transporten. -e ssh ber programmet att anvnda SSH11 fr att verfra informationen, s att det hela krypteras. Nsta gng du kr samma kommando kommer kopian p den andra maskinen att uppdateras, och d kommer Rsync bara att verfra den ndrade informationen ler som inte har ndrats sedan sist kommer inte att verfras, och om du bara har ndrat lite grand mitt i en l, kommer bara den ndrade biten att verfras och kopieras in i len p den andra datorn. Detta fungerar ven p binra ler som t.ex. ordbehandlingsdokument, s i allmnhet gr synkroniseringar mycket snabbt, det r bara under den frsta synkroniseringen som det tar tid. En frklaring rrande syntaxen fr synkronisering av kataloger kan vara p sin plats: att ange t.ex. /home/eva/mp3 som klla eller destination i ett Rsync-kommando innebr att katalogen mp3 (och alla kataloger inunder den om du arbetar med vxeln -r) kommer att synkroniseras, om
10 I exemplet anvnds en fullstndig skvg till anvndarkontot, detta r inte ndvndigt: rsync -avrz -e ssh mp3 eva@laptop.bar.org: rcker utmrkt om du ursprungligen str i din hemkatalog, men detta skrivstt brukar ge strre knsla av trygghet och fungerar ven nr du inte vet vart du benner dig i lsystemet. Om du inte vet platsen fr ett anvndarkonto p en annan maskin kan du helt enkelt logga in p den och skriva pwd, i detta fall var det exakt samma plats som p originalmaskinen. 11 Se avsnitt 9.5 p sidan 331

348

10.3 Skerhetskopiering /home/eva/mp3 r en katalog (det skulle ju kunna vara en vanlig l som heter mp3). Om du istllet skriver /home/eva/mp3/ som klla, kommer alla ler och kataloger under katalogen mp3 att synkroniseras istllet, s om /home/eva/mp3 innehller katalogerna foo och bar kommer kommandot:
rsync -avrz -e ssh /home/eva/mp3/ eva@laptop.bar.org:/home/eva

inte att skapa katalogen /home/eva/mp3 p datorn laptop.bar.org (vilket skert var avsikten), utan istllet katalogerna /home/eva/foo och /home/eva/bar med respektive innehll, samt kopiera alla ler som lg direkt i /home/eva/mp3 direkt ner i katalogen /home/eva! Det blir ganska jobbigt att rensa upp efter ett sdant misstag, ven om normalt ingenting direkt skadas. Eftersom Rsync-synkroniseringar gr s pass snabbt gr det bra att kra dem ofta, t.ex. var tionde minut om du har tv vanliga hemdatorer, som du vill hlla i synk. De r ocks bra fr modemuppringda frbindelser, eftersom mngden information som verfrs r s pass lg att det inte kostar fr mycket tid att hlla t.ex. sin dator hemma och en brbar dator i synk. Du vill kanske kra synkronisering i bda riktningarna, s att det du skapat p din brbara dator nns kopierat p din hemdator och vice versa. D kan du frsts bara kra exakt samma kommando som ovan frn den brbara datorn, men det gr ocks att initiera en verfring i bda riktningarna frn en och samma plats:
rsync -avrz -e ssh eva@laptop.bar.org:/home/eva/mp3 /home/eva rsync -avrz -e ssh /home/eva/mp3 eva@laptop.bar.org:/home/eva

Detta kommer att synkronisera katalogen foo frst i riktningen brbar dator hemdator, och drefter i riktningen hemdator brbar dator. Om du tar bort ler frn den ena datorn kommer Rsync standardmssigt inte att utstta dig fr ngra risker: inga ler raderas frn en dator som synkroniseras med Rsync, frrn du anger vxeln --delete. Sledes kan anvndaren eva i exemplet lgga ngra nya ler i katalogen /home/eva/mp3 p sin brbara dator nr hon r ute och reser, och de kommer d att kopieras till hennes hemdator nr hon synkroniserar med ovanstende tv kommandon. P samma vis kan hon lgga nya ler i /home/eva/mp3 p sin hemdator och de kommer d att kopieras till hennes brbara dator. Detta r helt idealiskt nr det bara r frga om att lgga till eller ta bort ler. 349

Kapitel 10 Skerhet Att anvnda --delete i riktningen hemdator brbar dator r bra om du bara vill ha en exakt kopia av en katalog med dig nr du reser ler kommer d att raderas s att katalogen p den brbara datorn ser ut exakt som den p din hemdator. Men detta r inte bra om du lgger till ler p din brbara dator, fr d kommer de omedelbart att raderas ifall du kr rsync --delete frn hemdatorn! Detsamma gller alltid om du gr in och ndrar i en l p din brbara dator, och frst synkroniserar i riktningen hemdator brbar dator d kommer eventuella ndringar du gjort p din brbara dator att skrivas ver av originalet frn din hemdator! P exakt samma vis kan du skjuta dig i foten genom att synkronisera i riktningen brbar dator hemdator frst (som i exemplet ovan): om du har ndrat i ler p din hemdator kommer ndringarna att frsvinna! S se upp!. Fr att skta detta p ett vis som inte utstter dig fr risker fordras som s ofta en rutin, d.v.s. ordning och reda. Jag brukar se till att: Synkronisera bara i ena riktningen, med --delete fr kataloger som jag bara vill ha med mig men inte ndrar i. Synkronisera ler i bda riktningarna fr kataloger dr jag bara lgger till saker nr jag r ute och reser. Skapa en speciell katalog, t.ex. /home/eva/laptop som r till fr saker som jag vill arbeta med p min brbara dator. Denna specialkatalog fungerar s att den brbara datorn r primr, d.v.s. ndringar frn den brbara datorn skriver ver alla saker p hemdatorn, men om jag bara lgger till en l p hemdatorn, kommer denna att kopieras ver till den brbara s att jag kan arbeta med den dr sedan. Hr lgger du saker som du ska arbeta med nr du r p resande fot. Jag har dessutom tv olika skript: ett som jag kr p min hemdator nr jag synkroniserar den brbara datorn hemma (vilket nog rcker fr mnga) och som ternns i gur 10.1, och ett som jag kan kra frn fltet s att jag skerhetskopierar saker hem, och som ternns i gur 10.2. (Datorn dr hemma fr naturligtvis alltid vara pslagen fr att det senare skall fungera.) Exempelskripten i gur 10.1 och 10.2 arbetar relativt den angivna anvndarens hemkatalog p destinationsdatorn, och kommer i exemplet att synkronisera i ena riktningen (till datorn som angetts i LAPTOPvariabeln) de kataloger som angetts i variabeln COPYDIRS, i bda riktningarna med de kataloger som angetts i SYNCDIRS och med prioritet fr den brbara datorn med den katalog som angetts i WORKDIR. 350

10.3 Skerhetskopiering

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

#!/bin/sh LAPTOP="laptop.bar.org" LAPUSER="sofie" COPYDIRS="bin foo" SYNCDIRS="mp3" WORKDIR="laptop" # Kopiera i ena riktningen for DIR in ${COPYDIRS}; do rsync -avrz --delete -e ssh ${HOME}/${DIR} \ ${LAPUSER}@${LAPTOP}: done; # Synkroniserade saker for DIR in ${SYNCDIRS}; do rsync -avrz -e ssh ${HOME}/${DIR} ${LAPUSER}@${LAPTOP}: rsync -avrz -e ssh ${LAPUSER}@${LAPTOP}:${DIR} ${HOME} done; # Arbetskatalog fr brbar dator rsync -avrz -e ssh ${LAPUSER}@${LAPTOP}:${WORKDIR} ${HOME} rsync -avrz -e ssh ${HOME}/${WORKDIR} ${LAPUSER}@${LAPTOP}:

Figur 10.1: Skript som synkroniserar i riktningen hemdator brbar dator.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

#!/bin/sh DESKTOP="desktop.bar.org" DESKUSER="sofie" SYNCDIRS="mp3" WORKDIR="laptop" # Synkroniserade saker for DIR in ${SYNCDIRS}; do rsync -avrz -e ssh ${HOME}/${DIR} ${DESKUSER}@${DESKTOP}: rsync -avrz -e ssh ${DESKUSER}@${DESKTOP}:${DIR} ${HOME} done; # Arbetskatalog fr brbar dator rsync -avrz -e ssh ${HOME}/${WORKDIR} ${DESKUSER}@${DESKTOP}: rsync -avrz -e ssh ${DESKUSER}@${DESKTOP}:${WORKDIR} ${HOME}

Figur 10.2: Skript som r avsett att anvndas p resande fot, och som synkroniserar i riktningen brbar dator hemdator.

351

Kapitel 10 Skerhet Rsync kan anvndas fr mycket utver att synkronisera en brbar dator med en hemdator, men detta exempel ger en god uppfattning om de olika saker du kan behva gra med Rsync. I praktiken kommer exemplen hr, liksom skripten att krva att du anger ett lsenord till den andra datorn vid varje krning av kommandot rsync. Du vill nog i normalfallet slippa detta, genom att anvnda godknda inloggningsnycklar i SSH, s att du inte behver skriva ett lsenord varje gng du synkroniserar en katalog. Om du skall kra Rsync mellan t.ex. tv hemdatorer, vill du nog kra det med hjlp av ett cronjobb, se sidan 107. En lustighet med Rsync, liksom med rcp och scp, r att det inte fr frekomma ngra utskrifter av text i skalet p den dator du kr kommandot mot. Om du t.ex. lagt in raden echo Fnord i din /.bashrc-l, kommer det att ge upphov till diverse klagoml och fel och Rsync kommer inte att fungera alls, s lt fr all del bli att i ditt standardskal ha program eller funktioner som skriver ut saker i skalet varje gng ett nytt skal startas, det vllar nmligen bara problem. Ett vanligt missfrstnd rrande Rsync r att tro att detta verktyg kan synkronisera i bda riktningarna, och s att sga sl samman ndringarna i tv ler. Det kan det inte. Fr en mnniska r detta en trivial sak, men fr en dator p grnsen till omjligt, eftersom det krver viss intelligens. Fr rena textler med programkllkod nns system12 som lser vissa delar av detta behov, men inte utan att gra fel ibland. Nr det gller saker som bilder och ordehandlingsdokument r en sdan sak n mer komplex.13 Rsync bygger helt p att en klla skriver ver ett ml, inte p sammanslagning av de tv. Har en l ndrats p bda stllena, kommer den som synkroniseras frst att skriva ver den andra, vars ndringar sledes frsvinner.

10.4

Kryptering

Kryptering r processen att frvrnga information. I de sammanhang som presenteras hr r kryperingen vanligtvis av enklaste slag: ett block information av fast storlek frvrngs med en viss algoritm, kopplad till en viss nyckel, s att bara den som har tillgng till nyckeln kan dekryptera och lsa informationsblocket.
ssom CVS eller Subversion. strukturerad information som redovisningskonton och stora dynamiska tidtabeller anvnds databaser fr att stadkomma denna typ av funktionalitet, nr information behver uppdateras frn era stllen samtidigt. D anvnds inte enskilda ler med information ver huvud taget.
13 Fr 12 Versionshanteringssystem

352

10.4 Kryptering Nyckeln kan vara en l p en hrddisk, diskett o.s.v. Oftast r denna nyckel ganska stor. Fr att skydda nyckeln krypteras denna oftast i sin tur med ett lsenord. Ibland anvnds ett lsenord direkt fr att generera en strre nyckel, ngot som brukar kallas hashing.14 Kryptering p ett GNU/Linux-system kan sktas av svl enskilda applikationer som av Linuxkrnan, frutsatt att krnan har kompilerats s att den har std fr kryptering. Krypteringen i krnan var lnge en het potatis, eftersom teknologi av detta slag betraktades som militr utrustning, och sledes kom att omfattas av exportrestriktioner. Sedemera har dessa restriktioner i era lnder successivt avskaffats, i synnerhet i USA, som lnge var tveksamt till spridning av krypteringsteknologi. I och med version 2.6 av Linuxkrnan inkluderades drfr slutligen kryptering i krnan. I skrivande stund har detta std nnu inte stabiliserat sig, och det r drfr oklart om och hur omkringliggande verktyg skall anvnda krypteringsstdet i krnan. Eftersom import av kryptoteknik inte r ngot problem i Sverige, kan vi med gott samvete anvnda vilken krypteringsalgoritm vi vill. Om du dremot t.ex. reser med en brbar dator in och ut ur Sverige uppstr en mngd juridiska problem, ven om du bara anvnder kryptot fr att skydda din egen dator. De esta sansade mnniskor bryr sig inte om detta, men som ansvarig fr en strre organisation br du ta dig en funderare och kontakta en jurist om du planerar stora installationer av grnsverskridande system.

10.4.1

Kryptering av hrddisk

Om du inte lyckas skydda din dator fysiskt, exempelvis om du har en brbar dator, kan det vara vrt att kryptera hrddisken. Detta hindrar inte andra frn att radera din hrddisk och anvnda datorn till ngot annat om den t.ex. skulle bli stulen (du har vl skerhetskopior??), men det hindrar dem effektivt frn att plocka ut ngon information frn hrddisken. Kryptering av hela hrddiskar i Linux brukar stadkommas med det snillrika loopback-grnssnittet. Detta grnssnitt gr det mjligt fr saker som inte r blockenheter att bete sig som om de vore blockenheter. Det vanligaste anvndningsomrdet fr dessa loopar r att skapa en ltsashrddisk eller ltsas-CD-ROM genom att montera en l som om den vore en blockenhet. En hel partition kan ocks monteras som
14 Hashfunktioner brukar normalt mappa ett element ur en strre nit domn p ett element i en mindre nit domn, men i detta fall r anvndningen den omvnda. Ordet hash betyder mala snder eller sndermalet. Plsa (d.v.s. malda inlvor) heter ocks hash p Engelska.

353

Kapitel 10 Skerhet
/dev/hda1 / /home /dev/hdb1

/mnt /mnt/crypto

/dev/loop0

/mnt/iso

/dev/loop1

/tmp

/tmp/foo.iso

Figur 10.3: Exempel p loopback-montering. I guren r en krypterande loop ansluten mellan monteringspunkten /mnt/crypto och partitionen /dev/hdb1, och en mellan monteringspunkten /mnt/iso och len /tmp/foo.iso.

en loop, vad nu nyttan skulle vara med det. Fr en illustration, se gur 10.3. Mellan en loop och en lagringsplats, oavsett om det r frga om en l eller en partition, kan ett krypterande lager infras, s att all information som skrivs eller lses frn lagringsplatsen kommer att krypteras p vgen in och ut. P detta vis kan antingen en hel partition eller en l som fr motsvara en lagringsenhet krypteras. Den modul i version 2.6 av Linuxkrnan som har hand om krypterade loopar heter cryptoloop och mste vara inkompilerad i din krna, eller tminstone tillgnglig som modul. Om modulen inte skulle vara laddad fr du naturligtvis antingen editera dina uppstartskript s att detta grs automatiskt, eller skriva modprobe cryptoloop fr att gra det fr hand. Andra moduler som mste nnas r den vanliga loopback-modulen och naturligtvis kryptomodulerna (t.ex modprobe aes fr AES-kryptot). Ett ytterligare problem med 2.6-krnan r att paketet Util-linux dr bland annat mount nns, lnge saknade std fr krypterade loopbackenheter. Om din version av Util-linux r version 2.12 eller ldre har du sannolikt detta problem, och fr leta reda p patchar15 fr att f det hela att fungera. I senare versioner r problemet avhjlpt, och du som lser detta anvnder kanske redan en modern distribution dr allt detta fungerar som smort. I version 2.4 av krnan nns sllan std fr krypterade loopar i de distributioner jag sett, men mnga som r i behov av kryptera hrd15 I Cryptoloop-HOWTO nns lnkar till lmpliga patchar och uppdaterad information, se: http://www.tldp.org/HOWTO/Cryptoloop-HOWTO/

354

10.4 Kryptering disk vljer att anvnda loop-AES,16 vilket r en separat modul till krnan, som krver modikation av krnans kllkod och av de till krnan hrande verktygen, t.ex. mount. Kryptering av hrddiskar under 2.4krnan r sledes ingenting som kan gras lttvindigt. I detta avsnitt kommer det inbyggda stdet i 2.6-krnan att presenteras, men principen r densamma fr loop-AES. Monteringspunkt /dev/loop0 Krypteringslager Lagringsutrymme: partition eller l Att endast ha en enstaka l med krypterad data r anvndbart om du bara har ett ftal ler som du vill hlla hemliga, men att kryptera tminstone hela den partition dr /home ligger (vilket ofta r rotpartitionen, /) rekommenderas om du vill skydda din anvndardata ordentligt. Eftersom bara root fr montera enheter br du vara root p det system du skall skydda med hrddiskkryptering. Fr att skapa en 10 megabyte stor l med namnet /var/foo.img, innehllande ett krypterat Ext2-lsystem, som anvnder kryptot AES,17 monterad med loopback som katalogen /mnt/krypto kan fljande kommandosekvens anvndas:
# # # # # dd if=/dev/urandom of=/var/foo.img bs=1 count=10M losetup -e aes /dev/loop0 /var/foo.img mkfs -t ext2 /dev/loop0 mkdir /mnt/krypto mount -t ext2 /dev/loop0 /mnt/krypto

Detta skapar frst en 10 megabyte stor l med slumptal. Slumptalen r viktiga, eftersom en angripare som vill dekryptera len annars kan se vilka block som anvnds av lsystemet. Sedan monteras len med loopback-grnssnittet /dev/loop0, och samtidigt anger vi att allt som loopas genom detta grnssnitt skall krypteras med AES-kryptot. losetup kommer att frga efter ett lsenord: detta skall vara s lngt och svrgissat som mjligt.
http://loop-aes.sourceforge.net/ utlses Advanced Encryption Standard och r efterfljaren till den tidigare DES Digital Encryption Standard. AES hette tidigare Rijndael och valdes som efterfljare till DES av en amerikansk standardkommitt.
17 AES 16 Se:

355

Kapitel 10 Skerhet Efter detta skapas ett Ext2-lsystem p blockenheten /dev/loop0 som sedan monteras precis som vanligt. Du kan lika grna ange en blockenhetsl till losetup t.ex. /dev/hdb fr att gra hela den andra hrddisken till en krypterad enhet. Fr att avmontera den krypterade len eller enheten efter att den anvnts fr frsta gngen skriver du:
# umount /mnt/krypto # losetup -d /dev/loop0

Vill du senare montera den krypterade enheten igen, kan du skriva:


mount -o loop,encryption=aes /var/foo.img /mnt/krypto/

Och avmontera med umount p vanligt vis. Systemet kommer automatiskt att starta och avsluta loopback-grnssnitt vid behov. Det gr ocks utmrkt att lgga in en rad i /etc/fstab p denna form:
/var/foo.img /mnt/krypto ext2 noauto,encryption=aes 0 0

Efter detta gr det utmrkt att montera det krypterade lsystemet bara genom att skriva mount /mnt/krypto, och avmontera det med umount /mnt/krypto. Vid montering kommer du att frgas efter lsenordet, och detta kommer sedan att anvndas fr att lsa upp den krypterade len. Uppsttningen och borttagningen av ett loopback-grnssnitt fr kryperingen sker automatiskt. Nyckelordet noauto talar om fr systemet att det inte skall frska montera denna enhet under uppstart; istllet mste du sjlv be om det. Vill du kryptera strre mngder data, eller hela den primra hrddisken, fordras mer drastiska tgrder. Stora organisationer vill ofta fullstndigt kryptera hrddisken p brbara datorer, s att utomstende inte alls kan komma in i dem. Vidare vill en stor organisation att krypteringen skall ske med en nyckel som fretaget har tillgng till, och drmed kan anvnda fr att lsa upp hrddisken om t.ex. den som anvnder datorn i sitt arbete skulle rka glmma bort sitt lsenord. ven detta r mjligt. Alla partitioner p en hrddisk kan krypteras genom att kryptera hela den blockenhet som svarar mot hrddisken, t.ex. /dev/hda. Krypteras den med en frgenererad nyckel istllet fr med ett lsenord,18 kan nyckeln lagras undan i organisationens kassaskp och plockas fram vid behov. Sjlva nyckeln krypteras sedan med
18 Detta sker i praktiken helt enkelt genom att skicka nyckeln som lsenord i ett rr till losetup och mount. T.ex. losetup -p 0 -e aes /dev/loop0 /var/foo.img < nyckel.bin respektive mount -p 0 -o loop,encryption=aes /var/foo.img /mnt/krypto < nyckel.bin. Nr det

356

10.5 Intrngsskydd ett lsenord som r specikt fr anvndaren (om detta lg i klartext vore det inte mycket mening med det hela). Operativsystemet kan sedan startas frn en mindre hrddisk eller t.ex. en USB-nyckel med ett lsystem motsvarande /boot dr nyckeln ligger i krypterat format. David Braun har skrivit ett utfrligt dokument19 med steg-fr-steg anvisningar om hur detta stadkoms med loop-AES, men principen r exakt densamma fr den inbyggda kryperingen i 2.6krnan. Att lgga denna typ av kryptering ovanp en bentlig distribution kan dremot vara lite komplicerat. Ett alternativ r att anvnda usermode-baserad kryptering. Frn och med version 2.6.14 av Linuxkrnan nns en modul kallas FUSE (utlses Filesystem in Userspace) tillgnglig. Denna kan i sin tur anvndas fr att skapa krypterade kataloger och ler som bara anvnds i en liten del av ltrdet, och enbart fr en viss anvndare. Till skillnad frn helt krypterade hrddiskar kan dessa lagras p ntverksenheter eller andra lagringsmedia som inte krypterats p lg niv med loopback-grnssnittet. Det vanligaste FUSE-baserade krypterade lsystemet heter kort och gott EncFS20 och krpyterar alla ler mellan tv monteringspunkter. I den ena punkten matar du in okrypterad information, och p den andra punkten dyker den upp ett ett olsligt format, dr varje l och varje katalognamn r krypterad gallimatias. Den stora frdelen med detta r att du inte behver kryptera en hel hrddisk eller ha en stor l skrpandes p din hrddisk, utan att de krypterade lerna allokeras som om de vore vanliga ler och vxer dynamiskt. En annan stor frdel r att det r mjligt med inkrementell skerhetskopiering: ven om de krypterade lerna r obegripliga kommer de att skerhetskopieras som om de vore vanliga ler. Nr det gller krypterade loopback-enheter mste du antingen gra en okrypterad skerhetskopia eller skerhetskopiera hela blockenheten.

10.5

Intrngsskydd

Intrngsskydd betecknar ett skydd mot att ngon utomstende person utan anvndarkonto p ditt system tar sig in i din dator och anvnder den till ngot, eller kopierar ngot frn den. Det enklaste sttet att ta sig in i ett system p ett stort fretag r att
gller den nuvarande versionen av paketet util-linux (version 2.12q i skrivande stund) r nyckeln hrt styrd till 256 bitar med AES och de esta andra krypteringsmetoder, vilket r detsamma som 32 bytes. Du br i detta fall generera en binr nyckel med 256 bitar med hjlp av dd if=/dev/random of=nyckel.bin bs=1 count=32 fr att f en bra nyckel. 19 Se Disk Encryption HOWTO [6]. 20 Se: http://arg0.net/wiki/encfs

357

Kapitel 10 Skerhet ringa datorsupporten, helpdesken, eller vad den nu kan kallas. Eftersom alla p fretaget inte knner varandra, kan ganska begrnsad bakgrundskunskap om ngon anstlld, utkastade referenser till mktiga personer inom organisationen o.s.v. gra det mjligt att erhlla tillgng till de esta system bara genom att be om det p rtt vis. Detta tillvgagngsstt gr vanligtvis under benmningen social ingenjrskonst (engelska: social engineering) och skydd mot den typen av angrepp ingr inte inom ramen fr denna bok. Vi kommer hr att koncentrera oss p tekniska skydd mot intrng. Det huvudsakliga orosmomentet fr POSIX-system p detta omrde brukar vara skerhetshl av den typ som gr det mjligt fr utomstende att via Internet ta sig in i din dator och agera som root-anvndaren, ett s.k. root-hl. Ett illasinnat datorprogram som utnyttjar en sdan brist kallas root exploit eller remote root exploit,21 fr att understryka att det r en fr systemet frmmande dator som utfr angreppet. En ngot mindre allvarlig kategori brukar vara skerhetshl som gr det mjligt fr anvndare p systemet (d.v.s. anvndare som redan har ett vanligt anvndarkonto) att frvandla sig till root. Det senare kallas lokalt root-hl och utnyttjas fljdaktligen av ett local root exploit. Det frsta och viktigaste skyddet mot alla typer av root exploits r att uppdatera systemet med alla nya programlappar i samma stund som de kommer ut. Denna typ av svagheter blir snabbt knda av de som av ngon anledning hller p med datorintrng av det hr slaget. Om du blir mltavla fr ett angrepp av detta slag utan att skerhetshlet nnu r allmnt knt, kommer du inte att kunna skydda dig med mindre n att datorn r avstngd eller p annat stt otillgnglig fr angriparen (se nedan om brandvggar). Om du blir mltavla fr ett angrepp frn militr underrttelsetjnst kommer du inte att mrka det. Dessa organisationer plockar systematiskt fram svagheter i system och behller denna kunskap fr sig sjlva. De r ocks experter p att dlja sina spr p alla vis, s att ett angrepp inte r synligt i efterhand. Angrepp kommer ocks att ske p ett koordinerat vis frn era platser p Internet samtidigt. r din information s knslig, att detta hot knns obehagligt (r aluminiumhatten p?) r enda utvgen att inte ansluta systemet till Internet ver huvud taget, samt strngeligen frbjuda alla som anvnder systemet att ansluta det till Internet. Normalt kommer du att komma fram till att det r viktigare fr din verksamhet att vara ansluten till Internet. Den vanligaste (tekniska) metoden fr en utomstende att p detta
21 Det nns inga bra svenska ord fr dessa problem. Ordet exploit betyder utnyttja eller begagna sig av. Den som begr intrnget utnyttjar allts svagheten, skerhetshlet.

358

10.5 Intrngsskydd vis ta sig in i ett system r att avlyssna och stjla lsenord p ntverket. Oskra protokoll som FTP, rlogin eller Telnet skickar lsenord i klartext och r ocks de vanligaste angreppspunkterna. Undvik drfr helt dessa protokoll och anvnd istllet SSH-varianter. Avlyssningen sker med en s.k. sniffer som avlyssnar paket p Ethernetniv, vilket r mjligt med alla Ethernetkort som r anslutna till ett ntverk.22 Nyare sniffer-program kan ven avlyssna trdlsa ntverk, och den som gr det behver sledes inte ens ha tillgng till en dator i lokalen. Drefter r den vanligaste metoden r att angripa systemets demoner med s.k. buffertverskrivning (engelska: buffer overow, buffer overrun). Detta innebr att angripare lokaliserar en illa skriven kodbit i ett demonprogram, dr en buffert (i praktiken en rad bytes i minnet), som lagrar ngot som kommer in via ntverket, kan vxa ohmmat utan att programmet klipper av tillstrmningen. Bufferten, som i allmnhet r temporrt allokerad p programmets stack, kan d skrivas ver s lngt att den expanderar upp i returadressdelen av aktiveringsposten fr rutinen som skapat bufferten. Vl dr kan angriparen byta terhoppsvektorn mot en pekare till ett eget maskinkodsprogram som t.ex. ppnar ett Telnetskal. P detta vis kan en bakdrr in i systemet ppnas.23

10.5.1

Intrngsdetekteringssystem

Intrngsdetekteringssystem har, som namnet antyder, till uppgift att detektera om du inte lyckats hlla ditt system ttt, om det redan har gtt s lngt att ngon har tagit sig in i ditt system och utfrt en s.k. root exploit. Det frsta en sdan inkrktare brukar gra nr denne vl lyckats bli root p ett system r att installera ett s.k. rootkit. Detta innebr att vanliga binrer som ps, ls o.s.v. byts ut, s att dessa inte kan anvndas fr att avslja inkrktaren. T.ex. r ps modierat s att du inte kan se de processer som inkrktaren har startat, och allt verkar vara normalt i systemet. ifcong modieras ocks s att du inte ser att ntverkskortet har satts i promiskust lge och anvnds fr att sniffa ntverket efter nya lsenord. Alla upptnkliga metoder fr att dlja sig anvnds. Ett enkelt stt att leta efter korkade inkrktare r chkrootkit, ett skript som kontrollerar om ngot vlknt rootkit det nns ngra stycken har installerats p systemet.24 En frslagen inkrktare anvnder
22 Bland dessa stygga program nns Snort, Ethercap, TCPdump eller Ettercap. Det sistnmnda r nog det som i dagslget r elakast. 23 Jag krver inte att alla lsare skall frst dessa mekanismer i detalj. En aktiveringspost r ett minnesomrde som subrutiner i procedurella sprk reserverar vid anrop fr att lagra rutinens terhoppsadress och lokala variabler. 24 Se: http://www.chkrootkit.org/

359

Kapitel 10 Skerhet i och fr sig kanske ett nyare rootkit som vet hur det skall bete sig fr att gmma sig ven fr chkrootkit. Tripwire25 r ett lite listigare program som gr kontrollsummor p program med jmna mellanrum, sparar undan kontrollsummorna, och kollar dem igen senare. Om kontrollsummorna har ndrat sig har programmet bytts ut, och var det inte meningen att det skulle bytas, s r det sannolikt frga om ett rootkit. Inte heller detta r vattenttt, men fngar ytterligare ngra, inte fullt lika korkade inkrktare. Det nns inkrktare som kan ta sig frbi alla dessa hinder och fortfarande anvnda systemen som om de vore deras egna. Men de r fr smarta fr att vi p ett enkelt stt skall kunna hantera dem. Enda motmedlet r att vara smartare, och det r naturligtvis ett heltidsjobb.

10.6

Brandvgg med netlter


Ofciell hemsida: http://www.netfilter.org/

Brandvggar har till uppgift att avskrma ett lokalt ntverk eller en enskild dator frn potentiellt skadlig trak. Sjlva namnet kommer frn de tjocka innervggar utan fnster som byggs i mnga hus fr att frhindra att en brand sprider sig frbi vggen. I praktiken hanterar de brandvggar vi skall avhandla hr inte brnder utan internetprotokollets IP-paket, och tittar enbart p paketets kuvert fr att avgra om det skall slppas igenom brandvggen eller kastas. Det nns allts fnster i denna brandvgg, och ordet r kanske inte speciellt vl valt. Grnspostering hade kanske varit lmpligare, eftersom det ger en mer korrekt mental bild av vad en brandvgg egentligen gr: granskar inkommande trak och slpper bara in det som r godknt, som s.a.s. har rtt stmplar. I vanliga fall r brandvggen en speciell dator, som har till uppgift att vara brandvgg och inget annat. Den kan antingen ha en del av Internets adressrymd p bda sidor om sig, eller maskera ett ntverk med egna adresser mot ntverket utt, s att traken ser ut att komma frn en och samma dator, vilket r mnet fr nsta avsnitt. Brandvggar kan ocks kongureras fr en enda, enskild dator. Detta kallas ibland fr personlig brandvgg och det r den typ av brandvggar vi skall titta nrmare p i detta avsnitt. (Du kan naturligtvis anvnda bda typerna samtidigt om du vill.) Denna typ av funktionalitet har funnits fr Linux sedan r 1994 d Alan Cox portade programmet ipfw som anvndes i BSD. r 1998 tog
25 Se:

http://www.tripwire.org/

360

10.6 Brandvgg med netlter Paul Russell initiativ till att ytta dessa funktioner in i sjlva Linuxkrnan, och resultatet blev en mycket snabb och dynamisk brandvggsfunktion som kunde kontrolleras med verktyget ipchains. I samband med att version 2.4 av krnan skrevs r 1999 ndrades denna funktion i krnan radikalt, och ett nytt verktyg med namnet iptables skapades fr att kontrollera brandvggsfunktioner. Paul Russells projekt att integrera brandvggen i krnan gr under namnet Netlter, men detta r allts inte namnet p ngot verktyg, utan bara ett projektnamn.26 Innan du brjar ltrera paket beroende p portar kan det vara vrt att underska vilka portar som egentligen r ppna p din dator. Till detta anvnder de allra esta programmet nmap som medfljer de esta distributioner, eller i vart fall enkelt kan laddas ned och installeras.27 Programmet har en mngd parametrar men bara nmap foo.bar.org sger en hel del om vilka portar som r ppna utt p en viss dator. Gr inte detta mot datorer du inte sjlv har ansvaret fr: det anses ganska ont att portscanna folks datorer, ungefr i paritet med att g omkring ngons hus och knna p drrar och fnster fr att se om det r mjligt att ta sig in ngonstans. De esta internetleverantrer frbjuder dessutom sina kunder att syssla med portscanning. Vi kommer hr inte att g igenom det gamla verktyget ipchains utan koncentrerar oss p det nyare iptables. De esta distributioner innehller funktionalitet fr att p ett enkelt och bekvmt stt kongurera brandvggsinstllningar under installationen. De innehller ibland ocks ett verktyg fr att editera instllningarna graskt.28 I Debian GNU/ Linux och mnga andra distributioner r programmet restarter29 populrt fr att kongurera brandvggar graskt. Det hjlper ven till med att installera startup-lerna s att brandvggen startas automatiskt nr du startar din dator. Nr ett paket kommer in i Linuxkrnan och modulen med namnet ip_tables r inladdad30 kommer paketen att behandlas enligt olika regler beroende p vart de r p vg. Fldet illustreras i gur 10.4. Netlter bygger p att olika regler tillmpas p alla paket som kom26 Ngon anser kanske att en sdan sak som brandvggsfunktioner inte har i operativsystemets krna att gra, och det r en helt frstelig synpunkt. Det r nu s nt arrangerat, att det r mjligt att helt avlgsna Netlter frn krnan genom att vlja att inte kompilera den modulen. 27 Du hittar nmap p http://www.insecure.org/nmap/. 28 I Red Hat och Fedora Core nns programmet lokkit, undangmt i /usr/sbin/lokkit som skter detta p ett ganska grovkorningt vis. Lokkit lgger i sin tur alla sina regler i /etc/ syscong/iptables. Samma funktion nns ven i installationsprogrammet Anaconda. 29 Se: http://firestarter.sourceforge.net/ 30 Linuxkrnans Netlter-del r uppdelad i era undermoduler, men ip_tables r huvudmodulen. Om undermodulerna behvs kommer Netlter att ladda in dem genom att anropa modprobe d vissa regler lggs till.

361

Kapitel 10 Skerhet

Figur 10.4: Paketdet i Netlters ltertabell: paket slpps inte fram till grnssnittet (t.ex. eth0 eller ppp0) om de inte r godknda fr INPUT. De slpps inte heller ut frn systemet grnssnitt, om de inte r godknda fr OUTPUT. Den tredje regeln, FORWARD, anvnds fr att skicka paket frn ett grnssnitt till ett annat utan att de ver huvud taget kommer in i systemet p annat vis. Det senare anvnds fr s.k. ntverksversttning.

Figur 10.5: Figuren visar i UML-notation hur de olika objekten i Netlter relaterar till varandra: tabeller r uppbyggda av kedjor, som r uppbyggda av regler som kan (brukar) innehlla ml.

mer in i, lmnar, eller passerar krnan. En rad regler av en viss typ kallas fr en kedja, eftersom regler av samma typ tillmpas i tur och ordning, s som lnkar i en kedja. En uppsttning kedjor av en viss typ samlas sedan i sin tur i en tabell. Det nns era tabeller i Netlter, men den som anvnds fr brandvggar heter bara lter och om du inte anger ngot specikt till kommandot iptables s kommer det att anta att det r denna tabell du vill pverka.31 Filter-tabellen innehller tre typer av kedjor, som alla kan kongureras med kommandot iptables: INPUT r en kedja av regler som styr vilka paket som fr komma in i ditt system. Processerna i din dator kommer inte ens att upptcka att det har kommit ett paket om du inte har en lmplig INPUTkedjeregel som slpper fram det. OUTPUT r en kedja av regler som styr vilka paket som fr skickas frn ditt system. Processer som skickar ivg paket som r frbjudna kommer inte att betjnas.
31 Namnen p alla tabeller i systemet kan skdas med kommandot cat /proc/net/ ip_tables_names om du har modulen fr Netlter inladdad.

362

10.6 Brandvgg med netlter FORWARD r en kedja av regler som bearbetar trak som skickas direkt frn ett ntverksgrnssnitt till ett annat. Detta anvnds fr ntverksversttning vilket vi kommer att avhandla i nsta avsnitt. I lter-tabellen har denna kedja bara till uppgift att begrnsa vad som ver huvud taget slpps in till de versatta adresserna. Ett enskilt paket som skickas till eller frn systemet passerar bara en av dessa tre kedjor, och kommer allts bara att behandlas enligt regler av en viss typ. Reglerna i sin tur speciceras efter IP-nummer och/eller protokoll, och innehller s gott som alltid ett ml. Nr ett IP-paket matchar en viss regel, som har ett ml angett, kommer paketet att skickas till det mlet. Regler som fljer efter en regel, mot vilken ett paket har matchat, kommer inte att kontrolleras nr ett IP-paket vl har skickats till ett visst ml. Fljande ml r frdenierade i Netlter: ACCEPT medfr att paketet accepteras och slpps in. Detta r det vanligaste mlet fr en regel: om paketet t.ex. kommer frn en viss dator eller en viss grupp av datorer, skall det slppas in. DROP medfr att paketet helt sonika kastas, glms, slngs ut i datarymden. Ngot meddelande till avsndaren om att paketet inte tagits emot skickas inte. Det nns er ml n shr: paketet kan skickas till en egendenierad kedja, eller till ett speciell process utanfr krnan och diverse andra exotiska saker. En normal anvndare anvnder inget annat n ACCEPT och DROP, men vill du experimentera kan man iptables ge dig detaljerad information om alla mjligheter som nns. Sjlva kommandot iptables har ngra typiska anvndningsstt:32 iptables -t <tabell> -L tar en tabell och listar alla dess kedjor och alla regler i dessa kedjor. Skriver du bara iptables -L kommer underfrsttt tabellen lter:s kedjor att visas. iptables -t <tabell> -F (frn engelskans ush, spola) rensar ut innehllet i en hel tabell, s den blir tom och n. Om ingen tabell anges kommer terigen lter att pverkas. Grs normalt under uppstart. iptables -t <tabell> -Z (frn engelskans zero, nollstll) nollstller paketrknare i alla kedjor i en viss tabell. Grs normalt under uppstart. Varje kedjar hller reda p hur mnga paket som bearbetats p olika vis.
32 Som s mnga andra kommandon som bara kan kras av root ligger iptables vanligen i /sbin-katalogen och det kan drfr vara ndvndigt att skriva hela skvgen: /sbin/ iptables.

363

Kapitel 10 Skerhet iptables -t <tabell> -P <kedja> <ml> stter en standardpolicy: om ingen annan regel har angetts fr ett paket som passerat hela kedjan kommer det angivna mlet att anvndas. Om inget annat angetts i ngon regel, skicka i s fall paketet till detta ml. iptables -A <KEDJA> <regel> lgger till en regel i en viss kedja, t.ex. INPUT eller OUTPUT om du arbetar med att bygga en lokal brandvgg. Du kan ocks ange att du vill pverka en viss tabell genom att hnga p t.ex. -t nat. Sjlva reglerna formuleras genom att ge kommandot nnu er aggor. Flaggor som anvnds fr regler skrivs med sm bokstver, medan aggor som skall pverka kommandot direkt skrivs med stora bokstver. Regler innehller t.ex.: -p <protokoll> anger att bara protokoll av en viss typ skall pverkas av den hr regeln, t.ex. tcp, udp eller all fr att vlja alla protkoll. -s <nt> (av source) anger att paket frn ett visst nt skall pverkas av regeln. Ntverket anges p formen nt/ntmask (klassls interdomnform, se sidan 308). Fr att ange hela ntet 192.168.1.0 skriver du t.ex. -s 192.168.1.0/24. -d <nt> (av destination) anger samma sak som ovan fr paket p vg till ett visst nt. -j <ml> anger att regeln skall avsluta med att hoppa till ett visst ml, om den matchar i vrigt. Typiska ml r ACCEPT eller DROP. -i <grnssnitt> anger att paketet skall ha kommit in p det angivna grnssnittet fr att regeln skall matcha, t.ex. -i eth0 eller -i ppp0. Det r ocks mjligt att ange att ett paket skall ha kommit p vilket grnssnitt som helst frutom detta grnssnitt med t.ex. -i ! eth1. -o <grnssnitt> anger att paketet skall vara p vg ut till det angivna grnssnittet fr att regeln skall matcha. I vrigt gller samma som fr ovanstende regelkomponent. Nr detta kommando anvnds fr att stta upp en brandvgg grs det naturligtvis i form av ett skript som krs d systemet startar. I gur 10.6 illustreras hur kedjan INPUT i tabellen lter anvnds fr att ltrera bort all trak till port 1-1024 p ett system, vilket ger en hyfsad brandvgg. Betydligt paranoidare ltrering r naturligtvis mjlig, men mjligheterna att skjuta sig sjlv i foten genom att sprra trak som egentligen skall slppas in r ocks stora. 364

10.6 Brandvgg med netlter


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

#!/bin/sh # Hr hittar vi frhopningsvis programmen som behvs: export PATH=/sbin:/usr/sbin:/bin:/usr/bin # Se till s att den hr modulen finns modprobe ip_tables # Rensa bort alla gamla regler i filter-tabellen iptables -F iptables -Z # Brja med att slnga *allt* som kommer in iptables -P INPUT DROP # Tillt all trafik frn det interna ntverket, 192.168.1.0 iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT # Slpp in SSH oavsett varifrn det kommer. iptables -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT # Frbindelser som etablerats frn mig sjlv r OK. iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Figur 10.6: Skript som r avsett att kras som root (t.ex. i /etc/init.d) och som blockerar all trak till port 1-1024 frutom SSH och ping, samt trak frn det egna ntet (192.168.1.0). Lgg mrke till standardpolicyn -P ACCEPT som slpper igenom allt som inte explicit sprras, s att egna tjnster p portar ver 1024 slpps in.

10.6.1

Ntverksversttning: maskerade nt

Ntverksversttning r det svenska ordet fr engelska network address translation (NAT), vilket ven brukar kallas fr maskerade IP-nt (engelska: IP-masquerading). Principen fr detta r att IP-paket skrivs om i en gateway mellan tv ntverk, s att paketen ser ut att komma frn en annan dator n de egentligen gr. Paketfrvrngningen gr i bda riktningarna. Det absolut vanligaste sttet att anvnda denna teknik r nr bara en ntverkanslutning och ett IP-nummer nns att tillg, men du vill kunna ansluta era datorer till en och samma uppkoppling. Flera internetleverantrer har t.ex. som policy att bara dela ut ett IP-nummer per kund. Med ntverksversttning kan du bygga ett internt ntverk mellan dina datorer, dr datorerna har IP-nummer ur ngon ledig serie (t.ex. typiskt 192.168.1.x-serien) och lta dem dela p ett enda IP-nummer utt, mot Internet. Fr datorerna inne p ditt huvudsakliga ntverk kommer den dator som representerar ntverket utt att maskera de vriga datorerna. Inifrn ditt ntverk kommer datorn dremot att uppfattas som en gateway, vilken som helst. Det r ven mjligt att lta den maskerande datorn dela ut IP-adresser och DNS-information p det lokala ntet med 365

Kapitel 10 Skerhet hjlp av DHCP. Att anvnda denna uppstllning krver33 tv separata ntverksgrnssnitt i datorn som maskerar ntet, ett som anvnds int, och ett som anvnds utt. Ofta r detta identiskt med tv olika fysiska ntverkskort, men det kan ocks t.ex. vara ett ntverkskort mot det egna ntet, och en PPP-anslutning utt. Det spelar ingen roll om den yttre IP-adressen i ett maskerat nt r dynamiskt tilldelad; ntverket kan dynamiskt maskera sig bakom den adress som erhlls vid anslutningen. Ett visst problem kan dock uppst med DNS-serverkonguration, som mste gras lokalt fr varje maskin p det interna ntet om inte DHCP anvnds. Om ngot i DNSinstllningarna ndras nr den maskerande datorn ansluts till t.ex. Internet, kan det bli ndvndigt att kongurera om och starta om datorerna p det maskerade ntet fr att ndringarna ska ta, eftersom dessa instllningar bara lses in frn DHCP vid uppstart.34 Det r emellertid ganska ovanligt att DNS-instllningarna ndras p en dynamisk anslutning. Om du har en gammal dator som du bara vill anvnda som brandvgg och/eller ntverksversttare nns det en minimal Linuxdistribution som bara r till fr att starta datorn som brandvgg, och som rymd p en diskett s att du inte behver ha ngon hrddisk i datorn. Denna kallas opppyfw.35

10.6.2

Annan paketbearbetning

Utver lter och nat-tabellerna nns ven en tabell med namnet mangle. Reglerna i denna tabell kan misshandla IP-paket och ndra innehllet p olika vis, och kan vara roligt fr den som vill experimentera med ntverk eller har vissa vldigt specika tekniska krav. Fr den som vill ha riktigt roligt nns ven mjligheten att deniera egna tabeller och kedjor utver de som redan nns. Vill du kan du med separata regler i Netlter ven logga t.ex. alla anrop som sprras p ett visst vis, fr att ta reda p om du r utsatt fr angrepp eller otilltna portscanningar. Loggar av det slaget p datorer anslutna direkt till Internet blir snabbt fulla, eftersom det r gott om folk som portscannar trots att det r ont. Om du inte sjlv r ntverksadministratr skall du rkna med att din ntverksadministratr
33 Krver och krver. Det r naturligtvis mjligt att tilldela ett grnssnitt mer n ett IPnummer och p s vis mickla med det hela. 34 Det r mjligt att lsa detta p ett perfekt vis med en vidarebefodrande DNS-server p den maskerande datorn. 35 Se: http://www.zelow.no/floppyfw/ Floppyfw har fr vrigt ocks std fr qADSL om du rkar ha ADSL-anslutning.

366

10.6 Brandvgg med netlter

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

#!/bin/sh # Hr hittar vi frhopningsvis programmen som behvs: export PATH=/sbin:/usr/sbin:/bin:/usr/bin # Vilka grnssnitt och nt r det frga om? INTRANET=192.168.1.0/24 INTERNIF=eth0 EXTERNIF=ppp0 # Om ngon modul saknas lggs den in hr. modprobe ip_tables modprobe iptable_nat # Sl p ntverksversttning i krnan sysctl -w net.ipv4.ip_forward=1 # Tillt dynamisk adresstilldelning sysctl -w net.ipv4.ip_dynaddr=1 # Rensa upp i tabellerna iptables -F iptables -t nat -F # Sl p ntverksversttning fr ppp0 i nat-tabellen iptables -t nat -A POSTROUTING -o $EXTERNIF -j MASQUERADE # Skicka inte vidare vad som helst, standardpolicy. iptables -P FORWARD -j DROP # Men skicka vidare allt frn det lokala ntverket som vill utt iptables -A FORWARD -i $INTERNIF -o $EXTERNIF \ -s $INTRANET -j ACCEPT # Relaterad trafik fr passera tillbaka in iptables -A FORWARD -m state --state NEW -i $INTERNIF -j ACCEPT iptables -A FORWARD -i $EXTERNIF -o $INTERNIF -m state \ --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW,INVALID \ -i $EXTERNIF -j DROP

Figur 10.7: Skript som maskerar ett (litet) internt ntverk bakom den adress som tilldelats grnssnittet ppp0 efter uppringning (detta kan bytas mot t.ex. eth1 fr att anvnda tv Ethernet-kort). Skriptet r avsett fr ett mindre hemntverk dr era datorer anslutna till ett lokalt nt skall dela p en uppringd frbindelse.

367

Kapitel 10 Skerhet portscannar datorer lite d och d fr att kolla skerheten p ntverket. P dina egna ntverk skall dock bara du sjlv utfra portscanningar. Den som vill lra sig allt om hur Netlter kan anvndas rekommenderas att lsa Oskar Andreassons Iptables Tutorial[2]. Det som inte str dr r inte vrt att veta.

10.7

Virus, maskar o.s.v.

Nr det gller den typ av skerhetshot som utgrs av datorvirus, maskar och trojaner, s har GNU/Linuxvrlden varit frbluffande frskonad frn dessa. Orsakerna till detta r omstridda: en del menar att POSIXsystem i allmnhet har en bttre skerhetsmodell, andra menar att virusprogrammerare inte klarar av det krngliga POSIX-grnssnittet, andra ter menar att virusprogrammerare sker sig till den populraste plattformen, vilket de facto r Microsoft Windows. Datorvirus r av era slag och r snarast ngot av en svepande beteckning p alla elaka datorprogram. Den typ som orerade p 1990talet spred sig via disketter, dr de infekterade huvudbootblocket36 och sedan krp vidare frn anvndare till anvndare. Om du drabbas av ett sdant virus r det sannolikt att din GNU/Linux-installation slutar att fungera helt, eftersom LILO och GRUB anvnder huvudbootblocket p ett annat vis n de virus som brukar sprida sig dr. Denna typ av virus r inte vanliga numera, eftersom de esta yttar sina ler via Internet och inte via disketter. Maskar (engelska: worm) r datorprogram som tar sig in via ntverksanslutningen och stter sig fast i datorn som en egen process eller som en parasit p en annan process. Bara ett ftal maskar har skrivits som drabbat POSIX-system. De stoppas ofta effektivt med en restriktiv brandvgg, men kan ta sig in genom att utnyttja svagheter i serverdemoner, i synnerhet buffertverskrivning. Mot detta hot hjlper bara en rutin att hlla systemet ordentligt uppdaterat i alla lgen. Nr det s gller trojaner, slutligen, r detta program som brukar utge sig fr att vara ngot annat n de r. Den typ som spritt sig mycket p senare r har orerat i form av bilagor till E-post, som utger sig fr att vara roliga program, skrmslckare, viktiga ordbehandlingsdokument etc. De tillmpningsprogram som anvnds fr E-post, och som kommer att avhandlas i avsnittet om tillmpningsprogram, ger sllan mjlighet fr anvndare att kra bilagor genom att bara klicka p dem. De mycket skilda distributionerna och skrivbordsmiljerna i GNU/ Linux-system gr det ocks svrt fr en virusprogrammerare att veta
36 Se

avsnitt 4.1.3 p sidan 138.

368

10.7 Virus, maskar o.s.v. hur systemet dr viruset skall kras egentligen ser ut, vilket behvs fr spridningen. De esta Windows-system r dremot ganska lika, och det gr det lttare att skriva ett virus som fungerar verallt. Det nns ingen garanti fr att GNU/Linuxsystem alltid kommer att vara skra fr trojaner, och drfr br den uppmrksamme anvndaren hlla sig jour med hndelser p omrdet.

369

Kapitel 10 Skerhet

370

K APITEL

11 Tillmpningsprogram

Tillmpningsprogram, eller applikationsprogram (frn engelskans computer application, tillmpning av en dator) r program som utfr ngot s.k. nyttigt enligt ngon godtycklig denition av nyttighet med ditt operativsystem. Tillmpningsprogram kan denieras genom att beskriva vad de r: program avsedda fr alla slutanvndare, inte fr datorexperter. De kan lika grna denieras genom att beskriva vad de inte r: de r inte operativsystem som GNU/Linux, inte heller systemprogram eller demontjnster. ldre tiders tillmpningsprogram fr POSIX-systemen var de kommandoradsbaserade program som anvndare kunde kra i ett skal, och dr vxla mellan dem i form av olika jobb. Tillmpningsprogram som framstlls nufrtiden har graska anvndargrnssnitt. De r gjorda fr att manvreras med mus och inte enbart med tangentbord. De nyare program som presenteras hr r ofta mer eller mindre integrerade i ngon av skrivbordsmiljerna GNOME eller KDE. Generellt kan det sgas att tillmpningsprogrammen fr GNU/Linux har mycket gott std fr svenska sprket. Frivilliga versttare saknas inte, s programmen talar nstan alltid svenska frn frsta version. Skrivbordsmiljerna GNOME och KDE, som r grunden fr de esta graska tillmpningsprogram, r fullstndigt versatta till svenska.

Kapitel 11 Tillmpningsprogram

11.1

Kontorsprogram

Den arkaiska bilden av tillmpningsprogram r kontorsprogrammen. Jag kommer inte hr att g in p hur dessa program fungerar, eller vad de skall anvndas till: sdan ytterst grundlggande kunskap besitter skert redan den som lser denna bok.1 Den frmsta anledningen till att mnga valde att skaffa en av de tidigaste persondatorerna, Apple II, var mjligheten att kra programmet VisiCalc som programmerats av Dan Bricklin och brjade sljas r 1979. VisiCalc var det frsta s.k. kalkylarket (engelska: spreadsheet). VisiCalc var ocks det frsta kontorsprogrammet: det var avsett som en hjlp under bokfring, ngot datorer i och fr sig redan anvndes till i stor utstrckning, men bara av specialiserade ekonomiavdelningar p stora fretag. VisiCalc och Apple II gjorde det mjligt fr mindre fretag att anvnda datorer fr att skta sin bokfring. Detta berodde dels p att datorn och programmet var jmfrelsevis billiga, och dels p att programmet i sig var ltt att anvnda. VisiCalc hade en enorm inverkan p datorindustrin. Det var sannolikt ocks den direkta framgngen bakom IBM:s PC-arkitektur, eftersom mnga fretag kpte in IBM PC bara fr att kunna kra Lotus 1-2-3, ett program som funktionsmssigt var en direkt kopia av VisiCalc och ursprungsprodukten fr Lotus Software.2 Senare skapade ven Microsoft ett kalkylark i samma stil med namnet Microsoft Excel. Kalkylarket r ocks synonymt med begreppet killer app (ung. supertillmpning), en branschterm som anvnds fr att beteckna program som r perfekta fr anvndare, fyller ett specikt behov, och drmed blir oerhrt framgngsrika. Det idag kanske viktigaste kontorsprogrammet r dock ordbehandlaren. De frsta produkter som kallades fr ordbehandlare var specialdatorer frn kontorsjtten Wang, med speciella tangenter som gjorde dem speciellt lmpade fr just att skriva text.3 Det r dock senare dagars ordbehandlare, ssom Microsoft Word och MacWrite som ftt bli sinnebilden fr vad en ordbehandlare r. Vad som r kontorsprogram utver dessa tv grundpelare r omtvistat. Hr r ngra kandidater: Presentationsprogram r program avsedda att gra enkla presentationer av den typ som tidigare ofta gjordes p stordia (overhead).
1 Kontorsprogram kallas ibland ven produktivitetsprogram (engelska: productivity application), jag vet inte om detta skall tolkas som att alla andra program r oproduktiva. 2 Lotus Software gs numera av IBM. 3 En sdan ren ordbehandlare har t.ex. en tangent dr det str bold fr att generera fetstil text, och diverse andra nesser, som dagens ordbehandlingsprogram bara kan erbjuda via kontrollikoner, menyer och speciella tangentkombinationer.

372

11.1 Kontorsprogram Typexempel: Microsoft PowerPoint. Graska databaser r mycket enkla, graska databashanterare som r gjorda fr att kunna anvndas direkt av en relativ novis. Typexempel r Microsoft Access (Windows) och FileMaker (Apple Macintosh). Fldesschemaverktyg r verktyg som kan rita boxar, linjer, desscheman, enkla elektronikscheman, organisationsscheman o.s.v. Sinnebilden r det numera Microsoft-gda Visio. Personliga informationshanterare av engelskans Personal Information Manager (PIM) borde kanske fr tydlighets skull kallas hanteringsprogram fr personlig information, och innehller ett epostprogram, en planeringskalender, en att-gra-lista och en adresslista (ibland ven kallad Rollodex). Programmen kan ibland kan anvndas av era personer samtidigt, och kallas d grupparbetesverktyg, efter engelskans groupware. Typexempel frn den proprietra vrlden r Lotus Notes, FirstClass och Microsoft Outlook. Ritprogram av tv slag frekommer: dels vektorbaserade ritprogram som anvnder matematiska kurvor, i synnerhet Bzierkurvor, fr att beskriva grak. Typexempel p dessa r Corel Draw! och Adobe Illustrator. Den andra typen r rasterorienterade eller bitmaporienterade rit- och bildbehandlingsprogram, varav Adobe Photoshop antagligen r det vanligaste. Diagramgenereringsverktyg fr stapel- och trtdiagram, samt redigeringsverktyg fr matematiska formler brukar ing som ett underprogram till de esta kalkyl- och ordbehandlingsprogram. Projekthanteringsverktyg r verktyg fr planering och schemalggning av aktiviteter, resursallokering4 samt uppfljning av samma aktiviteter. Sinnebilden fr denna typ av verktyg r Microsoft Project, som anvnder ett s.k. Gantt-schema fr att ge en hyfsad verblick ver tids- och aktivitetsdet i projektet. Somliga skulle eventuellt sga att program fr World Wide Webblddring har blivit s viktiga att de ocks hr till kategorin kontorsprogram, eftersom de numera nns p varje kontor och r absolut ndvndiga fr verksamheten i mnga fretag.
4 Somliga projektledare har ibland en tendens att kalla de mnniskor som r inblandade i ett projekt fr resurser snarare n medarbetare.

373

Kapitel 11 Tillmpningsprogram I GNU/Linux nns det ett antal s.k. kontorsprogramssviter som innehller delprogram fr en eller era av dessa uppgifter. Andra delar tcks av fristende program. Det har utpekats som ett viktigt kriteria fr kontorsprogramssviter att det mste vara ltt att ytta information mellan de olika delprogrammen; som ett absolut minimum mste anvndaren kunna klippa ut information av vilket slag som helst i ett program och klistra in det i ett annat. T.ex. skall det vara mjligt att klistra in en tabell och ett diagram som gjorts med hjlp av ett kalkylark p en stordiasida i ett presentationsprogram. Sdana tekniker fr blanddokument baseras ofta p olika komponentobjektmodeller, som hjlper de olika programmen att anvnda objekt (tabeller, bilder, ljud etc.) skapade av andra program utan att knna till detaljerna om dem.5 Generellt kan sgas att de bda stora skrivbordsmiljerna GNOME och KDE har varsin uppsttning kontorsprogram: GNOME har en uppsttning program som r skrivna fr widgetuppsttningen GTK+ och anvnder GNOME:s komponentobjektsystem Bonobo fr att utbyta information mellan programmen. KDE sin sida har en uppsttning program baserade p Qt och byter information med hjlp av KParts.

11.1.1

OpenOfce.org
Ofciell hemsida: http://www.openoffice.org/

OpenOfce.org r utan tvekan den mest anvnda kontorsprogramssviten i GNU/Linux-vrlden. Projektet har sitt ursprung i det tyska fretaget StarDivision som brjade utveckla en egen kontorsprogramssvit under namnet StarOfce redan i mitten av 1980-talet. Fretaget kptes r 1999 av Sun Microsystems, som i juli ret efter deklarerade att kllkoden till StarOfce skulle ppnas och bli ett fristende projekt under namnet OpenOfce. (Namnet OpenOfce ck senare ndras till OpenOfce.org eftersom ett annat fretag gde varumrket OpenOfce.) Programmen i OpenOfce.org-sviten r: OpenOfce.org Writer en ordbehandlare OpenOfce.org Calc ett kalkylark OpenOfce.org Impress ett presentationsprogram OpenOfce.org Draw ett vektorbaserat ritprogram som ven kan anvndas som ombrytningsprogram
5 Det frsta, mest vlknda komponentobjektsystemet fr blanddokument (compound documents) var Microsofts OLE, Object Linking and Embedding. Numera nns det era sdana system.

374

11.1 Kontorsprogram

Figur 11.1: OpenOfce.org r den frmodligen mest vlutvecklade och anvnda kontorssviten fr GNU/Linux. Bilden frestller ordbehandlaren Writer.

OpenOfce.org r dubbellicensierat: dels r det tillgngligt under GNU GPL, dels r det tillgngligt under en licens som gr det mjligt fr Sun Microsystems att modiera och slja programmet som proprietr programvara. P det viset utvecklas och sljs numera produkten StarOfce som ett slags derivat av OpenOfce.org. StarOfce tillfr en del asiatiska typsnitt, urklippsbilder (clip-art), samt den graska databashanteraren Adabas. I vrigt r det i princip identiskt med OpenOfce.org. Nr Sun tog steget att gra en dubbellicensierad ppen kllkodsversion av sitt kontorsprogram, kom inspirationen antagligen frn Mozilla-projektet. (Vilket vi terkommer till senare i detta kapitel.) Mozilla var vid denna tid ocks dubbellicensierat och anvndes i sin tur av Netscape som en bas fr den proprietra Netscape-lsaren p ungefr samma stt som OpenOfce.org numera r grunden fr StarOfce. Nr StarOfce en gng skapades fanns ingen fungerande skrivbordsmilj till POSIX-systemen, och drfr skapade StarDivision en helt egen skrivbordsmilj som bara anvndes till att kra StarOfce. Det hela fungerade som ett enda stort fnster dr samtliga program kan kras. Efter Sun Microsystems kp av fretaget brts skrivbordsdelen av programmen bort och OpenOfce.org-programmen krs numera i egna fnster. Vad som dremot r kvar i programmen r den widgetuppsttning som utvecklats p helt egen vg, och i princip allt som syns i ett OpenOfce-fnster r ritat av programmet sjlvt, inte av t.ex. GTK+ eller Qt. Vidare har OpenOfce ett helt eget komponentobjektsystem med namnet Universal Network Objects (UNO). Arbete pgr nnu fr att integrera OpenOfce.org ordentligt med svl GTK+ som Qt, s att programmet fr det utseende och det anvndargrnssnitt som hr till re375

Kapitel 11 Tillmpningsprogram spektive skrivbordsmilj. Filerna som skapas av OpenOfce.org r i XML-format, men r drutver komprimerade fr att inte ta fr stor plats. Standardformatet var tidigare ett eget format, men i och med version 2.0 av OpenOfce.org anvnds OpenDocument, vilket r ett format som denierats av en oberoende organisation av kontorsprogramsleverantrer med namnet OASIS. Programmen r ven knda fr att kunna bde lsa och skriva ler frn motsvarande Microsoft-program p ett fullt tillfredsstllande vis. Om du t.ex. tar emot mnga dokument skrivna i Microsoft Word, Excel eller PowerPoint, r det normalt inga som helst problem att ppna dem i OpenOfce.org. OpenOfce.org-programmen kan ocks spara PDFler direkt, inga speciella tillggsprogram behvs fr detta.6 Det r ven mjligt att gra anpassningar i form av makron till OpenOfce.org med ett inbyggt programsprk med namnet StarOfce Basic. Detta sprk har stora likheter med Microsofts Visual Basic for Applications, men har ett helt annat programmeringsgrnssnitt, s makron till Microsoft Ofce fungerar inte med OpenOfce.org. Makron kan ocks spelas in interaktivt.

11.1.2

GNOME Ofce

GNOME Ofce r GNOME-projektets kontorssvit. Det innehller: AbiWord en ordbehandlare Gnumeric ett kalkylark Dia ett desschemaverktyg7 Sodipodi och Sketch tv vektorbaserade ritprogram The GIMP (The GNU Image Manipulation Program) ett rasterbaserat ritprogram Novell Evolution8 ett kombinerat epost-, planeringskalenderoch mtesbokningsprogram MrProject ett projektplaneringsprogram utvecklat i Sverige
6 Detta r en generell egenskap hos POSIX-program: eftersom de esta program till POSIX-system anvnder PostScript som utskriftsystem, och eftersom PDF r mycket likt PostScript, r det ofta ganska enkelt fr programmen att stdja ven PDF. I t.ex. Microsoft Windows anvnds dremot ett helt annat system med namnet GDI, vilket inte har ngra som helst likheter med PDF, och drfr fordras ofta speciell mjukvara fr att verstta utskrifter till PDF. 7 Dia r utvecklat av svensken Alexander Larsson. 8 Tidigare Ximian Evolution.

376

11.1 Kontorsprogram Utver dessa program ingr hela OpenOfce.org i princip i GNOME Ofce, det frklarar varfr det r en del hl i programutbudet. GNOME:s kontorssvit r inte lika tydligt avgrnsad mot de vriga programmen i GNOME-familjen, och mnga som anvnder GNOME tnker p programmen som en del av GNOME snarare n som en del av kontorssviten. En speciell srstllning intar programmet Evolution (se gur 11.2) som r GNOME:s program fr hantering av personlig information. Detta var lnge i princip det enda programmet i sitt slag fr POSIX-systemen och anvnds ven av mnga som annars i huvudsak anvnder KDE som skrivbordsmilj. Program av denna typ blir mest effektiva som verktyg i en strre organisation, om de anvnds tillsammans med en server som gr det mjligt att utbyta kalendrar, skicka mtesinbjudningar samtidigt som tillgnglighet kontrolleras i anvndarnas kalendrar, dela p nyhetsgrupper och adressbcker o.s.v. Ett samlingsnamn fr ett sdant system med bde server och klienter r grupparbetesprogramvara (engelska: groupware), ven kallas samarbetesprogramvara (engelska: collaborative software) eftersom det r inriktat p samarbete i strre eller mindre grupper. Det frsta systemet av denna typ som blev allmnt spritt var servern Lotus Domino och klienten Lotus Notes, men ven servern Microsoft Exchange och dess klient Microsoft Outlook har vunnit stor acceptans. I Sverige har en grupparbetesprogramvara med namnet FirstClass haft stor framgng.9 Evolution kan med hjlp av ett tillgg med namnet Connector anslutas till Microsoft Exchange-servar av version 2000 eller senare, vilket uppskattats mycket av fretag som anvnder detta system som en del av sin verksamhet. Avsaknaden av ett fritt serverprogram av samma typ som Microsoft Exchange har lett till att OpenOfce.org har startat ett projekt med namnet OpenGroupware.org fr att utveckla en sdan server.10 Ett annat liknande projekt r KDE:s Kroupware (se nsta avsnitt). Det nns era liknande projekt, men inget av dem har nnu uppntt dominerande stllning.

11.1.3

K Ofce

K Ofce r KDE-projektets egen kontorsprogramssvit. Det innehller: KWord en ordbehandlare KSpread ett kalkylark
9 Proprietra 10 Se

klienter fr svl FirstClass som Lotus Notes existerar fr GNU/Linux. http://www.opengroupware.org/

377

Kapitel 11 Tillmpningsprogram

Figur 11.2: Novell Evolution r ett personligt informationsprogram (PIMprogram) som ingr i GNOME Ofce.

KPresenter ett presentationsprogram Kivio ett desschemaverktyg Karbon14 ett vektorbaserat ritprogram KRita ett rasterbaserat (bitmaporienterat) ritprogram Kugar ett rapportgenereringsprogram KChart ett diagramgenereringsverktyg KFormula en editor fr matematiska formler Ordbehandlingsprogrammet KWord r speciellt: det bygger p ramar i samma anda som Adobes FrameMaker, och inte p dande sidor som r vanligt i andra ordbehandlingsprogram. Det r sledes ngot av ett ombrytningsprogram, om n inte fulldigt. Till skillnad frn OpenOfce.org har det inga mjligheter till makrodenitioner, och r inte speciellt bra p att importera dokument skrivna i Microsoft Word. Att exportera dokument i Wordformat gr inte alls.11 Programmen i KOfce, liksom de andra KDE-programmen, fungerar bra tillsammans och anvnder samma komponentobjektteknologi (KParts). Att plocka in desscheman frn Kivio och diagram frn KChart i KWord r inga som helst problem.
frgar sig skert varfr det r s intressant huruvida ett program kan lsa dokument skrivna i Microsoft Word eller inte Microsoft Word r ju sin sida oanvndbart fr att lsa dokument skrivna i de olika GNU/Linux-programmen. Anledningen r att mnga r tvungna att kunna anvnda detta format p.g.a. dess allmnna utbredning. Naturligtvis r det ocks viktigt att utbilda anvndare i att undvika att anvnda dokumentformat som inte kan lsas av alla.
11 Lsaren

378

11.2 World Wide Web-blddring

Figur 11.3: Kivio r ett utmrkt desschemaverktyg som ingr i KOfce.

KDE har tidigare inte haft ngot speciellt program fr att hantera personlig information. Numera utgr KPIM ett samlingsnamn fr ett ertal program fr detta ndaml: KMail, KAddressbook, KOrganizer, o.s.v. som sedan stts samman i en klient med namnet Kolab Client. Denna klient arbetar i sin tur mot en serverprogramvara som kallas Kolab Server.12 Projektet som helhet kallas Kroupware.13 Arbete pgr ven p ett graskt databashanteringsprogram med namnet Kexi.

11.2

World Wide Web-blddring

Hypertexten, webbservern och webblsaren uppfanns i ett slag r 1989 d Tim Berners-Lee brjade arbeta med sitt hypertextkoncept vid CERN i Schweiz. ret efter lade han fram ett projektfrslag om att ett hypertextsystem skulle byggas med syfte att frenkla tillgngen till olika vetenskapliga artiklar. Det frsta webblsarprogrammet hette just WorldWideWeb, men bytte senare namn till Nexus, frmodligen eftersom det utvecklades och krdes enbart p NeXT-datorer. Idn med hypertext var inte ny andra liknande system som Hypercard och Gopher fanns redan och anvndes ocks till viss del, men en bidragande orsak till att de inte blev framgngsrika kan ha varit att de byggde p proprietra protokoll som mste licensieras fre anvndning. Berners-Lee baserade sitt hypertextsystem p en delmngd av den allmnt tillgngliga dokumentstandarden SGML (Standard General Markup
Server r i sin tur byggt p andra programvaror som webbservern Apache och databashanteraren Berkeley DB. 13 Se: http://kroupware.kde.org/
12 Kolab

379

Kapitel 11 Tillmpningsprogram Language) och kallade resultatet fr HTML Hypertext Markup Language. Frst runt 1992 lades mjligheten att anvnda bilder blandade med text p webbsidor in i lsaren. Innan dess var webben helt textbaserad. Detta brukar pekas ut som den centrala innovation som Berners-Lee utfrde: efter detta gick det pltsligt att se datorntverket, p ett vis som inte bara tillfredsstllde de som var vana vid att lsa ren rtext. P s vis hade komponenterna multimedia (text, bilder, ljud, animationer) och globala datornt kombinerats fr frsta gngen. Pei-Yuan Wei vid Berkeleyuniversitetet i Kalifornien uppskattade uppnningen s mycket att han brjade utveckla en egen webblsare med namnet ViolaWWW, som bland annat innehll ett skriptsprk och mjligheter att separera hypertextinnehllet och layoutinformation genom att anvnda s.k. Style Sheets. Flera personer vid det amerikanska institutet fr superdatortillmpningar i Illinois, NCSA14 , uppmrksammade i sin tur Pei-Yuans program och brjade utveckla en egen webblsare med namnet Mosaic, och en webbserver med namnet httpd. Version 1.0 av Mosaic slpptes den 22 april 1993 och fanns d bara i olika varianter till fnstersystemet X. Sent 1993 hade ven versioner fr Macintosh och Microsoft Windows utvecklats. En av utvecklarna bakom Mosaic var en sistarsstudent vid namn Marc Andreessen. Denne trffade genom en slump en av grundarna av Silicon Graphics, Jim Clark, som ansg att webblsare hade en kommersiell potential, och startade Mosaic Communications i Mountain View, Silicon Valley. Fretaget bytte snart namn till Netscape Communications. Fretaget utvecklade i raketfart en egen, proprietr webblsare med namnet Netscape Navigator som snart blev betydligt populrare n Mosaic. Netscape Communications slde sin webblsare ganska billigt, men ldre varianter och betaversioner kunde ocks laddas ned gratis frn fretagets hemsida, och detta dg fr de esta anvndare. Huvuddelen av Netscapes inkomster kom frn de serverprogram som sldes under namnet Netscape Server (senare iPlanet). Detta intrffade under mitten av 1990-talet, och Internet brjade d pltsligt att expandera explosionsartat p grund av den oerhrt populra webben. Mnga anvndare brjade ocks anvnda andra tjnster: FTP, IRC-chattar, och elektronisk post blev snabbt oerhrt populrt. Detta gav enorma inkomster till Netscape, vars produkter slde som smr i solsken, och ledde till en extremt hg vrdering av fretaget. Netscapes oerhrda kommersiella framgng ledde till att Microsoft,
14 NCSA

utlses National Center for Supercomputer Applications.

380

11.2 World Wide Web-blddring som till en brjan avfrdat hela Internetkonceptet,15 lade om sin strategi och valde att infrliva webbvisionen i Microsoft Windows. Fr att detta skulle g snabbt licensierade de kllkoden till NCSA Mosaic frn fretaget Spyglass Technologies, som vertagit rttigheterna frn NCSA. Med utgngspunkt frn denna mjukvara utvecklades sedan webblsaren Microsoft Internet Explorer, som efter att den inkluderades som standardkomponent i Windows 95 snabbt vxte sig s stor att den fullstndigt trngde ut Netscape frn marknaden. Det nns en hel uppsj av webblsare till GNU/Linux, men hr kommer bara de mest populra, fullgraska att presenteras. Om du fredrar ett helt textbaserat grnssnitt nns svl lynx som links, av vilka minst en brukar medflja varje distribution. Ett tyvrr alltfr vanligt problem med webblsare fr GNU/Linux r att webbsajter har utformats fr att bara slppa in webblsare av en viss typ, fr ett visst operativsystem. Detta r strikt sett ett missbruk av mjligheten att detektera vilken webblsare beskaren anvnder och sajter som gr sig skyldiga till detta br upplysas om saken. En lsning som ibland anvnds fr att g runt r att maskera webblsaren, s att den utger sig fr att vara t.ex. Microsoft Internet Explorer. P s vis kan innehllet nd kommas t, men samtidigt snder detta ut en tveksam signal: de som administrerar sajten blir d nnu mer vertygade om att alla i hela vrlden faktiskt anvnder Internet Explorer. Anvnd drfr denna mjlighet med omdme, och underrtta alltid administratrer av problematiska webbsajter att deras sidor inte fungerar i din webblsare, och att detta r ett tekniskt fel.16

11.2.1

Mozilla och Firefox

Mozilla var ursprungligen det interna kodnamn som Netscape Communications anvnde fr produkten Netscape Navigator. Namnet r ursprungligen en sammanslagning av Mosaic-killer Godzilla.17 Namnet blev mer allmnt knt i februari 1998, d Netscape valde att slppa koden fr Mozilla / Netscape Navigator under en licens som kallades Netscape Public License som innebar att kllkoden publicerades, ven om Mozillas status som fri programvara nnu var oklar. Den stora sttestenen var frgan huruvida licensen var kompatibel med GNU GPL, och kunde anvndas i GNU/Linux-distributioner.
15 Microsoft Windows hade under brjan av 1990-talet inte ens std fr TCP/IP, utan detta ck laddas ner och installeras separat, eller tillsammans med webblsaren. 16 P webbsidan webbplatskritik (http://www.autark.se/webbplatskritik. html) nns ett forum fr vidare debatt i detta mne. 17 Godzilla r en enorm radioaktiv dla som frkommer i en ondlig rcka skrcklmer frn Japan.

381

Kapitel 11 Tillmpningsprogram Dessa diskussioner ledde till att licensen ndrades till en trippellicens: Netscape Public License, GNU GPL och GNU LGPL, vilket denitivt gjorde Mozilla till helt fri mjukvara. I samband med detta satte Netscape ven upp en separat utvecklingsorganisation som skulle skta utvecklingen av Mozilla och med jmna mellanrum plocka frukterna av projektet fr att producera den proprietra webblsaren Navigator. Tanken var att detta skulle attrahera utvecklare som arbetade med fri mjukvara och snabbt ka utvecklingstakten p svl Mozilla som p Netscapes produkter. Snart efter att kllkoden publicerats visade det sig att denna var fruktansvrt rrig och svrbegriplig, och projektet beslutade att helt skrota all kod och skriva om programmet frn brjan. Detta ledde till ett helt ovntat extraarbete, och Netscape kunde inte brja anvnda koden frn Mozilla frrn i december r 2000. Vid det laget hade Mozilla nnu inte ens mognat till version 1.0. I juli 2003 meddelade den dvarande garen av Mozillaprojektet, America OnLine (AOL) att utvecklingen av webblsare skulle lggas ned. Projektet verlmnades drefter till en stiftelse, som sedan dess driver projektet. Under 2004 brjade tv utvecklare, Dave Hyatt och Blake Ross, att skapa en nedskalad variant av Mozilla under namnet Phoenix, eftersom lsaren kommit att bli allt strre och overskdligare och innehll fr mnga komponenter som en normal anvndare aldrig hade gldje av. Mozilla innehll d: Navigator-komponenten, d.v.s. webblsaren Epost- och USENET News-komponenten HTML-redigeringskomponenten Adressbokskomponenten Denna blandning av program terspeglar att Netscape tidigare frskte utka omrdet fr sin verksamhet genom att infra allt er funktioner i Netscape och skapa en hel programsvit under konceptnamnet Netscape Communicator. Det r ganska ltt att se att Mozilla i ngon mn, utver att vara en webblsare, tycks vilja bli ett fullstndigt programpaket fr hantering av personlig information, i stil med Ximian Evolution. De esta tnkte trots detta p Mozilla som en webblsare och inget annat. I mars 2005 bekrftade Mozillastiftelsen att den tidigare navigatorn skulle brytas isr: webblsaren som tidigare kallats Phoenix blev en renodlad, snabb lsare under namnet Firefox och epost- adressboks- och 382

11.2 World Wide Web-blddring

Figur 11.4: Mozilla brukar anvndas till all form av webbsurfande. Hr visas de ikar som gr det mjligt att beska era webbsajter frn ett och samma Mozillafnster.

news-programmet blev fristende under namnet Thunderbird. HTMLredigeringskomponenten vergavs helt. Den gamla integrerade Mozillaapplikationen fortlever dock under namnet SeaMonkey men utvecklas bara av och fr de som absolut mste ha just denna stora kombinationslsning. Tekniskt sett har Mozilla och Firefox verraskat med mycket hg standard. Projektet r i princip det enda som implementerat de mer exotiska delarna av de standarder som annonserats p lpande band av W3.org. Firefox har rnt stor framgng sedan vren 2005 och har revitaliserat konkurrensen mellan webblsare p ett vis som nog f trodde var mjligt. Ett tag innehll Firefox en funktion som inga andra lsare hade ikar (ven kallade tabbar) dr anvndaren med Ctrl+t kan ppna en extra ik i webblsaren, istllet fr att behva ha era fnster ppna p skrmen, fr att kunna surfa p era olika sidor parallellt. Numera r detta standard i alla webblsare vrda namnet. Firefox har ett generellt system fr att enkelt installera programtillgg direkt via webblsaren, vilket kallas XPInstall eller bara XPI. Dessa program r tnkta att installeras i anvndarens hemkatalog om denne inte r root. Skerhetsmodulen i Firefox r omfattande och kan till och med utnyttja NTLM-autentisering18 vilket kan vara ndvndigt i ntverk dr webbservrar av typen Internet Information Server anvnds mycket.
18 NTLM, NT LAN Manager, r en egentillverkad autentiseringsteknik som utvecklats av Microsoft och som ofta anvnds som standard fr att veriera en anvndare i Windowsntverk. Speciellt anvnds denna funktion fr att begrnsa spridningen av intern information inom stora fretag.

383

Kapitel 11 Tillmpningsprogram Popup-blockerare19 r inbyggt i Firefox, och kan ltt sls p och anvndas fr att gra surfandet drgligt. Det r ocks mjligt att ange fr enskilda webbsajter om de skall tilltas att ppna fnster eller inte. Ett populrt XPI-tillgg r ashblock20 som stoppar onskade Flashanimationer frn att dyka upp i webblsaren. Firefox har ett sreget kongurationssystem som innebr att samma konto p en maskin kan anvndas av era personer, och varje person kan i sin tur ha era olika proler. Detta terspeglas i kongurationslerna: i den dolda katalogen .mozilla i din hemkatalog nns frst en katalog med ditt anvndarnamn, drefter en katalog med ett helt slumpmssigt namn som r kopplat till varje prol du skapat. I denna katalog ligger sedan alla instllningar, bokmrken o.s.v. Firefox innehller ingen lttanvnd funktion fr att maskera webblsaren fr att komma t sidor som utestnger vissa webblsare. Detta beror p att utvecklarna bakom Firefox inte anser att detta r ngon bra taktik fr att komma t problemet. Du kan emellertid maskera Firefox till Internet Explorer genom att g in i len prefs.js fr den prol du anvnder (eller kanske nnu hellre skapa en separat maskeringsprol) och skriva till:21
user_pref("general.useragent.override", "Mozilla/5.0 (compatible; MSIE5.5; Windows 98)");

Avancerad extrafunktionalitet fr Firefox som inte kan installeras via XPI-systemet tillhandahlls genom olika s.k. insticksprogram (engelska: plug-ins). Dessa skall installeras i katalogen /usr/lib/mozilla/plugins och inte under /usr/local-hierarkin, ssom kanske hade varit mest naturligt. Java med Firefox Programsprket Java introducerades tidigt som ett sprk speciellt lmpat fr datorprogram som skulle kras inuti en webblsare. Sklen var
r fnster som ppnas av skript p webbsidor du surfar till, och som mste stngas manuellt. Eftersom de hamnar mitt i blickfltet och r svra att bli av med anvnds de mycket till reklam. De esta itiga Internetanvndare utvecklar snabbt en aversion mot detta otyg. 20 Se: http://flashblock.mozdev.org/ 21 Det kanske r ngon som tycker att det r underligt att Internet Explorer faktiskt identierar sig som Mozilla! Detta har historiska orsaker: Netscapes lsare, som en gng var dominerande, identierade sig alltid som Mozilla/1.0 o.s.v. Nr Microsoft skapade Internet Explorer anvnde de denna strng fr att inte bli utestngda frn webbsajter som krvde Netscape Navigator. Nu r rollerna omvnda. Internet Explorer identierar sig som Mozilla, och anger i en parentes att den faktiskt inte r det.
19 Popup-fnster

384

11.2 World Wide Web-blddring tv: dels var sprket gjort fr att fungera lika bra p alla datorer, dels var det ltt att med Java bygga en hgklassig skerhetsmodell, eftersom sprket krs i en s.k. sandlda.22 Det r inte mjligt fr javaprogram att komma t delar av systemet som det inte explicit tilltits att anvnda. Drfr kan Java inte anvndas fr att skapa virus och liknande elaka program. Javaprogram kan kras som vilka program som helst, men kan ocks kras med sin graska del kopplad till ett fnster i en webblsare.23 Ett javaprogram som krs inuti en webblsare kallas fr en applet. Java fr Firefox r komplicerat, eftersom den implementation av Java som anvnds mest i GNU/Linux-vrlden r gjord av Sun Microsystems, och denna r inte fri mjukvara. Det str drfr var och en fritt att ladda ned och installera Java frn Sun, men det levereras sllan med ngon distribution. P senare tid har stor energi lagts ned p utvecklandet av libgcj, vilket r krnan i GNU-projektets egen javalsning. libgcj kan kra svl rena javaprogram som javaprogram kompilerade till ren maskinkod, samt kombinationer av bda. Om Java nns tillgngligt i form av ett XPI-paket r det ltt att installera.24 Till de esta distributioner nns dessutom paketsamlingar som glatt distribuerar java i form av RPM- eller DEB-paket. Om du inte vill installera Java via XPI eller ngot tredjepartspaket fr du frst ladda ner och installera Sun:s JRE (Java Runtime Environment). Denna komponent nns i ett ertal former p Sun Microsystems Java-sida.25 Att installera Java r inte tillrckligt: fr att det skall fungera tillsammans med Firefox krvs att ett speciellt insticksprogram installeras. Att f det insticksprogram fr java som medfljer Javainstallationen att fungera r inte alltid s ltt. Den senaste tiden har tanken varit att om din Java-installation ligger i t.ex /usr/java/j2re1.4.1 s nns en insticksmodul i /usr/java/j2re1.4.1/plugin/i386/ns610 som uppenbarligen gjorts fr Netscape Navigator 6.10. Denna skall sedan lnkas symboliskt till insticksprogramkatalogen fr Firefox med ngot i stil med:
ln -s /usr/java/j2re1.4.1/plugin/i386/ns610/libjavaplugin_oji.so /usr/lib/mozilla/plugin/libjavaplugin_oji.so

Om katalogen /usr/lib/mozilla/plugin inte nns mste den frst skapas.


22 Java bestr av interpreterad byte-code, en maskinkod denierad fr en processor som inte existerar i sinnevrlden (annat n i ngra f experimentella versioner). 23 Den faktiska skillnaden r att programmets huvudklass i frsta fallet r en subklass till application medan det i en webblsare r en subklass till applet. 24 Se: http://java.mozdev.org/java_xpis/ 25 Se: http://java.sun.com/

385

Kapitel 11 Tillmpningsprogram Arbete pgr med en fri implementation av Java med namnet Kaffe, men denna implementation r i dagslget inte speciellt bra. Sun och IBM frhandlar dessutom fr tillfllet om ifall det skulle kunna tnkas vara mjligt att slppa Java som ngon form av fri programvara. Flash med Firefox Macromedia Flash r ett proprietrt skriptsprk fr enkel multimedia i form av bland annat vektorgrak, som utvecklats som ett lttviktsalternativ till Macromedias multimediaverktyg Shockwave. Insticksprogrammet fr Macromedia Flash r p samma vis som Java ett problematiskt kapitel. Problemet r terigen inte att hitta och installera Flash, problemet r att programmet inte r fritt och inte passar i en GNU/Linux-distribution. Flash kan laddas ner frn Macromedias hemsida och kommer med ett eget installationsprogram som ser till att Flash installerar sig sjlvt. Det r inte svrt att lyckas med detta, om du nskar installera Flash. Vissa anvndare upplever det snarast som en frdel att Flash inte fungerar: mnga annonsrer anvnder numera ofta stora och igonenfallande Flashanimationer fr att stjla lsarnas uppmrksamhet, vilket kan uppfattas som ganska strande. andra sidan har vissa fretag byggt hela system i Flash, och d nns ingen annan utvg n att installera det. Epiphany Epiphany r GNOME-projektets tappning av Firefox, som r gjord att fungera speciellt bra i skrivbordsmiljn. I princip bestr Epiphany av allt utom sjlva webbfnstret, dr hemsidor visas. Sjlva visandet av webbsidor skts nmligen av GtkHTML, en widget som bygger p Firefoxs renderingsmotor Gecko, och Firefox r p detta vis integrerat i GNOME. P andra vis r Firefox inte alls integrerat med GNOME: det har exempelvis ett helt eget komponentobjektsystem, ett eget portabelt plattformsabstraktionsbibliotek o.s.v.

11.2.2

Konqueror

Konqueror r KDE-projektets egen webblsare. Till skillnad frn GNOME:s Epiphany anvnder Konqueror inga komponenter frn Firefox. Konqueror r fr vrigt inte bara en webblsare, utan ocks KDE-projektets lhanterare. Detta innebr att samma program anvnds fr att utforska innehllet i lsystemet p den egna hrddisken som anvnds fr att surfa p Internet. 386

11.2 World Wide Web-blddring

Figur 11.5: Nvu r kanske den mest lovande fullgraska webbeditorn.

Den centrala komponenten i Konqueror, KHTML, anvnds ven av webblsaren Safari som medfljer i Apple:s MacOS X och anvndarbasen r drfr mycket stor. Att maskera Konqueror s att den ser ut att vara en annan webblsare r mycket enkelt, det kan gras i menyalternativet Instllningar Anpassa Konqueror Webblsaridentikation. Det r mjligt att anpassa Konqueror s att den upptrder som en annan webblsare bara mot vissa problematiska sajter. (Kom dock ihg att nd upplysa administratren fr denna webbsida om problemet.) Konqueror kan anvnda insticksprogram fr Firefox, s ngon separat programvara fr detta behvs inte. Om insticksprogrammen installeras i /usr/lib/mozilla/plugins kommer de att kunna anvndas ven med Konqueror.

11.2.3

Webbredigeringsprogram

Den ursprungliga visionen av World Wide Web var att det skulle vara enkelt fr anvndare att lgga till och redigera artiklar publicerade p webben. Tim Berners-Lee hade fr detta ndaml skrivit en robust och enkel editor fr datorn NeXT. Eftersom f personer anvnde denna dator ck programmet ingen strre spridning, och de esta som skrev webbsidor fredrog att gra det genom att editera HTML-koden direkt i ngon texteditor. S lnge de som skapade webbsidor var ett ftal teknikkunniga personer fungerade detta ganska bra. Runt 1995 presenterade fretaget Vermeer Technologies den frsta riktiga fullgraska webbeditorn under namnet FrontPage. ret efter kptes fretaget av Microsoft och produkten blev Microsoft FrontPage. GNU/Linux har lnge saknat en motsvarighet till FrontPage, men 387

Kapitel 11 Tillmpningsprogram det nns ett antal lovande projekt: Mozilla Composer fljer med Mozilla och duger till de esta enklare webbsidor, och Nvu (vilket frmodligen skall utlsas envy-you, jag avundas dig) r en vidareutveckling av Mozilla Composer som nrmar sig FrontPage.26 SCREEM (Site Creation and Editing Environment) r en webbeditor fr GNOME som inte r fullgrask, men som r passar bra fr avancerade anvndare.27

11.3

Elektronisk post

Anvndandet av mail, epost, elektronisk post, datorpost eller vad det n kallas, tog sin brjan i de frsta stora datorsystemen. Eftersom era personer kunde anvnda en och samma dator frn era olika platser och vid olika tidpunkter, var det naturligt att bygga ett system som gjorde det mjligt fr dem att utbyta meddelanden med varandra. Nr datorntverk blev vanliga fll det sig naturligt att ven brja skicka sdana meddelanden mellan olika datorer i ntverket, och drmed var eposten fdd. I de ldre systemen (baserade p UUCP) var det enda sttet att skicka epost att ange exakt vilka datorer brevet skulle passera p vgen till mottagaren, t.ex. angav foo!bar!fnord att ett brev skulle skickas via datorn foo till anvndaren fnord p datorn bar. Det moderna anvndandet av epost bygger p SMTP-protokollet och DNS-systemet. SMTP anger hur eposten skall skickas, och DNS anvnds fr att ta reda p en specik epostdator (MX, Mail eXchange) som pekas ut fr varje unik domn. P detta vis kan ett brev till adressen foo@bar.org skickas genom att i DNS sl upp den aktuella MX-datorn fr domnen bar.org, och sedan med hjlp av SMTP verfra brevet till denna dator. Epostsystemet r ett klient-server-system och delas in i tv komponenter: Epostklienterna som ven kallas mail user agent (MUA, epostanvndaragenter) och som r den klientdel som de esta anvndare anvnder fr att lsa sina brev. Epostservrar som ven kallas mail transfer agent (MTA, epostverfringsagenter) och som har till uppgift att ta emot och vidarebefodra epost till anvndare p svl det egna systemet som p andra system p Internet. Alla POSIX-system r egentligen byggda med tanken att de skall hantera sin egen epost och ha bda dessa komponenter installerade.
26 Se: 27 Se

http://www.nvu.com/ http://www.screem.org/

388

11.3 Elektronisk post (Ls grna lite om internetservrar fr SMTP och IMAP p sidan 423 om du r intresserad av att gra detta.) mail r en kommandoradsbaserad, mycket enkel epostklient som brukar nnas med i alla distributioner, men den kan bara anvndas om datorn den anvnds p har kongurerats s att den sjlvstndigt kan snda och ta emot epost via SMTP, d.v.s. om datorn ocks r en epostserver. Anvndarnas inkomna post lagras d i katalogen /var/spool/mail och utgende post brukar hamna i /var/spool/clientmqueue. Mnga anvndare har numera ingen mjlighet att kongurera sin dator fr att skicka och ta emot epost: dels r det en smula komplicerat, dels r det era internetleverantrer som helt frbjuder detta och stnger av SMTP-porten (nummer 25) fr inkommande trak till hela ntet.28 Anvndarna hnvisas istllet till att anvnda internetleverantrens egna epostservrar, som fr det mesta skts p ett bttre vis. Vissa internetleverantrer ppnar fr mjligheten att kra en epostserver p den egna datorn vid frfrgan. I normalfallet kr du inte ngon epostserver p din dator, och har du inte specikt behov av att gra detta skall du ocks se till att vlja bort detta under installation. Du kan kontrollera om du har en epostserver krande p din dator med telnet localhost 25. Om du har en SMTPserver krande kommer den att svara p anropet, i annat fall avbryts frsket. Mnga program antar nnu helt kallt att datorn faktiskt har kongurerats fr att agera epostserver och skickar drfr systemmedelanden med epost i tron att de skall hamna hos den lokala administratren root@localhost. Detta kan gra att katalogen fr utgende post i /var/ spool/clientmqueue vxer och vxer utan att ngonsin tmmas om ingen epostserver installerats p datorn. Du kan drfr bli tvungen att sjlv rensa detta utrymme ibland. Vi kommer nu att anta att du njer dig med att kunna lsa och skriva epost, och att ngon annan fr lov att tillhandahlla din epostserver. Som vanlig anvndare r det egentligen bara ett ftal saker du behver knna till fr att kunna f din epostklient att fungera: En epostserver fr inkommande post, d.v.s. en dator dr din inkommande post landar och mellanlagras. Denna brukar oftast heta ngot i stil med mail.foo.org, imap.foo.org o.s.v. Din inkorg p denna dator r ekvivalent mot din fysiska postlda eller ditt brevinkast.
28 Anledningen r att sdana system, om de inte skts ordentligt, r en perfekt relcentral fr skrppost. Flera av de Windowsvirus som spritts de senaste ren installerar epostservrar p de datorer de infekterar, epostservrar som i sin tur accepterar att vidarebefodra post frn hela vrlden. Dessa epostservrar upptcks av skrppostleverantrer, och mnga internetanvndare har drfr omedvetet blivit distributrer fr skrppost.

389

Kapitel 11 Tillmpningsprogram Vilket protokoll din mailserver anvnder. Vanligast r IMAP, men ven det ldre POP3 kan frekomma. Ett anvndarnamn som du kan anvnda fr att ansluta till epostservern. Ett lsenord som du kan anvnda fr att veriera din anvndaridentitet hos epostservern.29 En epostserver som kan anvndas fr utgende post. I mnga fall r detta samma dator som servern fr inkommande post, men i vissa fall anvnds en separat dator fr detta. Den utgende posten anvnder protokollet SMTP. Datorn fr utgende post r ekvivalent mot postens gula brevldor, som ju ocks anvnds fr utgende post. Om din server fr inkommande post stdjer att du anvnder SSL (Secure Sockets Layer) fr att kryptera frbindelsen skall du alltid anvnda det, och mnga epostservrar krver ocks att SSL anvnds. En dator fr utgende post (via SMTP) brukar bara acceptera post frn det egna ntverket. Om du anvnder era epostkonton samtidigt i ditt epostprogram, kommer de skert att anvnda olika servrar fr inkommande post, utspridda lite varstans p Internet. Samtliga konton br dremot anvnda den server fr utgende post som nns nrmast dig sjlv, i ditt lokala ntverk. I annat fall r det stor risk att dina utgende brev aldrig kommer ivg. Servern fr utgende post gr vanligtvis inga frsk att veriera att du verkligen r den person som str p From-raden i breven, och vidarebefodrar glatt all post, oavsett vem som skickar den och varthn.30 Vissa modernare installationer stdjer dock att SSL och lsenord anvnds d ven fr att skicka post. Stds detta av bde din server och ditt epostprogram skall du naturligtvis anvnda det. Ngra populra epostklienter fr GNU/Linux r: Pine Program for Internet News and Email31 r ett helt textbaserat men mycket vlbeprvat och populrt program. Pine anvnder programbiblioteket curses fr att generera menyer som kan navigeras
29 Strikt sett kan din epostserver anvnda andra metoder fr att veriera att du r den du r. Kerberos r ett sdant system. Dessa alternativa autentiseringsmekanismer r dock nnu inte srskilt vanliga. 30 Detta r ocks orsaken till att mycket skrppost skickas genom s.k. ppna epostreler, d.v.s. SMTP-servrar som accepterar och vidarebefodrar post skickad frn alla datorer p hela Internet. 31 Detta r numera den ofciella uttydningen av akronymen. Tidigare betydde Pine Pine Is Not Elm, efter Elm (Electronic Mail), en annan epostklient.

390

11.3 Elektronisk post med piltangenterna. Naturligtvis kan pine inte visa bilder eller andra multimediabilagor som medfljer vissa brev. Pine r inte fri mjukvara, utan bara gratis, och mnga distributioner vgrar drfr att distribuera Pine. (Pine betyder ven fura p engelska.) Mutt r ett annat textbaserat epostprogram. Detta program r ganska svrt att anvnda, eftersom det krver inlrning av en stor mngd tangentkombinationer. r du van vid sdana program r emellertid Mutt programmet fr dig. Thunderbird r epostprogrammet som utvecklas av Mozillastiftelsen, och som tidigare gick under namnet Mozilla Mail. Detta r mycket populrt och fungerar bra. Evolution och Balsa r GNOME-projektets tv epostprogram. Evolution r strre och mer tungarbetat, men erbjuder samtidigt grupparbetesprogrammets alla frdelar med kalender, att-gra-lista o.s.v. KMail r KDE-projektets epostprogram och ingr som tidigare nmnts i deras personliga informationshanteringssvit.

11.3.1

Skrppostlter

Alla som anvnder epost i strre utstrckning kommer frr eller senare att drabbas av skrppost, ven kallat spam. Skrpposten bestr mestadels av reklam, men kan ven vara rena svindlerier eller bedrgerifrsk. En del virus i form av trojanska hstar brukar ocks kallas skrppost eftersom de tar upp plats och tid fr epostanvndare, speciellt gller detta GNU/Linux eftersom mnga av dessa virus r Windowsprogram och helt ofarliga fr en GNU/Linux-anvndare. Flera program har p senare tid utvecklats fr att sortera bort och lgga skrppost t sidan. Mnga av dessa program r fri mjukvara, t.ex. SpamAssassin eller Bogolter. Dessa bygger i allmnhet p statistik ver vilken typ av ord som ingr i vissa typer av brev, och mste frst trnas p en korpus av existerande skrppost, samt existerande godknd post. En annan typ av skrppostsprr anvnder svartlistning och frbjuder helt vissa epostservrar att ansluta sig till den egna epostservern om det r knt att dessa servrar tillhr knda skrppostavsndare. Dessa program gr mest nytta om de installeras p din epostserver, och mnga internetleverantrer anvnder dem idag regelmssigt fr att begrnsa skrppostproblemet. Om detta inte r gjort p den epostserver du anvnder, nns mjligheten att kra den frsta typen av program lokalt p den egna datorn. Metoden fr att gra detta varierar mellan 391

Kapitel 11 Tillmpningsprogram alla typer av epostklienter och det gr drfr inte att ge ngon generell beskrivning av hur detta skall g till.

11.4

Chattprogram

Chattprogram (engelska: chat, instant messaging) nns i mnga former. De r alla mer eller mindre vidareutvecklingar av IRC, (Internet Relay Chat) som fr vrigt fortfarande anvnds en hel del.32 Chattprogram innebr att textmeddelanden som inte r lngre n enstaka rader kan verfras mellan anvndare p Internet, till skillnad frn epost, som ju r tnkt att anvndas fr fullstndiga brev. Chatt ger istllet mjlighet till direkt dialog. Samtliga chattprogram bygger p klient-server-system dr anvndarna ansluter sina klienter till chattservrar. Medan IRC bygger p att anvndarna aktivt ansluter sig till en viss grupp dr ett visst mne diskuteras, r de personliga chattprogrammen, varav urtypen r Mirabilis ICQ (I-seek-you) avsedda att vara pslagna hela tiden, och uppmrksammar anvndaren p om ngon annan Internetansluten anvndare vill kommunicera med dem. Meddelanden kan ocks lagras, och ibland kan ven hela ler skickas till andra anvndare via chattprogrammet. Flera fretag har tillverkat chattprogram, och mnga av dem r inte kompatibla med varandra; anvndarna kan allts inte kommunicera med andra anvndare som har installerat ett annat chattprogram. I GNU/Linux r chattprogrammet Gaim33 nst intill helt dominerande. Det fljer ocks med som standardkomponent i de esta distributioner. Detta program kan kommunicera med svl AOL Instant Messager (AIM), ICQ, MSN Messenger, Yahoo Messenger, IRC, Jabber, Gadu-Gadu, och Zephyr.

11.5

Peer-to-peer

Nra beslktade med chattprogrammen r de s.k. peer-to-peer-programmen, kort kallade P2P-program. Peer-to-peer blir p svenska nrmast like-till-like eller kompis-till-kompis. Dessa program r utformade enbart med syftet att olika internetanvndare skall kunna utbyta ler med varandra. Oftast r det musik och lmer som byts, och sllan r detta frfarande srskilt lagligt.
detta sammanhang kan det vara lmpligt att tipsa om IRC-servern irc.freenode.net dr det nns kanaler fr att diskutera i princip alla POSIX-system. 33 Se: http://gaim.sourceforge.net/
32 I

392

11.6 Ombrytningsprogram och typsttning Urtypen fr peer-to-peer-programmen var Napster, ett program som utvecklades av ett fretag med samma namn och som sedermera kptes upp och mer eller mindre lades ned. En hel uppsj med beslktade program har emellertid dykt upp i dess stlle, och det r omjligt att rkna upp dem alla hr. De esta peer-to-peer-program av den hr typen nns i motsvarande versioner fr GNU/Linux, ofta utvecklade mycket snart efter att ett nytt sdant program introducerats. Till exempel nns klienten valknut fr Direct Connect och en ofciell klient fr det distribuerade systemet Bittorrent.

11.6

Ombrytningsprogram och typsttning

Ombrytningsprogram, typsttningsprogram eller desktop publishing-program (DTP-program) r en typ av program fr att utfra professionellt layoutarbete. Under 1960- och 1970-talet ersattes de gamla sttmaskinerna p tryckerier hr i landet med speciella datorer som anvndes fr att stta t.ex. bcker och tidningar. Nr Apple Macintosh introducerades uppstod snart en rad program som kunde anvndas av noviser fr enkel typsttning. Bland dessa fanns bl.a. det populra Adobe PageMaker. En rad professionella program uppstod ocks: Quark Xpress, RagTime, Adobe InDesign och Adobe FrameMaker hr till denna grupp. Vissa mindre tidningar anvnder dock ven Adobe PageMaker professionellt. De esta av dessa program krs nnu p Apple Macintosh i professionella sammanhang. Fr GNU/Linux nns inget riktigt bra fritt alternativ fr ombrytning. Det nns inte ens ngra proprietra program. Det hade varit ltt fr Adobe att gra en utgva av FrameMaker fr Linux, eftersom programmet redan r anpassat fr POSIX-systemet Solaris, men de har hittills valt att inte gra detta. Ett program som nnu utvecklas r Scribus, som verkar mycket lovande och stndigt frbttras i hg takt.34 Fr enklare arbeten kan eventuellt KWord eller OpenOfce.org Draw anvndas. Fr matematisk text och annan lpande text, t.ex. vetenskapliga uppsatser, r LaTeX ett bra alternativ fr den som orkar lra sig det. LaTeX r Leslie Lamports variant av Donald Knuths program TeX, ett typsttningsprogram som ursprungligen skrevs av Knuth fr att typstta hans egna bcker.
34 Se:

http://www.scribus.net/

393

Kapitel 11 Tillmpningsprogram LaTeX skiljer sig helt frn de ombrytningsprogram som nmndes i brjan genom att det inte r graskt, bara resultatet r graskt. Sjlva rtexten och textformateringskommandon skrivs i form av en ren textl, som i praktiken blir till ett datorprogram som talar om hur texten skall se ut. Texten mste sedan kompileras med LaTeX, och resultatet blir en PostScript- eller PDF-l. LaTeX r ganska komplext och svrt att lra sig, men om du skriver matematiska eller tekniska artiklar mste du lra dig LaTeX, det r helt enkelt standardprogrammet fr att skriva sdana artiklar. Fr att lra sig LaTeX krvs det att du lser en hel bok eller ngon av de olika LaTeX-manualer som nns p Internet. LaTeX kommer i olika distributioner, precis som Linux. Det som skiljer distributionerna r en rad tillgg, ordlistor och liknande. Den vanligaste distributionen fr GNU/Linux r teTeX.35 Denna bok r skriven med LaTeX.

11.7

Multimedia

Att anvnda datorn som multimediamaskin blev populrt under slutet av 1990-talet, d era datorer sldes som multimediadatorer. Detta brukade betyda att datorn hade ljudkort, CD-ROM-spelare och ett par lsa hgtalare med frstrkare.36 Det fanns program fr att spela upp ljud och video mycket tidigt, och det fanns speciella multimediaskivor att kpa med varierande innehll. Samtidigt pgick utvecklingen av digitalradio (DAB) i ett EUnansierat projekt med namn EU-147. Projektet innebar en chans fr tyskarna Karlheinz Brandenburg och Jrgen Herre att utveckla en del av MPEG-standarden37 som kallades MPEG Audio Layer 3, senare mest knt som MP3. MP3-formatet var avsett att anvndas av digital elektronik, men implementerades ven i form av programvara. En sdan programvarukomponent som kan bde skapa och spela upp ler innehllande komprimerat ljud eller bild kallas codec, efter engelskans encoder-decoder. Att en codec fr MP3-formatet fanns tillgnglig frndrade inte speciellt mycket. Den stora frndringen p multimediafronten intrffade 1994-1995. Internettillgngen brjade nu vxa explosionsartat. Samtidigt spreds program som kunde komprimera ljudet frn CD-skivor till formatet
projektet fr LaTeX i sig nns p http://www.latex-project.org/. esta r nog ganska ense om att beteckningen multimediadator egentligen betydde speldator. 37 MPEG, Motion Picture Experts Group, r en liten standardkommit som sysselstter sig med att skapa standarder fr komprimering av ljud och bild.
36 De 35 Sjlva

394

11.7 Multimedia MP3, och spelarprogram som kunde spela upp dem blev allt vanligare. Tobias Bading skrev d ett program med namnet MAPlay (MPEG Audio Player), som kunde anvndas fr att spela MP3-ler p POSIXsystem. Hsten 1999 hade anvndningen av MP3 vuxit och blivit mycket utbredd. I detta lge uppstod den mycket populra lbytartjnsten Napster, och med denna fljde en uppsj lbytarprogram av olika slag. Stora skaror internetanvndare brjade nu byta musik i form av MP3-ler. Ungefr samtidigt plockade den franska hackaren Jerome Rota ut codec:en fr MPEG-4-videokomprimering ur ett Microsoft-program, varefter han kombinerade den med en codec fr MP3-ljud och mjligheten att spara resultatet av kompressionen i en s.k. AVI-l (Audio Video Interleave). Detta MPEG-4-video plus MP3-ljud kallade han DivX ;-) fr att driva med videoformatet DIVX (Digital Video Express) som utformats av ett amerikanskt fretag.38 P grund av patentproblem rrande MP3-formatet (patenten p formatet gs av Fraunhofer Institut Erlangen) som gjorde det svrt att p ett tillfredstllande stt anvnda MP3-ler i fri mjukvara, har ett parallellt komprimerat ljudformat med namnet Ogg Vorbis utvecklas. Sjlva ljudformatet r det som kallas Vorbis, medan Ogg r namnet p lformatet dr bland annat denna typ av komprimerat ljud kan lagras. Detta format har utvecklats med tanken att det skall vara fritt frn patenterad teknik.39 Formatet har ersatt MP3 som standardljudformat i t.ex. Red Hat Linux av detta skl. Ett helt frlustfritt format har ocks utvecklats, under namnet FLAC (Free Lossless Audio Codec). Detta anvnds av audioler med stor hrddisk som inte vill frlora ngon kvalitet frn sina CD-skivor: FLAC tar inte bort ngon som helst information ur den ursprungliga signalen, bara komprimerar den. FLAC-ler r mindre n ren PCM-data (som anvnds p CD-skivor) men inte mycket mindre, bara runt 50% av originallstorleken. Uppspelning av CD- och DVD-skivor, samt uppspelning och kopiering av medialer bestende av MP3- eller Ogg Vorbis-ler med musik och DivX-lmer r numera vad gemene man frknippar med multimedia p datorer. Denna situation r inte omtyckt av mediaindustrin av diverse skl, som vi inte har utrymme att avhandla hr.
38 Det riktiga DIVX var avsett att gra det mjligt att hyra en lm och titta p den i 48 timmar, varefter en frnyelseavgift skulle betalas. Filmen, en form av DVD-skiva, kunde dremot behllas. Projektet blev inte alls lyckat. 39 Stndiga ppekanden gr gllande att tekniken i Ogg Vorbis skert r patenterad men hittills har ingen kunnat peka p ett patent som visar att det verkligen skulle vara s.

395

Kapitel 11 Tillmpningsprogram

11.7.1

Ljudsystemet i krnan

Systemet fr att visa bild i Linux har redan beskrivits i kapitel 6 om fnstersystemet X. Vi skall dremot gra en kort presentation av ljudsystemet. Ljudet i Linuxkrnan hanteras genom ett blockenhetssystem i /dev. Till en brjan fanns det ett ftal drivrutiner fr de allra vanligaste ljudkorten i krnan, kopplade till /dev/audio. Efterhand som ljudkorten blev mer avancerade tillkom er blockenheter och enhetsler, och till sist byggde fretaget 4Front Technologies en krnmodul som kunde hantera i princip alla ljudkort p ett likvrdigt vis. Denna ck namnet Open Sound System, OSS. I och med version 2.6 av Linuxkrnan byts OSS helt ut mot ett nytt och bttre ljudsystem med namnet Advanced Linux Sound Architecture, kort kallat ALSA. ALSA r till strsta delen kompatibelt med OSS, och som anvndare mrker du nog bara skillnad nr du arbetar med professionella ljudsystem fr hrddiskinspelning eller med MIDI.40 Rent ljud i form av digitala strmmar gr ut till ljudkortet via blockenheten /dev/dsp. Det kommer sedan att blandas med annat ljud, t.ex. frn CD-spelare eller ljudkortets MIDI-syntesenhet (om en sdan nns). Det kan hnda att det blir brk om /dev/dsp ifall tv program samtidigt frsker anvnda enheten. Av detta skl har ljudhanterande demoner uppfunnits. Detta r program som har till uppgift att blanda samman digitalt ljud innan det skickas till /dev/dsp. Skrivbordsmiljn GNOME har lnge anvnt en sdan ljuddemon som heter esd, Enlightenment Sound Daemon,41 medan KDE anvnder artsd, (Analog Real-time Synthesizer Daemon). Ingen av dessa bda demoner r egentligen tillrckligt bra fr professionellt bruk, frmst drfr att bda introducerar ngon form av frdrjningar i ljuduppspelningen. Drfr har nnu en ljuddemon med namnet jackd (JACK Audio Connection Kit)42 utvecklats. JACK r i en helt annan klass n de andra demonerna: det kan t.ex. be Linuxkrnan att ge programmet speciell prioritet fr att ka ljudgenomstrmningen, om krnan har std fr lgfrdrjningsschemalggning (realtidsstd). JACK kan ven utnyttja Steinbergs ASIO-protokoll (Audio Stream Input Output) som nns implementerat i professionella (dyra) ljudkort. ASIO-protokollet r till fr att minimera frdrjningar
40 MIDI, Music Instrument Digital Interface r ett grnssnitt fr att ansluta digitala musikinstrument till varandra, eller till datorer. 41 Denna kommer ursprungligen frn fnsterhanteraren Enlightenment (upplysningen). 42 Det nns dessutom ett CD-ripparprogram med samma namn, s det kan ibland vara lite frvirrande att frska hitta Jack. Se: http://jackit.sourceforge.net/

396

11.7 Multimedia

Figur 11.6: XMMS r en GTK-baserad mediaspelare, hr med ett av de fantasifulla skal som utmrker vissa av dessa program.

i ljuduppspelningen. JACK kan ocks skicka ljud mellan olika sjlvstndiga tillmpningsprogram och anvnds ven fr MIDI-signaler. JACK fungerar bara med det nya ljudsystemet ALSA, inte med det gamla OSS, och anvnds mest av program avsedda fr ljudeditering eller hrddiskinspelning. Fr ditt dagliga bruk av ljudet i GNU/Linux rcker det gott om dina program kan anvnda OSS eller ALSA direkt utan mellanliggande ljuddemoner.

11.7.2

Mediaspelare

Mediaspelare r program som kan spela upp ljud och video. Program som MAPlay och mpg123 var de frsta mediaspelarna fr GNU/Linux och krdes frn kommandoraden. Ngot enstaka program fr att spela upp MPEG-lmer utan ljud fanns ocks. Nr den trevliga mediaspelaren WinAMP (Windows amplier) blev populr r 1997 ledde det snart till olika frsk att stadkomma likadana program fr GNU/Linux. De mest framgngsrika r det svenskutvecklade XMMS, X Multimedia System43 och KDE-projektets Noatun.44 Bda spelar svl MP3- som Ogg Vorbis- och FLAC-ler. Ingen av de bda spelarna har riktigt alla egenskaper som kan frvntas av en mediaspelare, utan r primrt inriktade p att spela upp ljud, ven om de ven kan spela vissa videoformat, antingen p egen hand eller med hjlp av olika insticksprogram. Ett ytterligare ljudinriktat multimediaspelarprogram r GNOMEprojektets RhythmBox, som r gjort fr att efterlikna Apple Computers
43 Se: 44 Se:

http://www.xmms.org/ http://noatun.kde.org/

397

Kapitel 11 Tillmpningsprogram iTunes-program. Detta program hjlper till att organisera musiksamlingen och gr det ltt att snabbt hitta den skta musiken. Om du vill spela upp lmer, svl frn DVD-skivor som frn DivX och andra medialer, brukar i huvudsak tre olika program anvndas: MPlayer,45 Xine,46 och VLC (Video LAN Client).47 Det sistnmnda programmet var ursprungligen avsett som klient fr TV-utsndningar via Internet, men fungerar ven utmrkt som mediaspelare. VLC stdjer ven DTS-ljud, ngot som nog er program snart kommer att gra. MPlayer r den spelare som kan hantera est videoformat, och om den inte sjlv kan spela upp ett format kan den anvnda en DLL-l frn Microsoft Windows som insticksprogram fr att avkoda video. De esta som anvnder MPlayer brukar kra programmet direkt frn skalet. Xine och VLC r bda utformade primrt fr graska anvndargrnssnitt. De olika projekten utbyter stora mngder information, och alla tre anvnder programbibliotek frn projektet FFmpeg fr att hantera era videoformat. Alla tre programmen kan spela upp DVD-skivor med hjlp av tv programbibliotek som heter libdvdread och libdvdcss. Det frsta biblioteket r till fr att lsa av skivan (utan att montera den som ett lsystem) medan det andra r till fr att dekryptera innehllet.48 Program av denna typ har vllat en del rabalder, men efter att lmindustrins frsk att hindra program av denna typ helt har misslyckats, fr det hela anses vara verstkat. Det r ven mjligt att anvnda den proprietra mediaspelaren Real Player under GNU/Linux genom att ladda ner den frn fretagets hemsida. Programmerarna p Real Networks arbetar numera enligt en ppen kllkods-modell av samma art som Mozilla eller OpenOfce. org med en spelare med namnet Helix DNA Client.49 Helixklienten r dock inte fri mjukvara.

11.7.3

Rippning

Med rippning av CD- eller DVD-skivor avses att innehllet verfrs frn skivan till hrddisken. Vissa delar av detta frfarande beskrivs under avsnitt 7.4 om CD-brnning, avseende audio-CD.
http://www.mplayerhq.hu/ http://xine.sourceforge.net/ 47 Se: http://www.videolan.org/ 48 libdvdcss dekrypterar skivan genom att prova era olika metoder: frst frsker det att anvnda en knd kryptonyckel och p s vis imitera en existerande DVD-spelare. Om detta inte fungerar kncker den helt sonika nyckeln med en av tv mjliga metoder. 49 Se: https://helixcommunity.org/
46 Se: 45 Se:

398

11.8 Diverse Det nns en mngd program som r avsedda enbart fr att kopiera audio-CD och konvertera dem till t.ex. MP3-ler, ett sdant r Grip.50 Detta program anvnder i sin tur en rad andra program, bl.a. cdparanoia, lame och oggenc fr att kopiera CD-ljudet till hrddisk, och drefter komprimera det till MP3, Ogg Vorbis eller FLAC. Grip fungerar s att det kopierar frsta spret till hrddisken, och sedan brjar komprimera det frsta spret direkt nr detta r kopierat, parallellt med att andra spret lses in, vilket gr att det gr snabbt att rippa stora mngder CD-skivor. ven DVD-skivor kan rippas, i detta fall till t.ex. DivX- eller rent MPEG-format. Ett populrt format r MPEG-1 video, eftersom detta anvnds av Video CD-formatet (VCD), eller MPEG-2 som anvnds i Super VCD, SVCD. Dessa format kan brnnas p en eller era CD-skivor och kan spelas upp i de esta moderna DVD-spelare, men ger inte mycket hgre kvalitet n VHS-kassetter. Ett vanligt program fr detta ndaml r transcode.51 som i sin tur anvnds av era graska program. Att rippa DVD-skivor r ganska komplicerat och mjligen frbjudet. (Rttslget r oklart.) Den som nskar gra detta kan skert flja lnken till transcode och lra sig mer om hur det hela gr till.

11.8

Diverse

Hr fljer en lista av mindre program och de behov de kan fylla. Webbadresser anges inte fr programmen, men de har ofta namn som r s unika att du ltt kan hitta dem med en Internetskning om du skulle vilja. Listan ver de populra programmen ndrar sig hela tiden, s det som nns upptaget hr kan snart vara inaktuellt. En webbplats som vervakar alla nya program r freshmeat.net. Arkivhanterare r till fr att hantera larkiv av den typ som anvnds fr att packa ner program- eller datalsamlingar, eller fr att gra skerhetskopior av delar av ett lsystem. Det frsta riktigt populra graska arkivhanterarprogrammet var WinZip. I GNU/ Linux nns File Roller, som r en del av GNOME och KArchiver fr KDE. Programmen hanterar larkiv av typen .zip, .tar, .gz, .bz2, .rpm, .lha, .rar o.s.v. Utvecklarmilj frn engelskans Integrated Development Environment, integrerad utvecklarmilj, (IDE) r ett program att programmera i.
http://grip.sourceforge.net/ vidare p: http://www.theorie.physik.uni-goettingen.de/ ~ostreich/transcode/
51 Se 50 Se:

399

Kapitel 11 Tillmpningsprogram Det skter editering, kompilering och versionshantering av alla ler som ingr i ett programmeringsprojekt. Det r inte alla programmerare som tycker om utvecklarmiljer, men fr dem som gr det nns t.ex. KDE-projektets KDevelop eller det alltmer uppmrksammade Eclipse att tillg. (Eclipse r skrivet helt i programsprket Java.) MIDI-inspelningsprogram r program fr att lagra ljud som spelas p keyboard eller elpiano och som anslutits via MIDI-grnssnittet, som nns inbyggt i de esta professionella eller semi-professionella ljudkort. De kan dels fungera som en bandspelare fr MIDIsignaler, men r ocks anvndbara fr att gra t.ex. notutskrifter. Det frsta programmet av detta slag som kom till allmn anvndning var Steinbergs Cubase fr Atari ST (senare ven fr Macintosh och Microsoft Windows). I Linux r bl.a. programmen Rosegarden och MusE (Music Editor) avsedda att ge motsvarande funktionalitet. Stdet fr att bland annat emulera VST-mjukvarusyntar eller att gra egna, linuxspecika mjukvarusyntar har kat allt eftersom programmen har utvecklats. Linuxmotsvarigheten till VSTi (mjukvaruinstrument) heter DSSI (DSSI Soft Synth Instrument). Ljudediteringsprogram r avsedda fr hrddiskinspelning av digitalt ljud, d.v.s. inte fr digitala instrument (som med MIDI) utan fr rent ljud. Populra program i denna genre r Cubase VST (Virtual Studio Technology) eller CoolEdit fr Microsoft Windows. Fr GNU/Linux nns bl.a. Audacity som r lttanvnt och semiprofessionellt, och Ardour som r svranvnt och mycket professionellt. Eftersom all form av ljudeditering stller speciella krav p Linuxkrnan har speciella musik- och multimediadistributioner utvecklats som r inriktade p ljust sdant. Genealogiprogram anvnds fr slktforskning och hjlper till att bygga en databas ver slktingar och ritar slkttrd med mera. I Sverige anvnds framfr allt program som DISGEN, som bara r tillgngliga fr medlemmar i en viss slktforskningsfrening. Fr GNU/Linux nns bl.a. programmet GRAMPS (Genealogical Research and Analysis Management Programming System) som ven r versatt till svenska. Datorspel r inte lika vanliga fr GNU/Linux som fr t.ex. Microsoft Windows. Det nns ett antal vanliga spel som fljer med skrivbordsmiljerna GNOME och KDE, nstan alla r av typen brdspel. Mnga av dem inkluderar mjligheten att via Internet an400

11.8 Diverse sluta sig till en spelserver och hitta en slumpvis motpart att spela med. De p senare r s populra rst person shooter-spelen (Doom, Quake, Unreal o.s.v.) nns ibland fr GNU/Linux, men detta r i princip undantag som bekrftar regeln att nya spel till Microsoft Windows inte nns till GNU/Linux. Om ditt enda intresse hr i livet r att spela nya datorspel kan GNU/Linux inte rekommenderas, ven om det nns mnga tricks fr att trots allt f dessa program att fungera i GNU/Linux. En populr spelform r emulatorn MAME (Multiple Arcade Machine Emulator) som kan emulera de esta ldre s.k. arkadspel som nnu kan hittas i pizzerior och liknande. Detta program fordrar dock att du har tillgng till programmen (ROM) som fanns i dessa spel. Situationen fr spel till GNU/Linux frndras s sakteliga: allt er spel dyker upp, och vid en viss punkt kan vi nog rkna med att spel levereras s att de kan kras p bde Windows och GNU/ Linux.52

52 Det gr ven att anvnda Windowsemulatorer fr att spela Windowsspel i Linux, se sidan 413.

401

Kapitel 11 Tillmpningsprogram

402

B ILAGA

Att byta frn Windows till GNU/Linux

Roky Erickson? Vad r det fr skit? Det lter ju inte alls som Pet Shop Boys! Oknd Detta avsnitt r avsett att ta upp ngra av de speciella skillnader som nns mellan de tv operativsystemen Microsoft Windows och GNU/ Linux. Tv saker kommer speciellt fokus att lggas p: De som tidigare anvnt Windows p en avancerad niv, och snabbt vill kunna gra sig hemmastadda, genom att lokalisera vilka delar av GNU/Linux som svarar mot vlbekanta delar av Windows. Har du aldrig anvnt Windows kan du helt hoppa ver denna del av appendixet. Att anvnda GNU/Linux i en blandad milj dr bde Windows och GNU/Linux skall existera sida vid sida, och samtidigt kunna utnyttja respektive systems resurser. Bda delarna kommer att behandlas om vartannat, och gr inte helt att skilja t. Fr att kunna administrera en blandad milj mste du t.ex. ha goda kunskaper inom bde GNU/Linux- och Windowsadministration.

Bilaga A Att byta frn Windows till GNU/Linux Liksom analogin i citatet ovan antyder r det i ngon mening ganska dumt att jmfra Microsoft Windows med GNU/Linux och andra POSIX-system. Detta gller i bda riktningarna, och gller exempelvis ocks jmfrelser mellan Windows och DOS. En anvndare av ordbehandlingsprogrammet Word Perfect fr DOS tryckte exempelvis Shift+F3 fr att spara, och skulle kunna hvda att det r ologiskt att du ska trycka Ctrl+s i Windows. Detsamma gller alla former av gnll som bottnar i att anvndaren r besviken p att GNU/Linux inte r Windows. Att byta till GNU/Linux r att byta operativsystem, det r inte en uppgradering av Windows till en nyare version. Detsamma skulle glla i andra riktningen. Windows r inget standardiserat operativsystem utan en produkt frn Microsoft. Notera dock att grundlggande POSIX-funktionalitet faktiskt nns implementerad i Windows frn och med Windows NT, dock inte som standard utan i form av tillggspaketet Windows services for UNIX. Anledningen till detta r antagligen att vissa fretag och myndigheter uppstllt en policy som sger att operativsystem som anvnds mste flja denna standard. Mnga anser dock att denna implementation r s bristfllig att den inte gr att anvnda, t.ex. FAQ:n fr nyhetsgruppen fr Win32-programmering[19]. I senare versioner av Windows Services for UNIX har stdet fr POSIX blivit bttre. Utver detta kan nmnas att Microsoft ven utvecklat och marknadsfrt ett eget renodlat POSIX-operativsystem fr Intel-familjen med namnet Xenix. Det r lgn att pst att Microsoft skulle ha ngot allvarligt emot konceptet med POSIX och UNIX som sdant i sjlva verket uppfattade Microsoft Xenix som sin framtida huvudprodukt, och det var frst Apple Lisa och Apple Macintosh-datorerna som ck dem att istllet satsa stora resurser p att utveckla ett graskt skal ovanp det dvarande dominerande operativsystemet DOS. Detta kom med tiden att ombildas till ett eget operativsystem i och med Windows 95, som var den frsta variant av Windows som slutligen slppte beroendet av DOS.

A.1

Affrsmodellen och kundperspektivet

Jag har redan i kapitel 3 p sidan 111 beskrivit en del egenskaper som knntecknar fri mjukvara. Vad knntecknar d proprietr mjukvara? Proprietr mjukvara utvecklas alltid primrt i vinstsyfte. Detta utesluter inte att utvecklarna nner andra njen n pengar i sitt arbete, men sdana prioriteringar r fr programvarufretaget alltid av underordnad betydelse. Mnga utvecklare av fri mjukvara, i synnerhet distributrer som Red Hat eller Novell, r ocks primrt drivna av vinst404

A.1 Affrsmodellen och kundperspektivet intresse. Nr del gller stora delar av programvaruprojekten som utgr en distribution: GNU, Linux och X.org-servern r det inte vinstintresset som r i centrum, utan teknik och gemenskap. ven detta beskrevs utfrligt i avsnittet om fri mjukvara. Proprietr mjukvara alltid en produkt. Nr du kper och anvnder produkten, anser du dig inte vara en del av utvecklarlaget bakom produkten, och du vill ofta ha det p det viset ocks. Nr det gller fri mjukvara, kan du bara kpa den som en tjnst. Du kper allts inte sjlva mjukvaran denna r oftast mjlig att ladda ned frn Internet utan tjnsten att driftstta och hjlp med att anvnda mjukvaran. Om du inte kper fri mjukvara som en tjnst, skall du betrakta dig sjlv som medlem av ett projekt, inte som kund. r du inte intresserad av att vara medlem av ngot projekt, br du vnda dig till ngot fretag (Red Hat, Novell o.s.v.) och kpa fri mjukvara som en tjnst. Bda dessa kategoriseringar gller i dubbel mn om du r i frd att kpa in ett operativsystem till en organisation, men dr r tjnsteperspektivet det normala synsttet, och sledes inte srskilt verraskande. Som privatperson kommer du i princip att uppleva en kartong med en distribution av GNU/Linux som likvrdig med en kartong innehllande Microsoft Windows. Bda erbjuder ett visst anvndarstd (engelska: support) via telefon och Internet. I strre organisationer som vill infra operativsystem efterlyses ofta certieringar, vilket innebr att tekniker i en stdorganisation har utbildats av systemleverantren och godknts som kompetent att skta ett visst system. Microsoft har era sdana certieringar, men bde Red Hat och Novell har likvrdiga certieringsprogram.1 Varken proprietra eller fria mjukvaror erbjuder ngon som helst garanti fr att programmen skulle vara felfria. Datorprogram har alltid fel, och drfr vgar ingen utlova sdan garanti. En tjnsteorganisation tecknar avtal fr att skta viss drift med viss driftskerhet, och att nnas till hands fr anvndarstd under vissa specika tider. Detta skiljer sig inte alls mellan Windows och POSIX-system. Nr det gller Microsoft Windows specikt, s har detta operativsystem s stor spridning, att tillverkare av hrdvaror och mjukvaror r mna om att dessa skall fungerar tillsammans med Windows. Det r drfr oftast lttare att f nykpt hrdvara att fungera tillsammans med Windows. Som GNU/Linux-anvndare br du aktivt vlja sdana hrd- och mjukvaror som utger sig fr att fungera med GNU/Linux, medan du som Windowsanvndare, tack vare systemets dominerande stllning, kan ta fr givet att det hela kommer att fungera.
1 Du skall inte efterlysa en person som r certierad p Linux eller liknande saker, certiering r kopplat till distributioner.

405

Bilaga A Att byta frn Windows till GNU/Linux Nr det gller ldre hrdvara kan frhllandet ibland vara det motsatta: den kan vara ltt att anvnda i GNU/Linux, eftersom std fr den r en del av ett fritt mjukvaruprojekt, medan fretag som gtt i konkurs sllan utvecklar drivrutiner fr gammal hrdvara till nya Windowsversioner. Mycket hrdvara som fungerar problemfritt tillsammans med GNU/Linux eller Windows 3.11 fungerar inte alls med Windows 2000.

A.2

Viktiga olikheter

Ngra viktiga punkter som kan vlla huvudbry r skillnader som rder mellan alla POSIX-system och Microsoft Windows: Windows har ett graskt paradigm vilket innebr att alla verktyg fr systemet r skrivna fr att anvndas i det graska anvndargrnssnittet, inklusive alla administrativa program. I GNU/Linux anvnds mestadels kommandoradstolken till systemadministration, medan de esta tillmpningsprogram fr vardagsbruk r graska. Tillmpningsprogram som anvndarna r vana vid nns inte till GNU/Linux. Istllet nns liknande program med andra namn. Om du lser igenom kapitel 11 kommer du antagligen fram till vilka program som motsvarar vilka. (I vrsta fall kan behovet lsas genom att Windows emuleras p olika vis, se nedan.) Windows avskiljer lnamn med baktstllt snedstreck: \ (engelska: backslash) medan POSIX-systemen anvnder ett vanligt snedstreck (engelska: slash): /. Windows lsystem gr inte skillnad p stora och sm bokstver d t.ex. ett lnamn anges. Det gr alla POSIX-system: i Windows spelar det ingen roll om du anger C:\FOO.TXT fast len heter C:\ fOo.tXt. I GNU/Linux r detta tv olika positioner i lsystemets namnrymd. Windows anvnder s.k. enhetsbokstver, t.ex. C:, F: o.s.v. fr att beteckna en viss hrdvara. Detta bruk kommer frn DOS, som i sin tur plockat det frn operativsystemet CP/M. POSIX-lsystemen r helt abstrakta och skiljer inte p vilken enhet en l ligger p, och anvnder inte enhetsbokstver. Eftersom Windows inte r avsett att plockas snder i komponenter kan det vara svrt att se skarvarna, medan de i GNU/Linux r 406

A.3 Skalet mycket tydliga. Det r tydlig skillnad mellan komponenten Linux, GNU-verktygen, fnstersystemet X, och Skrivbordsmiljn, medan dessa komponenters motsvarigheter i Windows inte alltid r s ltta att urskilja.

A.3

Skalet

GNU/Linux kan starta skal motsvarande DOS-fnster i Windows, fr att hantera interaktiva anvndarkommandon. Dessa kan startas frn det graska grnssnittet som i GNU/Linux r fnstersystemet X, men ocks frn en terminal, vilket kan vara allt frn en anslutning i en serieport till en anslutning ver Internet frn andra sidan jorden. De esta GNU/Linux-system har ocks ett antal konsoller tillgngliga om du trycker Ctrl+Alt+F1 till Ctrl+Alt+F6. Dessa r inte i sig skal, utan bara terminaler dr ett skal kommer att startas om du loggar in med ett giltigt anvndarnamn. Ett vanligt tankefel bland fre detta DOS- och Windowsanvndare r att tro att skalet i GNU/Linux-system r detsamma som det DOSskal som tidigare lg under Windows, d t.ex. Windows startades frn DOS. Frmodligen har detta att gra med en intuitiv vantolkning av innebrden i den text som matas ut p skrmen d Linuxkrnan startas, och som i sjlva verket bara r just utskrifter frn krnan; detta r inte frga om utskrifter i ngot skal det nns ingenting under Linuxkrnan. Nr Linuxkrnan har startat, kan den dremot ppna en eller era terminaler, dr skal i sin tur kan startas, och krnan ligger d allts under skalen, inte tvrt om. Krnan r i sig abstrakt och har inget utseende vare sig i Windows eller GNU/Linux den ger sig bara tillknna genom olika meddelanden. Det r helt mjligt att kongurera GNU/Linux s att det bara gr att logga in i det graskt, via fnstersystemet X. Flera inbyggda GNU/ Linux-system har inget skal alls. Sledes: GNU/Linux kan starta skal, men skalet startar inte GNU/Linux. Kommandoprompten i t.ex. Windows 2000 fungerar likadant. Kommande versioner av Windows skall enligt uppgift vara frsedd med ett nytt, kraftigt frbttrat skal som gr under arbetsnamnet Windows Shell (WSH).

A.4

Lika fr lika

Hr fljer en rad platser eller ting som nns i de esta operativsystem; deras plats i Windows respektive deras plats i GNU/Linux. 407

Bilaga A Att byta frn Windows till GNU/Linux Lagringsplats fr systeminstllningar Windows: frr i C:\CONFIG.SYS, sedan C:\Windows\WIN.INI men numera i Windows Registry, som kan bearbetas med bde kontrollpanelen och direkt med programmet regedit.exe. Registryn ligger i sin tur spridd ver lerna SYSTEM.DAT och USER.DAT som ligger i C:\Windows i Windows 95/98, eller SAM, SECURITY, SOFTWARE, SYSTEM, DEFAULT och NTUSER.DAT som ligger i C:\WINNT\System32\cong i Windows NT eller Windows 2000. GNU/Linux: i katalogen /etc lagras alla systeminstllningar i alla POSIX-system. Oftast i ren textform. /etc/passwd och /etc/ shadow svarar mot Windows NT:s SAM-l (Security Access Manager) (se avsnitt 2.3.4 p sidan 48). Lagringsplats fr anvndarna Detta omfattar en lagringsplats fr svl sparade dokument, som instllningar och tillgg i operativsystemet som den enskilde anvndaren har gjort frn sitt konto. Windows: Tidigare verallt p den primra hrddisken C:, sedan i C:\My Documents (eller motsvarande svenska Mina Dokument) eller C:\Windows\Proles\My Documents, sedan till sist i C:\Documents and Settings\Anvndarnamn. Vissa ntverkssystem med Windows anvnder en ntverksbaserad H:-enhet fr att anvndarna skall kunna lagra sina ler p en central lserver.2 De esta Windowsinstllningar, t.ex. mappars synlighet och tillgng till systemler, mste gras p varje dator som anvndaren loggar in p. I Windows Registry lagras ocks anvndarinstllningar (proles) i USER.DAT eller NTUSER.DAT. GNU/Linux: alla anvndarens egna instllningar och dokument lagras i dennes hemkatalog. Instllningar fr olika program lagras ofta i form av dolda ler, s.k. punktler. Se vidare i avsnitt 2.3.5 p sidan 74 samt avsnitt 2.3.5 p sidan 73. Hemkatalogen kan lagras p en central lserver och delas mellan era datorer p detta vis, eftersom POSIX-system kan montera en katalog vart som helst i lsystemet; t.ex. kan /home, platsen dr de esta hemkataloger ligger, monteras p en NFS-baserad lserver p ntverket. P s vis fljer hemkatalogen anvndaren, oavsett vilken dator denne loggar in
2 Som

i sin tur anvnder Microsoft-varianten av protokollet SMB.

408

A.4 Lika fr lika p. USER.DAT eller NTUSER.DAT svarar mot instllningar i anvndarens hemkatalog i POSIX-systemen, men skrivbordssystemet GNOME har byggt en egen Registry-liknande komponent, som sedan i sin tur lagrar undan instllningarna i anvndarens hemkatalog. Uppstartler Detta innefattar startupskript och initiering; program som skall kras d datorn startas. Windows: frr i C:\AUTOEXEC.BAT, numera registernycklarna i HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\Run. GNU/Linux: programmet /sbin/init. Detta anropar sedan olika varianter av startupskript, normalt i /etc/rcN.d som i sin tur lnkar till skript i /etc/init.d. Se vidare avsnitt 5.4.3 p sidan 189. Bakgrundsprogram Detta betecknar automatiskt startade program som alltid skall vara igng. Windows: panelhnor i System Tray (sm ikoner lngst nere till hger i aktivitetsfltet), samt Services i kontrollpanelen. Startas antingen som en riktig servertjnst, eller via registerposten HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Run GNU/Linux: demoner som startas antingen av init-processen vid systemuppstart via /etc/inittab eller startup-skripen i /etc/init.d. Se vidare avsnitt 2.3.3 p sidan 42 och avsnitt 5.4.3 p sidan 189. Utver detta kan varje anvndare sjlv starta demonprogram och skrivbordssystemen gr det ofta mjligt att starta era sm tillgg automatiskt vid inloggning i det graska systemet. Dessa har i svl GNOME som KDE stora likheter med Windows sm panelikoner. Krnan Detta beskriver vart operativsystemets krna lagras och hur den startas. Windows: I DOS startas C:\IO.SYS och C:\MSDOS.SYS, senare (i Windows 95) enbart den frsta (MSDOS.SYS var d 0 byte stor). I Windows 3.11: de fregende samt C:\Win.com som i 409

Bilaga A Att byta frn Windows till GNU/Linux sin tur laddar och kr C:\WINDOWS\SYSTEM\krnl386.exe. I Windows NT och Windows 2000: len C:\ntldr som i sin tur laddar och kr C:\NTDETECT.COM som detekterar hrdvara, och sedan laddar och kr C:\Winnt\System32\NTOSKRNL. EXE som innehller sjlva krnan. GNU/Linux: Hr startas GRUB eller LILO p egen bootpartition (ligger i ra diskblock utanfr lsystemet), som laddar och kr ett menysystem, som i sin tur kan ladda och kra bde Linuxkrnor och olika Windows-varianter. Linuxkrnan ligger ofta i bootpartitionen med namnet vmlinuz och laddas in och startas av GRUB eller LILO. Dynamiska lnkbibliotek Detta beskriver lagringsplatsen fr dynamiska lnkbibliotek (programbibliotek) som skall anvndas av hela systemet. Windows: bestr av DLL-ler (Dynamic Link Library) som ligger i C:\Windows, C:\Windows\System eller C:\Windows\System32. Versionshanteringen skts genom att ett versionsnummer kodas in i DLL-len. GNU/Linux: bestr av .so-ler som ligger i /lib, /usr/lib, eller /usr/ local/lib. Versionshanteringen skts genom att .so-len ges ett unikt sufx fr varje ny version, t.ex. libfoo.so.2. Skriptler Detta beskriver systemet fr skriptler med sm interpreterade datorprogram fr att utfra vissa automatiserade uppgifter i operativsystemet. Windows: tidigare .BAT-ler (batch, speciellt i DOS), numera .VBS (Visual Basic Script). ven perl anvnds av mnga Windowsutvecklare. Skriptmotorn som kr VBS-skript kan plugga in olika moduler fr att kra skript i alla mjliga sprk. GNU/Linux: Bash-skript (se avsnitt 2.3.9 p sidan 90), Perlskript och Pythonskript. Alla kommandointerpretatorer kan anvndas, s ven udda sprk som awk eller TENEX C Shell frekommer. Utvecklingsmilj Programutvecklingsverktyg fr program till operativsystemet. 410

A.4 Lika fr lika Windows: frmst Microsoft Visual C++ och Microsoft Visual Basic. ven Borlands kompilatorer r populra. Samtliga mste kpas till separat.3 Kompilatorn som anvnds under Microsoft Visual C++ heter cl.exe och Make-verktyget som anvnds heter nmake. Allt annat arbete fr att frbereda kompilering skts av Visual Studio sjlvt. GNU/Linux: GNU C Compiler, Make och GNU Autotools. Fljer oftast med operativsystemet. Ngon integrerad utvecklingsmilj fr editering och kompilering anvnds oftast inte, istllet anvnds rena texteditorer som VIM och EMACS, drefter anropas GNU Make direkt fr att bygga programmen. Om ngon integrerad utvecklingsmilj anvnds s r det sannolikt Eclipse. Drivrutiner Detta beskriver systemet fr att hantera sm kodblock som anvnds av operativsystemets krna fr att skta hanteringen av viss hrdvara. Windows: en stor databas med identieringsinformation och drivrutiner som ofta utvecklats av hrdvaruleverantren medfljer Windows. Andra drivrutiner medfljer hrdvaran eller nns p leverantrens hemsida p Internet. Drivrutinerna levereras s gott som aldrig med kllkod. Tillverkarna r mna om att se till att deras hrdvaror stdjs av Windows. Drivrutinerna ligger ofta som moduler i form av .SYS-ler4 ngonstans i C:\Windows-katalogen och kopplas till krnan under krning. Till varje .SYS-l svarar en .INF-l som innehller metadata om drivrutinen och talar om vilka enheter den r till fr. GNU/Linux: stora uppsttningar drivrutiner medfljer Linuxkrnan och X.org-servern. Somliga hrdvaror krver patchning av krnan och omkompilering. Hrdvaruleverantrerna kan ibland stdja Linuxprojektet med dokumentation och drivrutiner. Alla drivrutiner som medfljer systemet nns ven som kllkod. Vissa leverantrer tillhandahller drivrutiner fr egen hrdvara utan kllkod. Tillverkarna har varierande intresse av att stdja GNU/Linux. Drivrutinerna ligger som
C Compiler nns ocks portad i ett par varianter som stdjer Microsoft Windows och som numera r ganska populra. 4 Dessa .SYS-ler r i sin tur ett slags .DLL-ler.
3 GNU

411

Bilaga A Att byta frn Windows till GNU/Linux moduler till krnan eller X.org-servern, eller r helt inkompilerade som en del av krnan. Processer Processer r det avtryck ett datorprogram gr i datorns minne d det krs: minne, ler som ppnas o.s.v. Windows: processer har fyra olika prioriteter (idle, normal, high och realtime) men anvndare frvntas inte manipulera processers prioriteter (det nns dock specialprogram som nd kan gra det). Processer som kr i ett fokuserat fnster ges extra hg prioritet. GNU/Linux: processer har 39 olika prioriteter mellan -19 och 19. Avancerade anvndare frvntas kunna ndra prioriteter och dda processer som slutat fungera.

A.5

Windowsprogram i GNU/Linux

Den som byter frn Windows till GNU/Linux har ofta utvecklat en del specialprogram, eller klarar sig bara inte utan ett eller annat Windowsprogram. Detta kan vara allt frn reserkningssystem till att hela Microsoft Ofce mste kunna anvndas. Det nns ett antal vanliga lsningar fr den som behver kunna kra Windowsprogram parallellt med GNU/Linux: Dubbelbootsystem (engelska: dual boot innebr att bde Windows och GNU/Linux ligger installerat p en och samma dator. Arbete kan dock inte utfras i bda systemen samtidigt, utan datorn mste startas om. Se vidare avsnitt 4.1.3 p sidan 138 dr boot-frfarandet i GNU/Linux frklaras ingende. VNC innebr att en separat Windows-dator sparas och anvnds enbart via VNC-grnssnittet. Detta innebr att du ppnar ett fnster till den andra datorn och anvnder den p distans. Flera personer kan dela p denna dator men den kan bara anvndas av en anvndare t gngen. Se vidare om VNC i avsnitt 6.7 p sidan 265. ven andra varianter p samma tema frekommer: Citrix sljer en proprietr mjukvara som ger mjlighet fr era anvndare att anvnda en Windowsmaskin via ett terminalprogram, som ven nns till GNU/Linux och projektet Rdesktop5 har skrivit ett program som gr att GNU/Linux-anvndare kan ansluta direkt till Windows Terminal Server som sljs av Microsoft.
5 Se:

http://www.rdesktop.org

412

A.6 Samba blandad milj QEMU 6 (Quick Emulator) r ett program som emulerar en hel IBMkompatibel PC p lg maskinnra niv. QEMU har ven en utkning som stdjer virtualisering, vilket gr det mjligt fr maskinkod fr Intel-processorn att kras precis som vanlig kod, men s fort ett systemanrop sker skickar emulatorn anropet vidare till QEMU. Resultatet blir en snabb dator-i-datorn, p vilken vilket operativsystem som helst kan installeras. Det r mjligt att kra era Windowsdatorer inuti GNU/Linux, eller att kra era GNU/Linux-system i egna QEMU-datorer. Datorn lagras i en stor l p hrddisken, ofta i anvndarens hemkatalog, och installation av ett operativsystem under QEMU krver naturligtvis att du har tillgng till en kopia av det operativsystem du nskar kra. En proprietr mjukvara av samma slag som QEMU r VMWare, (Virtual Machine Software) som i vissa avseenden skert r bttre men som inte tillfr speciellt mycket mera prestanda. Wine (akronym fr Wine is Not an Emulator) r en fri mjukvara som implementerar Windows API, Win32, fr GNU/Linux-system.7 Windowsprogram som krs under Wine upplever driftsmiljn som om den vore Windows, fast den inte r det. Wine kan kra de esta vanliga Windowsprogram med varierande resultat. Microsoft Ofce kan i princip alltid kras, och fretaget Codeweavers sljer ett specialanpassat installationsprogram som kan anvndas fr att installera Microsoft Ofce (Word, Excel, PowerPoint, Outlook, Internet Explorer) samt ett antal andra program (bl.a. Microsoft Visio) s att de kan kras direkt i GNU/Linux utan behov av ngon Windowsinstallation. Ett annat fretag, Transgaming Technologies, sljer en version av Wine som r speciellt inriktad mot att kunna hantera spel.8 ven om Wine r instabilare n en emulator som QEMU har det betydligt hgre prestanda och krver inte att ngot Windows-operativsystem skall nnas tillgngligt fr att programmet skall fungera. Wine skapar en kongurationskatalog per anvndare dr exempelvis /.wine/drive_c innehller motsvarigheten till Windows C:\-enhet.

A.6
6 Se:

Samba blandad milj


Ofciell hemsida: http://www.samba.org/

http://fabrice.bellard.free.fr/qemu/ http://www.winehq.com 8 Se: http://www.transgaming.com/


7 Se:

413

Bilaga A Att byta frn Windows till GNU/Linux Samba r det klassiska exemplet p hur GNU/Linux anvnds i sm och mellanstora fretag. Programmet skapades julen 1991 d Andrew Tridgell med ledning av paket som skickades ver ett ntverk mellan en Windowsklient9 och en lserver med namnet Pathworks10 brjade analysera protokollet som anvndes fr att bygga en fristende Pathworksserver. Ntverksgrnssnittet i Pathworks var en implementation av protokollet Server Message block (SMB), och detta rkade vara exakt samma protokoll som Microsoft sjlva anvnde fr att dela lsystem ver ntverk, men vid detta tillflle hade Tridgell ingen aning om den saken. Tidgell skrev snabbt ihop en enkel server som kunde hantera SMB, men frst i slutet av 1992 brjade han kra GNU/Linux och blev d medveten om att SMB-servern ven kunde kommunicera direkt med Microsoft Windows. Till en brjan kallades programmet smbserver, men en varumrkesdispyt gjorde att namnet ndrades till Samba, ett ord som ju innehller bokstverna S, M och B. Samba gr det mjligt att dela ut resurser frn ett GNU/Linux-system till era Windows-datorer: svl lservertjnster (vilket r det vanligaste) som primr och sekundr inloggningsdomn, skrivare11 och Microsoft Active Directory kan hanteras med Samba. Tusentals Windowsanvndare kan allts p detta vis f sina ntverkstjnster av en eller era centrala servrar som inte kr Windows utan GNU/Linux och Samba. Att kongurera och starta Samba r inte srskilt enkelt, men vl vrt besvret om du behver skicka ler mellan GNU/Linux och Windowsdatorer p ditt hemntverk, eller om du vill lta en Windowsdator anvnda din GNU/Linux-skrivare. Windows brukar anvnda en skrivardrivrutin installerad p varje Windowsmaskin, som sedan skickar utskriften i ett format som skrivaren frstr, via ntverket, Samba och CUPS, till skrivaren utan att bearbeta utskriften p vgen. Den kan ocks skicka den jobbet obearbetat, och sedan lta CUPS bearbeta utskriften med sina egna drivrutiner s att den passar skrivaren. Detta r lite smartare, eftersom det gr det mjligt att bygga en separat skrivarserver som vet allt om skrivaren, och lter klienten anropa denna fr utskrifter, utan att klienten fr den skull behver veta ngot om skrivaren. Det nns gott om dokumentation om svl l- som skrivardelning p Sambas hemsida fr den som r hgad. En vanlig missuppfattning om Samba r att det skulle vara anvndbart i andra riktningen: fr att lta GNU/Linux-system kommunicera med Windowssystem. S r det inte rent generellt. Fr att ansluta ett
3.0 i detta fall. anvndes av Windex, en X-server fr Windows. 11 Windowsdatorer kan ven anvnda CUPS skrivarsystem direkt, via en speciell drivrutin som kan fs frn CUPS hemsida. D behvs inte Samba alls.
10 Pathworks 9 Windows

414

A.6 Samba blandad milj GNU/Linux-system till t.ex. en Windowslserver nns det SMB-std inbyggt i krnan, som gr det mjligt att montera en utdelad katalog direkt ver ntverket. Ngon Sambainstallation behvs inte fr detta. Emellertid underhlls ven SMB-delen av Linuxkrnan av samma personer som arbetar med Samba. Samba krvs dremot fr att lsa av ntverket efter anslutna SMBdatorer,12 fr att veta vilka datorer som har utdelade enheter som det r mjligt att ansluta till. Detta r knt frn Microsoft Windows som Network Neighborhood (ntverksgrannskapet). Svl KDE som GNOME arbetar med att integrera std fr detta i skrivbordsmiljerna, och det fristende programmet LinNeighborhood13 som bl.a. anvnds av Mandrake Linux hjlper ocks till med detta. Windowsskrivare kan ocks anvndas av GNU/Linux, men anvnds d av programmet smbprint som kommer med Samba, men egentligen r ett fristende program. Det behvs ingen krande Sambademon fr att f smbprint att fungera, s denna kan i frkommande fall stngas av.

12 Detta 13 Se:

grs med programmen smbclient och nmblookup som fljer med Samba. http://www.bnro.de/~schmidjo/

415

Bilaga A Att byta frn Windows till GNU/Linux

416

B ILAGA

B Stordrift av GNU/Linux-system

I detta appendix behandlas versiktligt stordrift av GNU/Linux-system. Att beskriva hur stordrift gr till i ngon form av detalj krver en hel separat bok, frmodligen dessutom en bok i strre format n denna. mnet behandlas drfr hr bara versiktligt, s att den intresserade kan frst grunderna och sjlv g vidare p rtt omrde fr att lra sig mer. Vad som menas med stordrift r fr det frsta ngot ytande. Denitionen hr r att det r ett ntverk av datorer, ngot strre n ett hemntverk, dr det uppsttt behov av att dela resurser. Med resurser menas hrddiskutrymme, skrivare, kontolistor, o.s.v. I takt med systemets storlek vxer ocks skerhetsbehovet. Den som driver ett sdant system r nstan alltid driftsansvarig fr en organisation eller myndighet av ngot slag. Med system menas i detta sammanhang era datorer sammankopplade i ett lokalt, organisationsomfattande ntverk, ofta kallat fr organisationens intrant, samt alla de allmnna tjnster som krs p olika servrar i detta ntverk. (Se gur B.1.) Nr en tekniker som sysslar med stordrift pratar om systemet r det allts en mycket omfattande term som inbegriper vldigt mycket. I vrigt r support r ett ord du mste frst fr att begripa de personer som sysslar med stordrift. Nr ett datorsystem drivs av en speciell

Bilaga B Stordrift av GNU/Linux-system

Figur B.1: En schematisk skiss ver hur ett strre system p ett lokalt ntverk, anslutet till Internet kan se ut. De olika servrarna tillhandahller olika tjnster till klienterna arbetsstationerna. De olika servrarna kan i praktiken vara samlade i en eller ngra fysiska datorer.

avdelning i en strre organisation handlar mnga och lnga diskussioner om hurvida saker stdjs av supporten, eller supporteras som den gngse sprkvidriga branschtermen lyder. Detta avsnitt behandlar inte sdana saker, utan handlar mer om de vergripande principerna fr hur ett stort GNU/Linux-baserat system skall byggas upp.

B.1

Katalogtjnster: YP, NIS, LDAP

Det frsta som brukar installeras p ett system bestende av era datorer r en katalogtjnst (engelska: directory service), ven kallat autentiseringstjnst (engelska: authentication service). Syftet med denna tjnst r att lagra anvndarnas kontoinformation centralt, s att ett anvndarkonto inte mste lggas till p varje individuell dator genom att editera /etc/passwd, /etc/shadow och /etc/group. Istllet fr att systemet bara kontrollerar dessa tre ler fr att kontrollera om en anvndare skall slppas in i systemet, komer det ocks att begra ut en anvndarlista frn katalogservern. Ofta anvnds era parallella katalogservrar det vore ju trkigt om bara en server fanns, och denna skulle stanna. D skulle pltsligt inga anvndare slppas in i systemet. Katalogtjnster r oftast komplementra: de gller utver de ordinarie lerna i /etc, och det gr allts fortfarande ven att anvnda lokala konton i systemet om s nskas. Det nns tre huvudsakliga katalogtjnster: YP stod fr Yellow Pages men detta namn var varumrkesskyddat av den amerikanska motsvarigheten till Gula Sidorna, och verktyget ck drfr byta namn till NIS, Network Information Service. Detta var den frsta katalogtjnst som introducerades fr POSIXsystem, utvecklad av Sun Microsystems. 418

B.1 Katalogtjnster: YP, NIS, LDAP Du kan underska YP/NIS motsvarigheter till konto- och grupplerna med ypcat passwd eller ypcat group p ett system som anvnder NIS. NIS anvndes ibland ven som ett alternativ till DNS fr att ge namn till datorer i ntverket, och kallas d inte katalogtjnst utan namntjnst. (engelska: name service)1 NIS+ r en frbttrad variant av NIS, frmst i skerhetshnseende. Det anses vara svrt att anvnda och stdet i GNU/Linux r inte att rkna med, s undvik detta om du inte absolut mste anvnda det. NYS r en frbttrad variant av NIS, som nog r den vanligaste formen av katalogtjnst p nya installationer idag. Det hanterar bland annat /etc/shadow p ett elegant vis. LDAP Lightweight Directory Access Protocol r den branschstandard fr katalogtjnster som successivt har utkristalliserats frn ITU-T-standarden X.500. Eftersom en mngd komplexitet skalats av frn X.500 kallas det just lttviktskatalogtjnst. IETF har standardiserat LDAP version 3 (vilket r den version som br anvndas) i form av RFC 3377. Den vanligaste servern fr LDAP p GNU/Linuxsystem r OpenLDAP.2 LDAP anvnds oftast tillsammans med Kerberos (RFC 1510) som har till uppgift att se till att den som frsker ansluta sig till en katalogtjnst verkligen r den som denne utger sig fr att vara. Till denna verikation anvnds kryptograska nycklar och signaturer. Alla dessa katalogtjnster stdjs av nyare versioner av GNU C Library, genom ett generellt grnssnitt fr olika katlogtjnster, ngot som kallas Name Service Switch (NSS) och som kan kongureras i len /etc/ nsswitch.conf. Det nns drutver ett konkurrerande projekt med samma syfte, som kallas Pluggable Authentication Module (PAM). Beroende p vilken katalogtjnst som vljs kan ytterligare konguration krvas, t.ex. skall NIS-server anges i /etc/yp.conf fr NIS.3 Det anses att LDAP med Kerberos r framtidens melodi vad betrffar katalogtjnster, och NIS-varianterna r i hgsta grad ett oskert och
1 Nr det gller namngivning av datorer nns idag tre stora system: DNS (vanligast), WINS (Windows namntjnst, stdjs ven av Samba, se fregende appendix) och NIS. 2 Se http://www.openldap.org/ 3 Se NIS-HOWTO fr detaljer om NIS: http://www.tldp.org/HOWTO/ NIS-HOWTO/

419

Bilaga B Stordrift av GNU/Linux-system dligt alternativ. Emellertid r de gamla varianterna utbredda, och eftersom det r ganska svrt att byta namntjnst i ett stort system ungefr i stil med hjrt-lung-byte r det mnga som fortfarande anvnder NIS. Detta har ocks lett till att kunskapen om hur LDAP och Kerberos skall anvndas inte r srskilt utbredd, och drmed r det svrt att hitta den hjlp som behvs fr att f det hela att fungera.4

B.2

NFS

Den nst vanligaste formen av tjnst som behvs i ett stort system r en lserver av ngot slag. Filserverns uppgift r att lagra ler som skall vara gemensamma fr hela systemet, d.v.s. fr alla datorer i ntverket. I POSIX-system r NFS, Network File System det vanligaste systemet fr lservrar. NFS uppfanns ursprungligen av Sun Microsystems men r numera denerat i RFC 1813 (version 3) och RFC 3010 (version 4). Det r ltt att gra GNU/Linux-datorer till NFS-servrar: se till att NFS-demonen nfsd krs i ditt system, och rada upp katalogerna som skall delas ut i len /etc/exports. I denna l kan du ven begrnsa vilka datorer som fr montera NFS-katalogerna. NFS-demonen ppnar och stnger ler, samt ser till s att ler inte krockar p grund av att era anvndare samtidigt lser frn och skriver till dem. Klienterna (arbetsstationerna) monterar sedan dessa exporterade kataloger p vanligt vis, s som beskrivs p sidan 214. Vanligtvis brukar administratrer nja sig med att montera /homekatalogen, s att alla hemkataloger ligger p en lserver.5 P det viset gr ingen information frlorad om hrddisken i ngon anvndares dator skulle g snder. Detta stller naturligtvis krav p administratren att gra skerhetskopior av alla hrddiskar p lservern, samt att dessa hrddiskar r mycket snabba (vilket ofta stadkoms med RAID, se nedan), samt att ntverket mellan lservern och anvndarnas datorer r snabbt. I vissa system vljer administratrerna att ven montera ltrdet /usr/local p en NFS-server. Detta gr att om program installeras och uppgraderas i /usr/local p lservern, s nns det genast tillgngligt p
4 Turbo Fredriksson (jo han heter faktiskt s!) har skrivit ett omfattande HOWTOdokument som nns tillgngligt via http://www.bayour.com/LDAPv3-HOWTO. html 5 I praktiken kan det vara svrt att f plats med alla hemkataloger i en enda katalog p lservern, och drfr ligger anvndarkatalogerna ofta en niv ner i kataloghierarkin p lservern, t.ex. /home/a/foo, /home/a/bar o.s.v. s att bokstaven a i det hr fallet betecknar en hrddisk. Sedan kan nsta hrddisk kallas b o.s.v.

420

B.3 RAID alla datorer i ntverket. Omvnt gller att om administratrerna rkar frstra ett program eller bryta ngot beroende kan ett program sluta fungera fr alla anvndare. Version 2.6 av Linuxkrnan har std fr NFS version 4 som har en vsentligt utkad skerhet bland annat anvnder det TCP istllet fr UDP fr verfringen, och kan dessutom anvnda Kerberos fr att veriera den som ansluter sig till lservern. NFS version 4 betraktas dock som experimentell och br kanske inte anvndas i strre system n p ett tag. Andra och ofta mer vldesignade ntverkslsystem, ssom Andrew File System (AFS) frekommer, men i ertalet organisationer r det i princip bara tv system som anvnds i drift: NFS (i olika versioner) och Microsofts SMB (som ju ocks implementeras av Samba). AFS, Coda och andra avancerade lsystem r potentiellt mycket bttre n bde NFS och SMB, men anvnds knappt eftersom tekniken inte r srskilt beprvad, och eftersom ingen vill vara frst med att riskera sina livsviktiga ntverkssystem genom att anvnda ngot obeprvat, s vxer anvndandet av dessa alternativa system mycket lngsamt.

B.3

RAID

ven RAID, Redundant Array of Independent Disks eller Redundant Array of Inexpensive Disks r populrt vid drift av strre POSIX-system av alla slag. RAID innebr att era hrddiskar ansluts parallellt, och oftast att data lagras p mer n ett stlle. RAID anvnds av olika skl. Fr det frsta kan era parallellkopplade diskar ka hastigheten vid skrivning eller lsning till diskarna. Fr det andra kan mycket stora lagringsutrymmen skapas genom att parallellkoppla mnga billiga diskar fr att stadkomma ett gemensamt stort lagringsutrymme. Det enklaste sttet att stadkomma mycket billigt lagringsutrymme r att ta samtliga hrddiskleverantrers produktkataloger, rkna fram vilken hrddisk som ger mest megabytes per krona, kpa ett antal sdana och koppla samman dem som en RAID-disk. Fr operativsystemet upptrder en RAID-disk som om den vore en enda stor hrddisk. Fr det tredje kan RAID sttas upp fr att vara feltolerant: om en hrddisk i en sammankopplad RAID-disk gr snder (vilket intrffar frr eller senare) kan den bytas ut, och den data som fanns p denna hrddisk kan sedan terskapas frn de vriga hrddiskarna, utan att ngon data gr frlorad. Det r detta som avses nr hrddiskarna sges 421

Bilaga B Stordrift av GNU/Linux-system vara redundanta: det nns mer lagringsutrymme n vad som faktiskt utnyttjas, och det extra lagringsutrymmet anvnds fr att lagra information som gr att en trasig disk kan terskapas. I professionella system kan detta dessutom oftast gras under drift, s.k. hot swap. Det nns tre huvudsakliga varianter av RAID: RAID 0 r bara ett annat namn fr mycket enkelt parallellkopplade diskar. Om du har 8 hrddiskar med 6 gigabyte lagringsutrymme s har du efter sammankoppling med RAID 0 en 48 gigagbyte stor hrddisk. Denna hrddisk har ocks hgre verfringshastighet, och det r egentligen det vanligaste sklet till att RAID 0 anvnds: det r framfr allt populrt vid ljud- och videoredigering d stora medialer lagras p hrddiskarna. En direkt fara med RAID 0 r att det rcker med att en av diskarna gr snder fr att hela lsystemet skall g snder. RAID 1 r den enklaste formen av redundans: diskarna sitter tv och tv, och det som skrivs till den ena disken skrivs ocks till den andra. Om sedan den ena disken gr snder, nns all information kvar p den andra. Detta ger mycket hg feltolerans, eftersom det r mycket ovanligt att tv diskar gr snder samtidigt, men r samtidigt ganska dyrt, eftersom det dubblerar priset fr lagringsutrymmet. RAID 3, 4 och 5 bygger p att paritetsbitar lagras undan ngonstans p en av diskarna. Om t.ex. fyra diskar anvnds kommer resultatet att bli att tre av dem anvnds fr att lagra data, och den fjrde lagrar en kontrollsumma, som gr att informationen p vilken som helst av de fyra diskarna kan terskapas om en och endast en av de fyra diskarna gr snder. Detta grs genom modulo-2addition (exklusive OR) av varje individuell bit p de fyra diskarna. Skillnaden mellan RAID 3 och RAID 4 och 5 r att de tv senare tillmpar olika principer fr att sprida ut checksumman ver era diskar, istllet fr att lta en enda disk ta hand om alla checksummor, vilket RAID 3 gr. RAID 6 r en version av RAID som introducerar tillrckligt mycket redundans fr att klara av det fall d tv diskar gr snder samtidigt. Det nns ocks RAID 2 men detta anvnds inte mycket. Linuxkrnan stdjer inte RAID 2 och 3, men dremot RAID 0, 1, 4, 5 och 6. (RAID 6 r nnu experimentell.) 422

B.4 Internetservrar

B.4

Internetservrar

Om du behver tillhandahlla ngon av de Internettjnster som presenteras i kapitel 9 behver du stta upp servrar fr dem, d.v.s. i praktiken en eller era demoner som svarar p anrop p vissa TCP- eller UDP-portar. Var och en av dessa demoner svarar naturligtvis mot ett speciellt program, och i detta avsnitt listas protokoll och motsvarande demon fr ett antal vlknda Internetprotokoll. Vissa av servrarna r fristende, medan andra startas indirekt via internetdemonen xinetd. DNS skts av en namnserver, och hanterar namnsystemet fr en eller era domner. Det populraste programmet fr att skta DNS r bind Berkeley Internet Name Domain, men ven DJBDNS anvnds en del. HTTP skts av en webbserver. Den frsta webbserver som skrevs av Tim Berners-Lee hade naturligt nog namnet httpd, liksom NCSA:s klon NCSA HTTPd som sedermera slutat underhllas. En modierad version av NCSA:s programvara lever dock kvar under namnet Apache,6 och r idag den i branschen dominerande programvaran fr webbservertjnster. Apache brukar ofta anvndas tillsammans med den svenska databasen MySQL och skripsprket PHP och formar d den s kallade PHP-triaden. Om triaden dessutom krs under GNU/Linux kallas summan ibland fr LAMP: Linux-Apache-MySQL-PHP. SMTP skts av en epostserver (engelska: mail server, kallas ven mail transfer agent, MTA) och det vanligaste programmet fr detta r sendmail, ett program som r i rakt nedstigande led slkt med ARPANET-programmet delivermail och har rykte om sig att vara notoriskt svrkongurerat. Enklare program som ocks ibland anses vara bttre r qmail, exim och postx. P sidan 388 redogjordes fr epostsituationen i de esta GNU/ Linux-system som anvnds idag: nio av tio anvndare kr inte en epostserver, men mnga program tror nd att en sdan alltid nns tillgnglig. Epostservern anvnds bde fr att leverera epost till anvndare p det egna systemet och fr att leverera epost till anvndare p andra system. Till det lokala systemet levereras det antingen direkt till en l med anvndarens namn i katalogen /var/spool/mail eller via ett separat brevlevereringsprogram som t.ex. procmail.
6 Se:

http://httpd.apache.org/

423

Bilaga B Stordrift av GNU/Linux-system FTP skts av en FTP-server (ngot annat namn anvnds s vitt jag vet inte). FTP skall helst inte anvndas annat n till anonym tillgng till stora ler, men till just detta fungerar FTP mycket bra. Populra serverprogram r ftpd som medfljer GNU Inetnutils, wu-ftpd eller vsftpd. IMAP Internet Message Access Protocol r en speciell server som krs p en mailserver fr att tillhandahlla brevldor t anvndare. IMAP-servern krs parallellt med SMTP-servern: de tv fyller helt olika ndaml. IMAP r ett system fr att anvndare skall kunna lagra och hmta sin post, medan SMTP r ngot anvndarna anvnder fr att skicka ivg sin post. IMAP tillter att anvndarna lagrar stora ler, mappar med epost i sina hemkataloger p systemet dr det krs om de s vill. Anvndarna kan ven skapa nya epostmappar vid behov. Det vanligaste r dock att anvndarna anvnder IMAP fr att tmma sin brevlda i /var/spool/mail. En annan vanlig typ av Internetserver r en proxy (betyder ungefr fullmakt) fr HTTP- och FTP-trak. Denna har till uppgift att vervaka varje begran om dokument frn Internet frn det lokala ntverket. Alla begrda dokument mellanlagras i proxyservern. Den stora vinsten med detta r nr mnga anvndare under kort tid vill komma t samma webbsida eller l: den kopia som hmtats av den frsta anvndaren har mellanlagrats och skickas sedan direkt till alla andra anvndare som senare begr samma l. Ett vanligt proxy-program r Squid Cache, men ven Apache kan anvndas som proxyserver.

B.5

Driftvervakning

Nr du vl har ett stort system med era viktiga servrar krande r det inte speciellt roligt om ngon av dem pltsligt skulle stanna eller sluta fungera. Stora datorsystem placeras dessutom ofta i speciella maskinrum som ofta ligger ganska otillgngligt. Av denna anledning anvnds driftvervakningsprogram fr stora system. Dessa program kr demoner p varje dator som skall vervakas, och kontrollerar med jmna mellanrum att allting fungerar som det skall. vervakningen koordineras frn en central vervakningsdator som sammanstller data om systemen och lagrar undan statistik ver tillgnglighet och drifttider etc. Det mest anvnda programmet fr driftvervakning av GNU/Linux424

B.5 Driftvervakning system r Nagios,7 en efterfljare till det tidigare mest populra programmet Net Saint. Nagios vervakar svl datorer som ntverk och fysisk driftsmilj (om mtutrustning nns i driftlokalen). Om ngot hnder i ett system under drift kan Nagios sjlvstndigt vidta vissa tgrder: starta om tjnster, skicka mail eller SMS till administratrer o.s.v. Det nns ven ett grnssnitt fr att sjlv tillverka insticksprogram fr att vervaka speciella tjnster.

7 Se:

http://www.nagios.org/

425

Bilaga B Stordrift av GNU/Linux-system

426

Litteraturfrteckning

[1] A Brief History of the Internet, The Internet Society http://www.isoc.org/internet/history/brief.shtml verierad 2004-02-04 [2] Andreasson, Oskar: Iptables Tutorial http://iptables-tutorial.frozentux.net/ iptables-tutorial.html verierad 2004-02-27 [3] Arnison, Matthew: The means to an X for Linux: an interview with David Dawes from XFree86.org http://www.cat.org.au/maffew/cat/xfree-dawes. html verierad 2004-01-15 [4] Bailey, Edward C.: Maximum RPM, Red Hat Inc., Durham, USA 2000, ISBN 1-888172-78-9 [5] Bowden, Terrehon, Bauer, Bodo och Nerin, Jorge: The /proc lesystem, textl som nns i /Documentation/lesystems/proc.txt i Linuxkrnans kllkodstrd. [6] Braun, David: Disk Encryption HOWTO, http://www.tldp.org/HOWTO/Disk-Encryption-HOWTO/ verierad 2004-02-29 [7] comp.os-research FAQ http://www.faqs.org/faqs/os-research/ verierad 2003-05-15

Litteraturfrteckning [8] Debian Social Contract http://www.debian.org/social_contract verierad 2003-10-30 [9] Ettrich, Matthias, New Project: Kool Desktop Environment. Programmers wanted! Usenet-artikel, nns bl.a. p http://groups.google.com/groups?selm=53tkvv$b4j@ newsserv.zdv.uni-tuebingen.de Verierad 2004-01-14 [10] Filesystem Hierarchy Standard http://www.pathname.com/fhs/ verierad 2003-11-03 [11] Free Software Foundation, The Free Software Denition http://www.gnu.org/philosophy/free-sw.html verierad 2003-11-14 [12] Henning, Michi, Computing Fallacies [or: What is the World Coming To?] http://mail.gnome.org/archives/gnome-hackers/ 2002-February/msg00072.html verierad 2003-05-08 [13] Icaza, Miguel de: Lets Make Unix Not Suck http://primates.ximian.com/~miguel/bongo-bong. html verierad 2003-07-27 [14] IEEE Standard 1003.1-2001: Standard for Information Technology Portable Operating System Interface (POSIX). Denna bestr i sin tur av fyra olika dokument: Base Denitions, Rationale, Shell and Utilities och System Interfaces. [15] Ilshammar, Lars och Larsmo, Ola, 404 Utykter i glmskans landskap, Atlas, Avesta 2005, ISBN 91-7389-189-4 [16] Krner, Ulf: Kteori, Studentlitteratur, Lund 2003, ISBN 91-4402908-X [17] Levy, Steven: Hackers Heroes of the Computer Revolution, Dell Publishing, New York 1984, ISBN 0-385-31210-5 [18] Linux Standard Base, Free Standard Group http://www.linuxbase.org/spec/ verierad 2003-11-23 428

Litteraturfrteckning [19] Loughran, Steve, Frequently Asked Questions About Win32 Programming http://www.iseran.com/Win32/FAQ/faq.htm verierad 2003-05-08 [20] Love, Robert M., Linux Kernel Development, Second Edition, Novell Press, 2005, ISBN 0672327201 [21] Moody, Glyn, Rebel Code Linux and the Open Source Revolution, ISBN 0-14-029804-5 [22] Multiboot Specication, Free Software Foundation http://www.gnu.org/manual/grub-0.92/html_mono/ multiboot.html verierad 2003-11-02 [23] Olofsson, Jessica, Upphovsrttsliga aspekter p licenser fr fri programvara och ppen kllkod, Institutet fr Rttsinformatik, IRIrapport 2003:1, ISSN 0281-1286 [24] Open Sources, OReilly & Associates Inc., ISBN 1-56-592582-3 [25] Raymond, Eric S., Katedralen och basaren (svensk versttning av Sven Wilhelmsson) http://home.swipnet.se/swi/KatB-se.html verierad 2004-01-16 [26] Raymond, Eric S., The Art of Unix Programming, ISBN 0-13-1429019 [27] Red Hat Customization Guide, Red Hat http://www.redhat.com/docs/manuals/linux/ RHL-9-Manual/custom-guide/ verierad 2003-11-03 [28] Rubini, Alessandro, Booting the Kernel http://www.linux.it/~rubini/docs/boot/boot.html verierad 2003-11-17 [29] Salus, Peter, A Quarter Century of Unix, ISBN 0201547775 [30] Silberschatz, Abraham, Operating System Concepts, 6th Edition, ISBN 0471417432 [31] Single UNIX Specication, frn Open Group nns p http: //www.opengroup.org/ men kan vara svr att lokalisera exakt, version 3 av texten nns exempelvis p 429

Litteraturfrteckning http://www.opengroup.org/onlinepubs/007904975/ vererad 2003-05-08 [32] Stallman, Richard M., New UNIX Implementation Usenet-artikel, nns bl.a. p http://groups.google.com/groups?hl=en&selm=771@ mit-eddie.UUCP verierad 2003-11-10 [33] Torvalds, Linus, Just for Fun, Alfabeta Bokfrlag AB, Stockholm 2002, ISBN 951-50-1284-8 [34] Torvalds, Linus, brev till comp.os.minix den 25 augusti 1991 meddelande-ID 1991Aug25.205708.9541@klaava.Helsinki.FI [35] Torvalds, Linus och Tanenbaum, Andy frde r 1992 en trttsam debatt om mikrokrnor versus monolitiska krnor http://www.dina.dk/~abraham/Linus_vs_Tanenbaum. html verierad 2003-05-20 [36] Vaughan, Gary V., Elliston, Ben, Tromey, Tom och Lance Taylor, Ian: GNU Autoconf, Automake and Libtool, USA 2000, ISBN 1-57870190-2 [37] Walker, John Mark, There Is No Open Source Community http://www.onlamp.com/pub/a/onlamp/2006/01/12/ no_oss_community.html verierad 2006-01-21 [38] Walleij, Linus, Copyright nns inte, Rootgear, Kunglv 2000, ISBN 91-630-9465 [39] Williams, Sam, Free As In Freedom Richard Stallmans Crusade For Free Software, OReilly & Associates, Inc. Sebastopol, Kanada, 2002, ISBN 0-596-00287-4

430

Sakregister

CLinux, 169 , 74 /.fonts, 254 ., 58 .., 58 ./congure, 283, 287 .bash_prole, 218 .bashrc, 98 .mozilla, 384 .tar.gz, 60, 283 .tgz, 283 .xinitrc, 247 .xserverrc, 247 /, 52, 53, 55, 57 /bin, 57, 150, 198, 290, 344 /boot, 140, 185 /dev, 55, 57, 72, 200, 204, 235, 396 /dev/audio, 396 /dev/console, 55, 253 /dev/dri, 233 /dev/dsp, 396 /dev/hda, 201, 356 /dev/hdb, 356 /dev/hdc, 276 /dev/input/mice, 238 /dev/lp0, 267 /dev/null, 55, 73, 201 /dev/psaux, 238

/dev/scd0, 276 /dev/sda, 273 /dev/tty, 55, 105 /dev/usb, 273 /dev/zero, 73 /etc, 57, 79, 198, 313, 344 /etc/X11, 230 /etc/X11/xinit, 247 /etc/X11/xorg.conf, 230 /etc/exports, 420 /etc/fstab, 213, 278, 356 /etc/group, 51, 233, 418 /etc/groups, 50 /etc/hostname, 315, 319 /etc/hosts, 303, 320 /etc/hosts.allow, 329 /etc/hosts.conf, 319 /etc/hosts.deny, 329 /etc/hotplug, 272 /etc/init.d, 192 /etc/inittab, 183, 340, 409 /etc/ld.so.conf, 197 /etc/mactab, 316 /etc/modprobe.conf, 183 /etc/modules, 183 /etc/modules.conf, 183 /etc/mtab, 214 /etc/network, 313 /etc/nsswitch.conf, 320, 419

Sakregister /etc/passwd, 48, 50, 51, 56, 94, 418 /etc/ppp, 322 /etc/rc.d/rc.sysinit, 183 /etc/rc.local, 337 /etc/rcN.d, 192 /etc/resolv.conf, 319, 321 /etc/services, 304 /etc/shadow, 48, 418 /etc/ssh, 333 /etc/syscong, 159, 313 /etc/sysctl.conf, 189 /etc/termcap, 106 /etc/udev, 202 /etc/wvdial.conf, 322 /etc/xinetd.conf, 330 /etc/xinetd.d, 330 /etc/yp.conf, 419 /etc/yum.conf, 161 /etc/yum.repos.d, 162 /home, 57, 150, 344, 355, 420 /lib, 57, 196, 196, 290 /lib/modules, 182, 273, 295 /mnt, 57, 213 /mnt/cdrom, 57 /mnt/oppy, 57 /opt, 57 /proc, 150, 200, 202, 211, 233 /proc/cpuinfo, 204 /proc/devices, 204 /proc/dma, 204 /proc/dri, 233 /proc/lesystems, 204 /proc/interrupts, 204 /proc/ioports, 204 /proc/meminfo, 204 /proc/modules, 204 /proc/mounts, 214 /proc/net, 362 /proc/pci, 204 /proc/swaps, 204 /proc/sys, 205, 207 432 /sbin, 57, 290, 318, 363 /sbin/init, 188 /sys, 200 /tmp, 56, 57, 150, 186 /usr, 57, 150, 344 /usr/X, 57 /usr/X11R6, 57, 229 /usr/bin, 57, 157, 198 /usr/include, 286 /usr/lib, 57, 196, 286, 384 /usr/lib/xorg/modules/input, 235 /usr/local, 150, 290, 291, 344, 384, 420 /usr/local/bin, 58, 290 /usr/local/include, 286 /usr/local/lib, 286, 290 /usr/local/src, 200 /usr/sbin, 57, 157, 337 /usr/src, 200, 293 /usr/lib, 196 /var, 58, 186, 344 /var/lib/dhcp, 321 /var/log, 58 /var/log/messages, 195 /var/spool/clientmqueue, 389 /var/spool/mail, 58, 389, 423 ;, 75, 93 <, 92 >, 92 >>, 92 #/bin/sh, 100 $COLUMNS, 99 $DISPLAY, 250 $EDITOR, 99 $HOME, 99, 290 $LANG, 99 $LD_LIBRARY_PATH, 99, 197 $LINES, 99, 106 $LOGNAME, 99 $NLSPATH, 99 $PATH, 99

Sakregister $PWD, 99 $SHELL, 99 $TERM, 99, 106 $USER, 99 $$, 99 &, 36, 93 &&, 93 2>&1, 92 386BSD, 178 3dfx, 224 4Front Technologies, 396 802.11, 323 3270, 44 ABC-80, 44 ABCenix, 22 AbiWord, 376 ACC Corporarion, 155 Accelerated-X, 222 accesskontrollistor, 68 ACL, 68 ACPI, 137, 219, 292 ActiveX, 264 Adabas, 375 ADB, 8 adduser, 50 Adobe, 269 Adobe Illustrator, 373 Adobe Photoshop, 373 ADSL, 311, 322 Advanced Linux Sound Architecture, 396 AFS, 212, 421 AfterStep, 227 Aho, Al, 93 AIGLX, 223 AIM, 392 AIX, 20 Almesberger, Werner, 140 Almquist shell, 26 Almquist, Kenneth, 26 ALSA, 396 Altair 8800, 44 aluminiumhatt, 341 AMD, 148, 181 Amiga, 148 Amsterdam Compiler Kit, 173 Anaconda, 149, 157, 164, 229 Andreessen, Marc, 380 Andrew Filesystem, 212 anvndare, 44, 61, 74 anvndarnamn, 47 Apache, 43, 116, 146, 330, 379, 423 API, 225 APM, 219, 292 Apple Computer, 24 Apple II, 44 AppleScript, 26 applet, 385 Appletalk, 178, 212 APT, 342 apt-get, 151, 152, 152, 161, 165 apt-setup, 153 aptitude, 153 Ardour, 400 AREXX, 26 arkitektur, 179 arkivhanterare, 399 ARP, 309, 313 ARP-tabell, 314 ARPAnet, 302 Arthur, 228 artistisk licens, 146 artsd, 396 Asente, Paul, 221 ash, 26 ASIO, 396 Asplund, Johan, 118 assembler, 21 at, 43, 107, 108 AT&T, 22, 26, 27, 90, 178, 265 ATA, 138, 208 atd, 107 433

Sakregister Athena-projektet, 221 ATI, 224 atjobb, 107, 108 ATM, 265 atq, 108 atrm, 108 Audacity, 400 autoconf, 173, 175, 288 automake, 173, 175, 288 awk, 16, 80, 93 Axis Communications, 122, 181 Babbage, Charles, 8 backup, 342 Backus, John, 76 Bading, Tobias, 395 bakgrundsprocess, 36 Balsa, 391 barn (child), 35 bash, 25, 27, 163, 169, 174, 218, 288 BASIC, 10 Beekmans, Gerard, 163 Bell Labs, 10, 21 Berkeley DB, 379 Berners-Lee, Tim, 301, 379, 423 beroendehantering, 152 berra, 64 Beyond Linux From Scratch, 163 bg, 41 bibliotek (i programvara), 195 bildinlsare (scanner), 270 bildskrm, 137, 138, 236, 243 bin, 56 bind, 423 binrl, 52 BIOS, 11, 136, 139, 219, 341 bison, 172 BitTorrent, 135 Bittorrent, 393 blockenhetsl, 56, 72, 200, 204 Bogolter, 391 Boleyn, Erich, 140 434 Bonobo, 264 bootblock, 139 BOOTP, 311 bootprompt, 184 bootsektor, 138 bootstrap loader, 11, 15, 138, 138, 157, 184 Bourne Again Shell, 174 Bourne Shell, 26 Bourne, Steven, 26 Bourne-Again Shell, 27, 169 brandvgg, 360 Braun, David, 357 bredband, 310 Bricklin, Dan, 372 broadcast, 306 BSD, 2224, 56, 143, 165, 178, 224 BSD-licensen, 124, 146 buffertverskrivning, 359 Bugzilla, 119, 120 Bull, 22 BusyBox, 169 byte, 52, 72, 96 bzImage, 185 bzip2, 126, 185, 284 brbar dator, 235, 347, 353 C, 21, 25, 27, 96, 180, 225, 285 C Shell, 27 C++, 22, 261, 285 cache, 67 cache-minne, 204 Cairo, 228 cal, 89 Card, Rmy, 210 CardBus, 324 Carnegie-Mellon University, 24 Castells, Manuel, 117 cat, 30, 94 CCITT, 299 cd, 30, 54, 58, 99, 203 CD-brnning, 274 CD-R, 274

Sakregister CD-ROM, 138, 208, 218, 274 CD-RW, 274 cdda2wav, 275, 281 CDDI, 300 CDE, 259, 260 cdparanoia, 275, 281, 399 CDR-l, 280 cdrdao, 275, 279 cdrecord, 275, 276, 279 certiering, 405 cfdisk, 145, 216 chage, 50 chgrp, 63, 66 chkcong, 190 chmod, 63, 64, 66, 67, 169, 173 Chomsky, Noam, 75 chown, 62, 66 chsh, 49 CIDR, 308 Citrix, 412 Clark, Jim, 380 Coda, 212, 421 codec, 394 Codeweavers, 413 COM, 264 COMHEM, 322 Commodore, 44 Commodore VIC-20, 176 comp.os.minix, 20, 176, 180 compress, 60, 343 congure.in, 288 Connectiva Linux, 166 CoolEdit, 400 Corel Draw, 373 COSE, 260 Cox, Alan, 360 cp, 31 CP/M, 26, 103, 406 cpio, 60 CRIS, 181 crond, 107 cronjobb, 43, 107, 108, 342 crontab, 346 crontabell, 108 crosstool, 168 CRT, 244 cryptoloop, 354 csh, 27 Ctrl+Alt+Delete, 190 Ctrl+c, 36, 38, 39, 322 Ctrl+d, 33, 42, 49, 99, 105, 108 Ctrl+z, 42, 81 Ctrl+\, 38 Cubase, 400 CUPS, 267 CVS, 289, 352 Cygnus Solutions, 155 Cygwin, 224 cylinder, 142 D21, 10 Dalheimer, Matthias, 262 Darwin, 24 databashanterare, 373 datagram, 298 Datasaab, 10 date, 31, 89 datorkommunikation, 8 datornamn, 303 datorntverk, 45, 298 datorspel, 400 datorskerhet, 339 datorteknik, 8 datorvirus, 142, 368 Dawes, David, 125, 222 DCOP, 263 dd, 135, 279, 343, 357 DEB, 127, 131, 165 Debian GNU/Linux, 133, 135, 145, 166, 229 Debian Social Contract, 146 Debian Task Installer, 148 declare, 97 demon, 24, 32, 38, 41, 42, 45, 71, 104, 190, 192, 329 435

Sakregister DeMuDi, 133 designmnster, 90 dev, 56 df, 58, 214 dhclient, 320, 325 DHCP, 311 Dia, 376 DIAB, 22 Digital Alpha, 148 Digital Equipment Corporation, 21, 221 digitalkamera, 273 Direct Connect, 393 direct rendering infrastructure, 232, 233 DirectColor, 249 DirectX, 233 disc at once, 282 disk druid, 145 diskettstation, 138 disown, 41, 108 distribution, 129, 198 DivX, 399 DJBDNS, 423 DMA, 188 dmesg, 188 DNIX, 22 DNS, 302, 315, 423 dnsdomainname, 315 dolda ler, 73 domainname, 315 domnnamn, 303 DOS, 26, 88, 404 DOSKEY, 28 DPI, 244 dpkg, 150 dpkg-recongure, 151 DPMS, 245, 246 drag-och-slpp, 227, 261, 262 DRI, 233 drivrutin, 16, 31, 181 DS90-00, 22 436 dselect, 148, 149, 151 DSSI, 400 DTP, 393 DTS, 398 dual boot, 140 dump, 214, 343 Duval, Gal, 164 DVD, 138, 208 DVDR, 274 DVDRW, 274 DVD+RW-tools, 275 DVD-brnning, 274 DVD-ROM, 274 Dvorak, 237, 251 dynamiskt lnkbibliotek, 195, 229 Dyroff, Roland, 164 dda (kill), 35 dda tangenter, 237 echo, 31, 94, 97 Eclipse, 116, 400, 411 ed, 80 EDID, 243 EFI, 141 egrep, 77, 94 Ekwall, Bjrn, 181 elektronisk post, 388 ELF, 177 ELILO, 141 ELISP, 88 else, 101 EMACS, 36, 80, 8488, 98, 173, 205 enanvndarlge, 184, 186, 343 ENEA Data, 297 Eng, Eirik, 261 enhetsbokstav, 406 enhetsl, 72 ENIAC, 9 Enlightenment, 227 env, 97 Epiphany, 265 epost, 58, 388

Sakregister Eriksen, Bjrn, 297 Erlang, Agner Krarup, 8 Esc, 82 esd, 396 ESSID, 323 etc, 56 eth0, 312 Ethernet, 178, 300 ETRAX, 181 Ettrich, Matthias, 261, 263 Evolution, 265, 391 Ewing, Larry, 176 Ewing, Marc, 155 ex, 80 exec, 247 exekvering, 61 exim, 423 exit, 33, 42, 49 export, 97 Ext2, 177 Ext3, 211, 214, 216 Extensible Firmware Interface, 141 extrant, 298 Falstad, Paul, 27 FAT, 274 fc-cache, 254, 256 fc-list, 256 FDDI, 300 fdisk, 145, 213 Fedora Core, 133, 155, 156 Fedora Extras, 157 fg, 41, 42, 81 , 101 FIFO-k, 71, 90 l, 28, 31, 52, 53, 61, 70, 209 File Allocation Table, 274 FileMaker, 373 FileRoller, 399 Filesystem Hierarchy Standard, 56, 159, 199 lformat, 52 lnamn, 52 lrttigheter, 61 lserver, 212, 343, 420 lsystem, 23, 51, 52 lsystem (Linux), 199, 209 nd, 59, 95 nd in les, 59 nit tillstndsmaskin, 75 Firefox, 381, 382 restarter, 361 rmware, 169 FirstClass, 373, 377 FLAC, 395, 397, 399 kt, 218 desschemaverktyg, 373 font, 232, 253 Fontcong, 254 Foomatic, 267, 269 forka, 43 formatering, 141 formellt sprk, 75 FQDN, 303 framebuffer, 227 FrameMaker, 378, 393 free, 206 Free as in Freedom, 112 Free Software Foundation, 112, 147, 172 Free Standards Group, 198 FreeBSD, 23, 148 FREESCO, 133 FreeType, 149, 224, 254 frekvensskalning, 218 fri mjukvara, 111, 112 FrontPage, 387 fsck, 214, 215 FTP, 301, 359, 424 ftp, 326 ftpd, 327, 329 fullstndig skvg, 54 fullstndigt kvalicerat domnnamn, 303, 315 funny-manpages, 146 437

Sakregister fuser, 205 FVWM, 227 fysisk skerhet, 340 frgdjup, 239 fnsterhanterare, 226, 248 fnterhanterare, byte av, 247 frgrundsprocess, 35 frlder (parent), 35, 190 Gadu-Gadu, 392 gammakorrigering, 245, 252 garanti, 122 Gates, Bill, 9 gateway, 306 GCC, 168 gcc, 163, 173, 175 gdm, 43, 248 genealogiprogram, 400 General Electric, 10 Gentoo Linux, 133, 165, 229 getfacl, 69 Gettys, Jim, 221 gfontsel, 256 gftp, 326, 333 GHOST, 144 GID, 48, 51 gkrellm, 253 glibc, 173 globbning, 7476, 151 GNOME, 80, 85, 88, 127, 148, 163, 179, 209, 248, 252, 254, 263, 269 GNOME Power Manager, 220 Gnoppix, 166 GNU, 24, 27, 30, 60, 88, 129, 171 GNU Alive, 323 GNU Autoconf, 175, 287 GNU Automake, 175, 287 GNU Autotools, 283, 287, 288 GNU Binutils, 175 GNU C Compiler, 175, 176, 180, 198 438 GNU C Library, 173, 180, 196, 198, 284 GNU Compiler Collection, 168, 284 GNU Fileutils, 173, 175, 199 GNU Gettext, 175 GNU GPL, 122, 146, 177 GNU Grep, 175 GNU GRUB, 11, 140, 140, 143, 175, 184, 187 GNU Hurd, 148 GNU LGPL, 124 GNU libc, 174 GNU Libtool, 287 GNU Make, 175, 284 GNU Math Library, 198 GNU OS, 25, 175 GNU Parted, 144, 145, 175 GNU Privacy Guard, 147 GNU Sh-utils, 175 GNU Tar, 175 GNU Textutils, 175 GNU Zip, 175, 348 GNU Zlib, 175 Gnumeric, 376 GNUStep, 227, 263 GOCR, 271 Gopher, 379 Gosling Emacs, 173 Gosling, James, 173 GParted, 144 GPL, 122, 173, 178 grakkort, 137, 228, 236, 240 grask databas, 373 graskt anvndargrnssnitt, 226 GRAMPS, 400 grena (fork), 35 grep, 59, 76, 77, 94, 95 grip, 34 groups, 50 growisofs, 275, 279 grub.conf, 140, 185

Sakregister grupp, 61 grupparbetesprogramvara, 377 grupper, 50 gruppledare, 36 Grnvall, Bjrn, 331 GTK+, 80, 227, 263, 264, 374, 375 gtoaster, 276 GUI, 226 gunzip, 60 gzip, 60, 126, 185, 283, 343 halt, 193 Hayes, Dennis, 321 Hayes-kommandon, 321 HDLC, 309 hdparm, 208 Hdup, 346 head, 60 hemkatalog, 48, 57, 74, 95 Hewlett-Packard, 23, 198 hexdump, 141 horisontell synkroniseringsfrekvens, 244 host, 320 hostname, 314 hot swap, 422 hotplug, 16, 272 HTML, 301, 380 HTTP, 301, 423 httpd, 43 hubb, 307 HURD, 24, 175 huvudbootblock, 138, 139, 142 hwdata, 243 Hyatt, Dave, 382 Hypercard, 379 hndelse, 259 hrd lnk, 70 hrddisk, 55, 67, 138, 208, 209 hrdvara, 31, 136 hrdvarudebugger, 168 i386, 33 i686, 33 IANA, 304 IBM, 24, 164, 198, 211 IBM PC, 16, 44, 138, 142, 165 IBM S/360, 148 Icaza, Miguel de, 88, 90, 263 ICMP, 308 ICQ, 392 IDE, 138, 139, 208 IEEE, 19 IETF, 212 if, 101 ifcong, 315, 359 ifdown, 319 ifup, 318 IMAP, 301, 390, 424 inbyggda kommandon, 29 inbyggt system, 133, 155, 163, 167, 181, 189, 199 InDesign, 393 inetd, 329 Inetutils, 312, 313, 326 informatik, 8 init, 43, 46, 188, 193, 248 initskript, 192 inittab, 190, 249 inod, 53, 209, 210 inorgan, 235 insmod, 183 install, 291 installationsmedia, 134 insticksprogram, 384, 387 Intel, 33, 148, 198, 219, 224 Intel 80386, 176 Intel 80387, 176 Intermezzo, 212 Internet, 103, 104, 297 Internet Engineering Task Force, 300 Internet Explorer, 384 interprocesskommunikation, 179 intrant, 298, 417 439

Sakregister intrngsdetektering, 359 IP, 305 IP-masquerading, 365 IP-nummer, 191, 305 ipchains, 361 IPCP, 310 iPlanet, 380 iptables, 361, 362 IPv4, 308 IPv6, 308 IPX, 178 IRC, 328, 380, 392 ISA, 33 ISDN, 178, 310 ISO 3166, 99, 237 ISO 639-1, 99 ISO 8859-1, 98, 216, 217 ISO 9660, 277 ISO-l, 134, 277 ITS, 42, 84 ITU-T, 419 iTunes, 398 iwcong, 324 iwlist, 325 Jabber, 392 JACK, 396 jackd, 396 Java, 162 java, 96, 173, 384 jed, 89 JetDirect, 270 JFS, 211 jiddisch, 98, 251 Jigdo, 135 jobb, 40, 93, 107 jobs, 40 joe, 89 joker, 75 Jolitz, Bill, 178 journalfrande lsystem, 210, 211 Joy, Bill, 27, 81 joystick, 235 440 JTAG, 168 jmlpandeprogrammering, 34 K3b, 276 kabelmodem, 322 KAddressbook, 379 kalkylark, 372 Karbon14, 378 KArchiver, 399 katalog, 52, 53, 70 katalogtjnst, 418 katodstrlerr, 244 Kauffman, Joe, 12 KChart, 378 KDE, 80, 88, 148, 165, 179, 248, 254, 261, 269 KDevelop, 400 kdm, 43, 248 Kegel, Dan, 168 Kerberos, 390 Kernighan, Brian, 93 KFormula, 378 KHTML, 387 kickstart, 157 kill, 37, 42, 194, 206, 207, 252 killall, 39, 205207 killall5, 205 Kivio, 378 klassls interdomn-routning, 308 klient och server, 104, 225 klocka, stlla in, 89 klogd, 191, 195 KMail, 379, 391 Knoppix, 166 Knuth, Donald, 8, 393 Kolab Client, 379 Kolab Server, 379 kommandohistoria, 28 kommandoskal, 199 kommandovxlar, 28, 199 kompilator, 168 kompilatorteknik, 75 kompilering, 283

Sakregister Konqueror, 386 kontorsprogram, 372 KOrganizer, 379 Korn Shell, 27 Korn, David, 27 KParts, 263, 374 KPresenter, 378 KPrint, 269 KRita, 378 Kroupware, 377, 379 kryptering, 352 ksh, 27 KSpread, 377 Kugar, 378 KWord, 377 krna, 15, 72 krnavbild, 184 krande process, 35 krniv noll, 187 krniver (runlevels), 16, 43, 189, 189, 191, 249 L4, 23 labbkort, 136, 169 Lai, Glenn, 222 lame, 399 LAMP, 423 Lamport, Leslie, 393 LAN, 298 laptop-mode, 220 Larsson, Alexander, 376 LDAP, 419 ldcong, 197 ldd, 197 Lemmke, Ari, 177 less, 60, 95 Lewis, C.S., 203 LGPL, 124 lib, 57 libpam, 198 libpthread, 198 libtool, 287 licens, 120 LILO, 11, 140, 140, 143, 187 Lindows, 133 Lindows OS, 165 links, 381 Linspire, 165 Linux, 56, 175, 179 Linux From Scratch, 133, 162, 165, 258 Linux Journal, 155 Linux Standard Base, 159, 191, 198 linuxrc, 185, 188 LISP, 85, 88 LISP-maskin, 85, 172 lista, 92 ljudediteringsprogram, 400 ljudkort, 138 ln, 70 LNX-BBC, 166 lo, 312 local root exploit, 358 locale, 98 lokalt ntverk, 298, 317 lokkit, 361 loop-AES, 355 loopback-grnssnitt, 312 losetup, 355, 356 lost+found, 215 Lotus 1-2-3, 372 Lotus Domino, 377 Lotus Notes, 373, 377 lpr, 267 LPRng, 268 ls, 16, 31, 58, 62, 74, 169, 173, 213 lsb_release, 199 lsdev, 205 lsmod, 183, 204 lspci, 136, 204, 324 lsusb, 136 LTSP, 258 Luxor AB, 22 lynx, 381 441

Sakregister lnk, 31, 54, 69, 70 lshuvud (hrddisk), 142 lttviktsprocess, 34 lgnivformatering, 141 lngsam DVD, 208 lsenord, 47 M4, 288 MAC-adress, 315 MacDonald, Peter, 129 Mach, 23 Macintosh, 27, 136, 164, 180, 211, 228, 373, 393 Mackerras, Paul, 321 MacOS, 24, 223, 227, 266, 268, 387 Macromedia Flash, 386 MacWrite, 372 mail, 388, 389 make, 163, 173, 283, 288, 290 MAKEDEV, 202 Makele, 287 Makele.in, 287 MAME, 401 man, 31, 57, 83, 175 Manchester Computing Centre, 129 Mandrake Linux, 133, 164, 415 MandrakeSoft, 165, 198 Mandriva Linux, 164, 166 MAPlay, 397 mapp, 70 mask, 368 maskerade IP-nt, 365 Massachusetts Institute of Technology, 172 master boot record, 138 Matrox, 224 Mattis, Peter, 264 MBR, 138 MCC Interim Linux, 129 McGrath, Roland, 173 McIlroy, Douglas, 90, 262 mediaspelare, 162 442 Mena, Federico, 264 Mesa, 233 menkieli, 98, 251 Microsoft, 380, 387 Microsoft Access, 373 Microsoft Excel, 372 Microsoft Exchange, 377 Microsoft Internet Explorer, 381 Microsoft Outlook, 373, 377 Microsoft PowerPoint, 373 Microsoft Project, 373 Microsoft Windows, 27, 34, 137, 211, 213, 233, 237, 266, 403 Microsoft Word, 372, 378 MIDI, 396, 397, 400 Midnight Commander, 88 mikrokrna, 23, 24 miljvariabel, 97, 203, 217 Miller, David, 180 Mills, David, 335 mingetty, 195 minilogd, 195 Minix, 175, 176, 180, 210 minneshanterare, 179 MIPS, 148 MIT, 172 MIT-licensen, 125, 222 mjukvarupatent, 123 mkdir, 32, 59, 67, 213 mkfo, 71 mkfs, 278 mkinitrd, 294 mkisofs, 275, 276 mknod, 202 modelines, 240 modem, 311, 322 moderkort, 137, 218 modinfo, 183 modprobe, 183, 354 modul, 181, 294 Module-init-tools, 182

Sakregister Modutils, 182, 313 monolitisk krna, 23 MontaVista, 170 montering, 53, 54 monteringspunkt, 53, 71, 213, 354 more, 60, 83, 95 Motif, 227, 259, 260, 264 mount, 72, 187, 213, 277, 356 Mozilla, 36, 74, 120, 149, 254, 265, 312, 375, 381 Mozilla Composer, 388 MP3, 34, 162, 280, 397, 399 MP3-spelare, 273 mpg123, 397 mpg321, 280 MS-DOS, 103, 211 MSN Messenger, 392 MTA, 388, 423 MUA, 388 multi-head, 234 multiboot, 140 multiboot specication, 140 Murdock, Debra, 130 Murdock, Ian, 130, 147 mus, 235 MusE, 400 mutt, 391 Muuss, Michael, 327 mv, 32, 213, 215 MySQL, 116, 123, 423 MySQL AB, 122, 123 Mller, Niels, 331 Mnchhausen, Karl von, 11 Nagios, 425 named pipe, 71 nameif, 316 namnserver, 423 NASLite, 133 NAT, 365 Nation, Rob, 227 National Semiconductor, 220 NATO, 90 Naur, Peter, 76 NCP, 212 NCSA, 380 Net-tools, 312, 313, 313, 320 NetBSD, 23, 133 Netlter, 361 Netscape Communications, 380 Netscape Communicator, 382 Netscape Navigator, 380 Netscape Server, 380 netstat, 206, 317 Netware Core Protocol, 212 Network File System, 212 newgrp, 51 Newton, Isaac, 8 NeXT, 379, 387 NeXTSTEP, 24 Nexus, 379 NFS, 43, 212, 344, 420 nfsd, 43 nice, 39 NIS, 315, 320, 418 NIS+, 419 nisdomainname, 315 nmap, 361 Noatun, 397 Nord, Haavard, 261 NORDUNET, 298 Norton Commander, 88 Novell, 23, 44, 161, 164, 212, 223 nslookup, 320 NTFS, 144, 211, 218, 274 ntfsresize, 144 NTLM, 383 NTP, 302, 335 ntpd, 337 ntpdate, 336 numerisk analys, 8 NuSphere, 124 nVidia, 224 Nvu, 388 nyckel (kryptering), 353 443

Sakregister NYS, 419 ntklasser, 306 ntmask, 306 ntverk, 73, 191 ntverk (i allmnhet), 298 ntverk (i Linux), 311 ntverk (i POSIX-system), 103 ntverk (Internet), 300 ntverkslsystem, 212 ntverkskort, 138, 179, 315 ntverksversttning, 317, 362, 365 OASIS, 376 Object Management Group, 263 objektl, 182 objektorienterad programmering, 230 oclock, 253 OCR, 271 Ocrad, 271 Ogg, 395 Ogg Vorbis, 280, 395, 397, 399 oggenc, 399 OHCI, 272 OLE, 264 Olofsson, Jessica, 121 ombrytningsprogram, 374, 393 Open Group, The, 20, 23, 224 Open Software Foundation, 260 Open Sound System, 396 Open Source, 7 OpenBSD, 23, 133, 179 OpenDocument, 376 OpenGL, 177, 232, 233 OpenOfce.org, 254, 256, 265 OpenSSH, 179 openSUSE, 164 operativsystem, 8, 9 Oracle, 57, 116, 156 ORBit, 264 Orbyte Wireless System, 322 OS/2, 24 444 OSDL, 198 OSI, 299 OSS, 396 OSSH, 331 P2P, 392 paket, 146 paketltrering, 179 palett, 249 PAM, 419 paranoia, 340 parted, 145 Partimage, 144 partition, 139, 141, 353 Partition Magic, 144 partitionering, 141, 141 partitionstabell, 139, 142 Pascal, 76 passwd, 49 patch, 341 PATH, 97 Paul, Brian, 233 PC Card, 324 PCI, 324 PCM, 280, 395 PCMCIA, 324 PDF, 394 peer-to-peer, 135, 392 Pentium, 33, 165 perl, 78, 80, 96, 101, 146 personlig brandvgg, 360 personlig informationshanterare, 373 pgrep, 206 PHP, 423 pico, 88 PID, 35, 37 piltangenter, 28 pine, 88, 390 ping, 309, 319, 327 pkill, 39, 206 PLIP, 318 plipcong, 318

Sakregister PlugnPlay, 16 pmap, 207 POP, 301 POP3, 390 port, 232 port (hrdvara), 204 portabel hrddisk, 273 portage, 165 portnummer, 303 POSIX, 19, 174, 199 postx, 423 PostScript, 267, 376, 394 PowerPC, 148, 164, 165 PPP, 300, 309, 318, 321 ppp0, 312 pppd, 321 Precision Insight, 224, 233 presentationsprogram, 372 Prince of Persia, 176 privilegier, 44 process, 33, 61, 176 processgrupp, 36 Procinfo, 205 procinfo, 206 procmail, 423 Procps, 205, 206 Progeny, 149 programbibliotek, 25, 31, 32, 57, 152, 173, 195, 198, 285 programlapp, 341 programmeringsgrnssnitt, 225 programpaket, 131, 150, 159 programsprk, 26, 93 programsprket C, 21, 27, 180 projekthanteringsverktyg, 373 proprietr mjukvara, 121 protokoll, 225 proxy, 424 ps, 36, 203, 206, 329, 359 PS/2, 236 PseudoColor, 239 Psmisc, 205 pstree, 190, 205 public domain-mjukvara, 113 punktler, 73 PuTTY, 332 pwd, 99 python, 80, 96, 101 qADSL, 323, 366 qed, 76 QEMU, 413 qmail, 423 QNX, 23 Qt, 80, 227, 261, 293, 374, 375 QtParted, 144 Quark Xpress, 393 Quasar Technologies, 261 Quasar Toolkit, 261 RagTime, 393 RAID, 211, 344, 421 RAM-disk, 185 ramverk, 258 RARP, 309 rarp, 318 rawrite, 135 Raymond, Eric S., 116, 117 rc.d, 192 rcp, 328 Real Networks, 398 Real Player, 398 reboot, 193 Red Carpet, 161 Red Flag Linux, 166 Red Hat, 133, 198 Red Hat Enterprise Linux, 156 Red Hat Linux, 155, 174, 229, 342 reguljrt uttryck, 28, 75, 95 Reiser, Hans, 211 ReiserFS, 211 relativ skvg, 54 remount, 215 renice, 40 respawn, 193, 249 445

Sakregister restore, 343 Reveman, David, 223 RFC, 300 RhythmBox, 397 Richter, Adam, 155 RIFF, 280 Ritchie, Dennis, 21, 90 ritprogram, 373 rlogin, 328, 359 rm, 33, 58, 215 rmdir, 33, 59 rmmod, 184 Robinson, Branden, 147 Roell, Thomas, 222 romani chib, 98, 251 romfs, 169 root, 35, 37, 40, 45, 46, 46, 49, 57, 61, 62, 68, 107, 154, 160, 161, 184, 193, 205, 213, 215, 283, 291, 337, 355, 358, 383 root exploit, 358, 359 rootags, 187 rootkit, 359 Rosegarden, 400 Ross, Blake, 382 Rota, Jerome, 395 rotfnster, 227 route, 316 router, 307 RPM, 126, 131, 159, 164, 165, 199 rpm, 160, 160, 161 rpmbuild, 160 rsh, 328 Rsync, 347 RTP, 305 runlevel, 193 Russell, Paul, 361 rr (pipe), 71 rr och lter, 262 Safari, 387 Samba, 212, 330, 413 446 samiska, 98, 251 Santa Cruz Operation, 23 SAP R/3, 57, 156 SAP/R3, 116 sbin, 57 scanner, 270 Scheier, Robert, 221 schemalggare, 179 Schilling, Jrg, 275 scp, 328, 332 SCSI, 138, 139, 204, 270, 275 SeaMonkey, 383 sed, 80, 83, 95 sektor, 142 sendmail, 423 sensorer, 218 serieport, 55 server, 104, 190, 302 Server Message Block, 212 service, 42 Set-GID, 67 Set-UID, 67 setfacl, 69 setxkbmap, 251 Seventh Edition, 22 sftp, 333 sftp-server, 333 SGML, 379 sh, 26, 91 shareware-mjukvara, 113 shutdown, 219 signal, 37, 38 Silicon Graphics, 211, 380 simpleinit, 189 SIMULA, 22 Single UNIX Specication, 19 skal, 35, 76 Sketch, 376 skill, 207 skript, 26, 97, 192, 345 skriptsprk, 96 skrivbordsmilj, 226

Sakregister skrivskyddat lge, 215 skrppost, 391 skrm (bildskrm), 243 skrm (X), 236 skrmhanterare, 43, 248 Slackware, 133 Slackware Linux, 130, 167 Sladkey, Rich, 212 slattach, 318 SLIP, 300, 318 SLS Linux, 164 slktforskning, 400 SM-buss, 220 SMB, 178, 212, 408, 414 Smeets, Ben, 340 Smoorenburg, Miquel van, 189 SMTP, 301, 390, 423 snice, 207 sniffer, 359 social ingenjrskonst, 358 sockel, 73, 304 socklist, 206 Sodipodi, 376 Softlanding Linux Systems, 129 Solaris, 20, 23, 33, 56, 189, 268 sonar, 327 sort, 95 Sound Blaster, 177, 182 sovande process, 35 sox, 281 spam, 391 SpamAssassin, 391 sprkvetenskap, 75 Spyglass Technologies, 381 spr (hrddisk), 142 Squid Cache, 424 SSH, 25, 104, 107, 302, 312, 328, 331, 347, 348 ssh-keygen, 334 sshd, 333 SSL, 390 stadsnt, 298 Stallman, Richard, 19, 80, 84, 112, 172, 173, 263 Stampede Linux, 167 standard, 19 standardgateway, 306 standardgrupp, 48 standardskal, 48 star, 343, 347 StarOfce, 374, 375 start_kernel(), 188 startx, 229 Stasilowics, Jakob, 323 statiskt programbibliotek, 197 stderr, 92 stdin, 91, 105 stdout, 91, 105 Steinberg, 396, 400 sticky bit, 67 stop, 42 Stroustrup, Bjarne, 22 strng, 76 strm, 90 strmsparfunktioner, 218 styrspak, 235 su, 46, 49 subnt, 307 subntmask, 306 Subversion, 352 Sun Microsystems, 22, 212, 374, 418, 420 Sun SPARC, 136, 148, 165, 180, 237 SUNET, 297 Super VCD, 399 SuSE AG, 198 SuSE Linux, 133, 164, 166 suspendera, 42 SVCD, 399 Svorak, 237 swapoff, 215 swapon, 215 swappartition, 145 447

Sakregister Symbolics, 172 symbolisk lnk, 54, 69, 70 symboltabell, 98 synaptic, 152, 153, 161 syslogd, 191 system, 417 System III, 22 System Rescue Cd, 144 System V, 22 systemkrasch, 34 systemuppdatering, 341 systemvetenskap, 8 SysVinit, 189, 199 skerhet, 339 skerhetshl, 340 skerhetskopiering, 342 skvg, 53 tabkomplettering, 27 tail, 60 talk, 328 TAMU Linux, 129 Tanenbaum, Andrew, 175, 180 tangentbord, 138, 235 tangentbordslayout, 251 Tannenbaum, Andrew, 173 tar, 59, 75, 126, 131, 283, 343 Tcl, 31 TCP, 212, 303 TCP/IP, 73, 177, 179, 182, 300 tcpd, 329 tcsh, 27 teckenenhet, 204 teckenenhetsl, 72, 200 teckenuppsttning (fr X), 232, 253 Teletypewriter, 105 Telia, 322 Telia HomeRun, 325 telinit, 193 telnet, 25, 104, 107, 302, 328, 359 telnetd, 328 temperatursensorer, 218 448 TENEX, 27 TENEX C Shell, 27 termcap, 106 terminal, 25, 26, 37, 105 terminalskrivmaskin, 10, 79, 105 terminfo, 106, 107 Terra Soft Solutions, 164 texinfo, 32, 175 texteditor, 33 tftp, 329 tftpd, 329 tgz, 167 The GIMP, 264, 271, 376 The Open Group, 260 then, 101 Thompson, Ken, 21, 51, 76, 90 Thunderbird, 383, 391 tic, 107 tillmpningsprogram, 371 time, 89 tinyX, 228 Tiscali, 322 tjnst, 104 Token Ring, 178, 300 Torvalds, Linus, 3, 20, 175, 179 touch, 64 touchpad, 235 tr, 96 traceroute, 309 trampoline, 187 Transmeta Crusoe, 181 Tridgell, Andrew James, 347, 414 Trolltech, 261 Tru64, 20 TrueColor, 249 TrueType, 254 trd, 34, 198 trdlsa nt, 323 Tso, Theodore, 210 Tsillas, Jim, 222 TTY, 37, 105 tunn klient, 248, 257

Sakregister tunnling, 335 Turbolinux, 166 Tux, 176 Tweedie, Stephen, 210 TWM, 227, 247 typsttning, 393 uClibc, 169 udev, 202 UDP, 212, 304 UHCI, 272 UID, 47, 48 Ultrix, 175 umask, 65, 67 UML, 230, 231 umount, 215, 277 uname, 33, 82 uncompress, 60 Unicode, 98, 216, 255 UniPress, 173 uniq, 96 University of California, 27 UNIX, 19, 51 UNIX-loson, 91 UNIX-liknande system, 19 unixdomnsockel, 73, 317 UNO, 375 up2date, 161, 342 uppdatering, 341 uppstart, 184 uptime, 208 urpmi, 165 USB, 16, 178, 204, 270, 272 USB mass storage, 273 USB-enheter, 272 USB-nyckel, 273 USB-skrivare, 268 useradd, 50 userdel, 50 usermod, 50 UTF-8, 98, 216218 Util-linux, 354 utvecklarmilj, 399 utvecklarpaket, 284, 286 utkad partition, 142 UUCP, 297, 388 VBScript, 26 VCD, 399 verktygskedja, 168 Vermeer Technologies, 387 versionsnummer, 126 vertikal synkroniseringsfrekvens, 244 VESA, 245 VFAT, 218 VFS, 179, 209 VI, 33, 80, 81, 84, 88, 99, 107, 109 Video CD, 399 Videotile, 265 vidhftande bit, 62, 67 VIM, 84 ViolaWWW, 380 Virtual Filesystem, 209 virtuell terminal, 105 virtuellt lsystem, 179, 209 virtuellt minne, 179, 191, 215 virus, 368 VisiCalc, 372 Visio, 373 vmlinux, 184 vmlinuz, 184 VMWare, 413 VNC, 265, 412 vncviewer, 266 Volkerding, Patrick, 130 voodoo, 190 Vorbis, 395 vsftpd, 424 VxWorks, 170 vxel, 28 w, 50 W Windowing Package, 221 Walker, John Mark, 113 Wang, 372 449

Sakregister Warnock, John, 269 WAV-l, 280 wc, 96 webbeditor, 387 webblsare, 36 webbplatskritik, 381 webbserver, 8, 43, 116, 328, 423 webbtjnst, 104 Wei, Pei-Yuan, 380 Weinberger, Peter, 93 Wexelblat, David, 222 who, 50 whoami, 99 whois, 320 Wi-Fi, 323 widget, 227, 259 wildcard, 75 Win16, 34 WinAMP, 397 Wind River Systems, 170 Window Maker, 227 Windows 2000, 211 Windows NT, 211 Windows Terminal Server, 412 Windows Vista, 223 Windows XP, 211 WindRiver Systems, 22 Wine, 413 Winischhofer, Thomas, 242 WINS, 419 WinZip, 399 Wireless-tools, 324 Wirth, Niklaus, 76 WLAN, 300, 323 Word Perfect, 404 Worldvisions, 321 wu-ftpd, 424 wvdial, 321 wvdialconf, 322 X, 221 X Consortium, 224 450 X Window System, 27, 43, 101, 126, 129, 148, 149, 163, 179, 189, 191, 221, 333 X-terminal, 163, 199, 257, 329 X.500, 419 X.org, 224 X.org-konguration, 228 X10, 222 X11, 222 X386, 222 x86, 33 Xaw, 260 xbiff, 253 xcalc, 41, 253 xclock, 253 xconsole, 253 xdm, 43, 229, 248 XDMCP, 257 xdpyinfo, 239 Xenix, 404 Xerox PARC, 42 xeyes, 253 Xfont, 254 xfontsel, 256 XFree86, 125, 222 XFS, 211 Xft, 254 xgamma, 245, 252 Xgl, 223 xhost, 250 Ximian, 164 xinetd, 329, 423 xinit, 247, 248 xkill, 252 xload, 253 xlogo, 253 xlsfonts, 256 XML, 104, 376 XMMS, 280, 397 xmodmap, 251 Xorg (krbar l), 229, 243, 246 xorg.conf, 230, 248

Sakregister xorgcfg, 229 xorgcongure, 229 XPI, 383 xset, 249 xsetroot, 252 xterm, 252, 260 xvidtune, 252 YACC, 172 Yahoo Messenger, 392 YaST, 164, 229 Yellow Dog Linux, 161, 164 Yggdrasil Linux, 155, 166 Ylnen, Tatu, 331 Young, Robert, 155 YP, 315, 418 ypdomainname, 315 YUM, 161 yum, 161, 165 Z Shell, 27 Z3, 9 ZENworks Linux Management, 161 Zephyr, 392 zombieprocess, 190 zsh, 27 kerstrms Nowire AB, 322 ppen kllkod, 7

451

You might also like