Bakåt Framåt Innehåll

3. Vad är Linux - närmare bestämt

Vad är då Linux närmare bestämt. Som redan sagts så är Linux är UNIX-klon eller -kopia skriven helt från grunden. Den är helt fri i meningen att källkoden för operativsystemet är fritt tillgänglig och möjlig att ändra efter behov. Just detta har en stor betydelse i UNIX-världen. För var kommer UNIX ifrån?

I mitten på 1960-talet gi ck flera företag, bland andra AT&T - det amerikanska telefonaktiebolaget - samman med MIT för att skapa ett informationssystem, kallat MULTICS. Det var ett storslaget och massivt projekt och trots hårt arbete låg man fortfarande i slutet av 1960-talet långt efter tidscheman och planer. AT&T bestämde sig då för att dra sig ur projektet (utvecklingen av MULTICS forstatte mer än ett decennium).

En av AT&T forskare som deltagit i utvecklandet av MULTICS - Ken Thomson - forsatte dock att testa ideerana från MULTICS på en oanvänd PDP-7 som stod och skrotade i ett hörn på Bell Laboratories. Snart hade han fått sällskap av Dennis Ritchie och tillsammans utvecklade de den första versionen av UNIX.

Ska man säga något om filosofin bakom UNIX så var den denna: den skulle vara bra på att köra program. UNIX baserades från början på en rad små kompakta program som utförde endast en sak, men denna sak skulle det utföra bra. Genom att sätta ihop eller använda dessa program - eller verktyg som de kallades - kunde programerare bygga ganska komplexa system.

Ja, från början var UNIX ett hackerssyetem. Användarna förväntade att de skulle ha tillgång till alla program på systemet också i form av källkod. När nya problem eller ideer dök upp kunde användarna bifra med nya små verktyg till UNIX.

Denna koppling till programering minskade förmodligen inte av att Dennis Ritchie i början av 1970-talet skapade programeringsspråket C. 1973 skrevs nämtligen UNIX om i detta språk. Eftersom C designades för att det enkelt skulle kunne användas på en rad olika maskinarkitekrurer innebar det i sin tur att UNIX blev ytterst enkelt att porta till andra masiner än de den ursprungligen skapades för.

UNIX blev snabbt ett populärt operativsystem, särskiilt vid olika universitet. För några hundra dollar kunde ett univeristet köpa in hela operativsystemet, komplett med källkod. Redan 1977 kördes UNIX vid mer än 500 ställen. Det fanns ett viktigt skäl till detta, förutom att systemet fungerade bra och var något av en dröm för programerare. På grund av AT&T priviligierade ställning som företag, med monopol på långdistanssamtal, var det förbjudet att använda sina fördelar (läs vinster) till att annonsera, sälja eller stödja datorjukvara. Det var med andra ord egentligen förbjudet för AT&T att göra affärer med det operativsystem som skapats i deras labboratorier.

Det fanns emellertid ett kryphål i paragraferna. AT&T fick handla med så kallat överskottsmaterial. Och det var som sådant man från början klassifierade UNIX. En överskottsprodukt i labben. Det var någ därför man spred den med källkod och allt - och det var därför den framför allt fick fäste vid universiteten. Företag kunde inte gärna bygga upp sina datorresurser på osupportad mjukvara. Men, och det är ett viktigt men, AT&T behöll hela tiden äganderätten (copyrighten till UNIX) - så den kunde inte spridas hur som helst.

När Ronald Reagan och nyliberalismen tog över makten i USA kom emellertid villkoren att förändras för AT&T. Bolagget styckades upp i delar, det tappade sitt monopol och skulle konkurrera på affärsmässig grund. Därmed försvann också hindren för AT&T att göra affärer med sitt nu ytterst populära operativsystem. Därför började också det tidigare något slappa och bakåtlutade distribueringen av UNIX att strypas och AT&T började hårdare bevaka rätten till sitt system. För att skärpa kontrollen skapade man något som kallades UNIX Support Group som i sin tur lade fram vad man kallade en ny standard för UNIX, nämligen AT&T Systen V. Med denna skulle AT&T skörda de kommersiella frukterna av sin uppfinning.

Nu var problemet bara det att UNIX redan hade hunnit spridas så vida - i form av källkod. Redan 1977 började två unga studenter vid Berkeley att utifrån AT&Ts källkod modifiera UNIX kraftigt. Ungefär samtidigt hade den amerikanska administrationen bestämt sig för att de behövde ett standardiserat operativsystem som de kunde använda. Som så många gånger tidigare (se avsnittet om Internet) spelade här ARPA en viktig roll. Under många år kom man nämligen att bidra finansiellt till att en verkligt egen version av UNIX togs fram vid Berkeley; fösta gången släppt som BSD 4.2 1984.

I Berkeleys UNIX-version hade en rad nya beteenden implementerats. Bland de viktigare ett komplett nätverksprotokoll för tcp/ip och en rad nätverksdemoner och -klienter. Själva kärnan i BSD 4.2 härstammade dock fortfarande från AT&T UNIX vilket innebar att Berkeley inte kunde handskas hur som helst med koden. Ett talande exempel är när BSD egentligen skulle uppgraderas till 5.0. I det gamla avtalet ingick en paragraf att Berkeley hade rätt att distribura uppgraderingar till redan befinliga kunder och system, alltså av BSD 4.2. En uppgradering till 5.0 hade emellertid inneburit att de skulle tvingats omförghandla sin licens med AT&T - som vid de laget var djupt komerisiellt engagerat i sin egen produkt System V 3. För att slippa ur detta valde Barkeley däför att kalla det som egentligen var en större uppgradering för BSD 4.3.

Men viktigast av allt. Implementationen av nätverksprotokollet innehölll ingen kod från AT&T. Denna kunde därför släppas fritt tillgänglig i källkodsform. Det var ytterst viktigt för den framtida explossionen av Internet; men det var också viktigt för Linux därför att större delen av nätverksdemoner- och klienter på Linux kommer från Berkeley.

I och med att AT&T hade etablerat System V.3 och Berkeley BSD 4.2 hade det också skapats två delvis inkompatibla UNIX-dialekter och ett delvis oählsosamt klimat av konkurrens och inte minst icke-standard. Dessa två dialekter utvecklades sisda vid sida, samtidigt som en rad företag skapade nya Unix-versioner, där de hämtade basen från ett system men lade till egenskaper från ett annat.

Vi behöver inte gräva ner oss alla detaljer om alla olika versioner. Linux har i huvudsak sina rötter eller snarare likheter med BSD; men har under senare åren inkorporerat allt fler egenskaper från System V.3. Ja, på det vi kan kalla protokoll- och system-nivå hanterar Linux i dag i princip program oberoende av om de skrivit under ett BSD-derivat eller ett System V-derivat. De flesta program kompilerar rakt ur låda - för att använda ettsvengelskt utryck. Därmed har vi slagit fast en viktig egenskap hos Linux där den verkligen lever upp till intentionerna med det ursprungliga UNIX. Linux är suverän på att köra program - nästan oberoende av under vilken UNIX-dialekt de utvecklats.

Vi har redan varit inne på Richard Stallmans betydelse för Linux. Låt oss i all kort het än en gång lyfta fram honom. Ungefär samtidigt som AT&T började dra åt tyglarna för sin licenciering surnade Stallman till på att MIT - där han var verksam - hade äganderättsskyddat det operativsystem som Stallman arbetat hår med - TIS. 1983 skriver han i ett USENET-inlägg att han tänker skapa ett UNIX-liknade operativsystem:

> Date: Tue, 27-Sep-83 12:35:59 EST
> Organization: MIT AI Lab, Cambridge, MA
> 
> Free Unix!
> 
> Starting this Thanksgiving I am going to write a complete
> Unix-compatible software system called GNU (for Gnu's Not Unix), and

> give it away free to everyone who can use it.  Contributions of time,

> money, programs and equipment are greatly needed.
> 
> To begin with, GNU will be a kernel plus all the utilities needed to

> write and run C programs: editor, shell, C compiler, linker,
> assembler, and a few other things.  After this we will add a text

> formatter, a YACC, an Empire game, a spreadsheet, and hundreds of

> other things.  We hope to supply, eventually, everything useful that

> normally comes with a Unix system, and anything else useful, including

> on-line and hardcopy documentation.
> 
> GNU will be able to run Unix programs, but will not be identical

> to Unix.  We will make all improvements that are convenient, based

> on our experience with other operating systems.  In particular,

> we plan to have longer filenames, file version numbers, a crashproof

> file system, filename completion perhaps, terminal-independent

> display support, and eventually a Lisp-based window system through

> which several Lisp programs and ordinary Unix programs can share a screen.

> Both C and Lisp will be available as system programming languages.

> We will have network software based on MIT's chaosnet protocol,

> far superior to UUCP.  We may also have something compatible
> with UUCP.

Det är inte särskilt svårt att se detta som en reaktion enbart mot MIT utan också mot utvekclingen inom UNIX mot ett mer skyddat och svårtdistribuerat system. Stallman och hans medhjälpare har sedan verkligen skapat en lång rad av dessa program: Ett komplett c-bibliotek, en c-kompilator (med allt vad det innebär), ett skal (bash), samt en närmast komplett uppsättning av alla de små program (verktyg) som utgör ett UNIX-system.

Vid 90-talets början saknades emellertid ännu något. Någon kärna hade man inte lyckats få fram - därmed hade man inte heller något eget och fritt operativsystem. I stället spreds FSF:s program till en hel rad andra komersiella UNIX-plattformar, därför att de var bättre än de kommersiella motsvarigheterna och inte minst - i den klassiska UNIX-traditionen gjorde källkoden tillgänglig för användarna.

I stället kom det att bli Linus Thorvald som kom att skapa denna länge efterlängtade fria UNIX-kärna. Tillsammans med alla grundläggande verktyg från FSF fanns till slute ett helt fritt UNIX-system; delvis till Richard Stallmans förtret. Numer kan han inte låta bli att gnälla över Linux-popularitet eftersom Linux på sätt och vis tog äran från Stallmans eget storlsagna projekt. Först de senaste månaderna har FSF lyckats prestera en egen kärna.

Än en gång. Vad är då Linux? Linux är i strikt mening enbart kärnan (kernel). Det är kärnan som utgör operativsystemet. Det är lite svårt att hitta en bra analogi för att beskriva kärnan. Filosofisk sätt bör vi nog betrakta kärnan som en sorts Gud. För det första styr kärnan systemets uppfattning av tid, hur aktiviteten i världen (systemet) kan äga rum. För det andra är det kärnan och enbart kärnan som känner till hur verkligheten (tinget i sig) verkligen ser ut och beter sig. Det är alltså kärnan som vet hur den ska tala med processorn, med internminnet, med hårdiskar, cd-romspelare, serieprortar, skärmar. Allt det som utgör materien har kärnan en direkt kontroll över. Användarna och deras avkommor programmen behöver inte bry sig om det är en EIDE- eller SCSI-disk den utnytjar. I stället talar de med kärnan på ett annat språk (C) och begär tjänster från kärnan. Kärnan står således i vägen och döljer den underliggande materien, världen, för användaren och bidrar i stället med en enhetlig världbild som är oberoende av den materiella.

Kärnan har också en utsänd i denna värld, en kardinal med total makt att styra och ställa i användarnas värld; nämligen root. Root bor inte tillsammans med de vanliga användarna utan härbärgerar på en lite platå strax under UNIX-universums centrum, vid roten. Root ser och hör allt. Kan ändra allt, har tillgång till allt. Root har till och med det unika privilegiet att han eller hon kan stänga av kärnan; ja root har till och med rätt att byta ut kärnan. Om root - så som på Linux - har tillgång till kärnans källkod kan root ändra nästan hur han vill - bara materien begränsar - på kärnans beteende.

Så i och för sig är frågan relevant: vem är mäktigast, kärnan eller root. Är det root som skapat kärnan som sin avbild eller tvärtom. I vilket fall som helst så är det kärnan som så länge världen är uppe och stabil som sköter om intergaerande med materien och som avgör vem som ska få tillgång till materien och när.

Samtidigt har man inte särskilt stor nytta av kärnan allena. En massa saker vi vill göra i vår värld - och som ofta på andra plattformar förknippas med operativsystemet - sköts i själva verket av separata program. Vi måste kunna starta programmen, vi måste kunne hitta i filsystemet, vi behöver kunna läsa det vi finner i filsystemen.

Det är fullt möjligt att samla ihop alla dessa komponenter på egen hand, men det är tämligen bökigt och inget för nybörjaren. Det är därför det finns så kallade Linux-distributioner. En Linux-distribution är kort sagt en samling program som gör att du kan använda Linux-lärnan till något nyttigt.

Ok, tid att övergå till det tekniska. Vad är det då för sorts system vi får om vi installerar en Linux-distribution? Låt mig citera ur Linux Infosheet (översatt till svenska av Kåre Hviid):

· multitasking (multiprogrammering med tidsdelning): flera program kan köra samtidigt.

· multianvändare: fler än en användare kan vara på samma maskin samtidigt (och inga

tvåanvändar-licenser!).

· multiplatform: kör på flera olika CPU, inte bara Intel.

· kör i skyddat läge (protected mode) på 386:an.

· har minnesskydd processer emellan, så att inget enskilt program kan få hela systemet att

gå ner.

· demand loads executables: Linux läser bara från disken de delar av ett program som

faktiskt används.

· gemensamma (shared) copy-on-write sidor (pages) mellan exekverbara filer. Detta

betyder att multipla processer kan använda samma minne för att köra i. När någon

försöker skriva till minnet kommer den aktuella sidan (4KB-del av minne) bli kopierad till

något annat ställe. Copy-on-write har två fördelar: ökad hastighet och minskad

minnesanvändning.

· viruellt minne genom sidindelat minne (som inte swappar (byter) hela processer) till disk:

till en separat partition eller en fil i filsystemet, eller båda, med möjlighet att lägga till fler

swappingareor under körning (ja, de kallas fortfarande ``swapping areas''). Totalt kan 16

sådana 128 MB swappingareor användas samtidigt, vilket teoretiskt ger totalt 2 GB

användbart swaputrymme.

· en samlad minnespool för användarprogram och disk-cache, så att allt fritt minne kan

användas för caching, och cachen kan reduceras vid körning av stora program. (cache =

fickminne)

· dynamiskt länkade gemensamma (shared) bibliotek (DLL:er) och förstås också statiska

bibliotek.

· gör minnesdumpningar (core dumps), vilket tillåter användning av en debugger på program

både när de körs och efter de har kraschat.

· i huvudsak kompatibelt med POSIX, System V och BSD på källkodsnivå.

med en emuleringsmodul som följer iBCS2, även mestadels kompatibel med SCO, SVR3

och SVR4 på binärnivå.

· all källkod är tillgänglig, inklusive hela kärnan och alla drivrutiner, utvecklingsverktygen

och alla användarprogram; dessutom är de fria att distribuera. Numera finns det också

några kommersiella program för Linux som levereras utan källkod, men allt som har varit

fritt kommer att förbli fritt.

· POSIX job control.

· pseudoterminaler (pty:s).

· 387-emulering i kärnan innebär att program inte behöver sköta matte-emulering själva.

Alla datorer som kör Linux ser ut som om de har en matte-coprocessor. Om din dator

redan innehåller en FPU kommer förstås den användas istället för emulering, du kan även

kompilera din egen kärna utan matte-emulering för att spara lite minne.

stöd för många nationella eller specialgjorda tangentbord, och det är tämligen enkelt att

lägga till egna dynamiskt.

· multipla virtuella konsoller: mer än en oberoende login-session genom konsollet, du kan

byta genom att trycka en speciell tangentkombination (oberoende av video-hårdvara).

Dessa är dynamiskt allokerade; du kan använda upp till 64 stycken.

· stödjer många vanliga filsystem, inklusive Minix-1, Xenix och alla de vanliga filsystemen

i System V, och har ett eget avancerat filsystem som klarar upp till 4 TB stora filsystem

och namn upp till 255 tecken långa.

· transparent access till MS-DOS-partioner (eller partioner i OS/2 FAT) via speciella

filsystem: du behöver inga speciella kommandon för att använda din MS-DOS-partion,

den ser ut precis som ett vanligt Unix-filsystem (förutom konstiga restriktioner på

filnamn, flaggor och så vidare). MS-DOS 6' komprimerade partioner fungerar inte just nu

utan en patch (dmsdosfs). Stöd för VFAT (WNT, Windows 95) har lagts till i

utvecklingskärnan och kommer att finnas i nästa stabila version.

· ett speciellt filsystem kallat UMSDOS som låter Linux installeras på ett DOS-filsystem.

läsbart men ej skrivbart HPFS-2-stöd för OS/2 2.1

· stöd för att läsa men ej skriva till HFS-filsystem (Macintosh) finns tillgängligt så som en

patch, med stöd för både läsning och skrivning på väg (inget planerat releasedatum - klart när detta skrivs).

· CD-ROM-filsystem som läser alla standard CD-ROM-format.

· TCP/IP-nätverk, inklusive FTP, telnet, NFS, etc.

· server för Appletalk.

· klient och server för Netware.

· klient och server för Lan Manager (SMB - alltså win 3.11, win 95, win NT).

Det var kanske mycket teknikaliteter på en gång - men så är Linux ett avancerat system. För den som kommer från till exempel Dos, Windows eller Macintosh kan några saker vara värda att extra påpeka. Linux är alltså mulitasking. Det innebär att det inte är några som helst problem att köra flera program (processer) samtidigt. Kärnan fungerar här som en sorts upplyst despot som i jämlikhetens namn låter varje process med jämna mellanrum använda de resurser den behöver. När processen kört en liten stund tilldelas en annan process tillgång till resurserna. Processerna står så att säga i en kö, men varje process får bara utföra en del av det den vill utföra i taget - sedna får den ställa sig längst bak i kön igen. Enbart kärnans emmisarie root kan ändra på denna köordning.

Linux är också ett fleranvändarsystem. Flera stycken användare kan alltså samtidigt utnytja operativsystemets resurser - vara inloggade som det kallas. Root kan installera nya program, samtidigt som Kalle skriver en uppsats, Nisse surfar på Internet och Evil försöcker hacka sig in i systemet. Dessa kan sitta vid en skärm (Consoll) fast ansluten till själva den fysiska datorn, vid en terminal anlsuten till datorn via en serieport, vid en Xterminal ansluten till samma nätverk som datorn, vid en annan Consoll ansluten till en annan dator på samma nätverks som Linux-datorn.

Samtidigt som detta äger rum kanske användaren Matt hämtar filer från Linux-datorns anonyma ftp-tjänst, någon annan kollar på hemsidorna som är upplagda på datorn och använder därmed via http-demonen datorns resurser. Som vi såg ovan kan en Linux-dator också användas som en filserver för Macintosh- och Windows-datorer.

Därmed är en helt del sagt både om vad Linux är och vad Linux kan användas till.

Allt man normalt kan utföra på en UNIX-maskin kan utföras på Linux med hjälp av den klassiska uppsättningen verktyg: ls, tr, sed, awk, pr.

Linux är en utmärkt plattform att utveckla program på. En rad programeringsspråk finns tillgängliga på Linux: C, C++, Objective C, Java, Modula-3, Modula-2, Oberon, Ada95, Pascal, Fortran, ML, Scheme, Tcl/tk, Perl, Python, Common LISP och många fler. Samt en rad utvecklingsverktyg: gcc, gdb, make, bison, flex, perl, rcs, cvs, prof.

Eftersom flera av dessa programspråk fungerar även på andra plattforar går det att använda Linux för att utveckla program för dessa också: t.ex C, tcl/tk, perl och python. Det har på senare tid börjat dyka upp en del visuella utvecklingsverktyg, bland annat för C++, tcl/tk och java.

Med Linux kan man idag skapa en kraftfull grafisk arbetsstation. X11 finns för Linux i form av XFree86 som stöder en lång rad skärmkort. Det finns även kommersiella X-servrar. Sedan kan man välja mellan en hel uppsättning så kallade fönsterhanterare (som styr gränssnittet mot X-servern), så som olwm, mwm, fvwm, fvwm95 med flera.

Det finns också en hel uppsättning program som fungerar under X11. Linux blir en utmärkt Internet-surf-station, med netscape, xft, xgopher, xarchie med flera program. Det finns ritprogram, bildbehandlingsprogram, editorer, kalkylprogram med mera med mera.

En hel rad biblioteksrutiner finns också för att skapa program för X11. Från Xt som följer med X11-distributionen, över mer eller mindre fria varaianter som EZWGL, Xform, Qt till den kommersiella motif (det finns numer en fri motif1.2-klon som börjar fungera tämligen väl - nämligen lesstif).

Till Linux finns också i princip alla kraftfulla textbehandlingssystem som är populära under UNIX. Det som utmärker dessa är att man skriver in formateringskommandon direkt i texten (ungefär som i HTML) och sedan behandlar denna text med någon form av makron som sedan anpassar den för utskrift i olika former. Det går att skapa ytterst snygga produkter med dessa verktyg. Dessa har namn som: TeX, groff, doc, ez, Linuxdoc-SGML och andra.

Det finns ännu ingen fri och riktigt bra produkt till Linux som kan liknas vid ett så kalat officepaket. Det närmaste man kommer detta är Andrew User Interface; av någon anledning tycks det inte fått så stort genomslag i Linuxvärlden. På flera håll pågår emellertid utveckling av fria ordbehandlare till Linux. Det finns ett par fria eller sharewarekalkylprogram till Linux.

Är man beredd att betala finns emellertid det ytterst kraftfulla officepaktetet Applix till Linux, som innehåller en ordbehanlare, kalkylprogram, presentationsprogram, ritprogram, html-program, epost-program och i den fulla versionen ett visuelt program för applikationsutveckling. Det går också att köpa ett officepaket som är baserat runt WordPerfect. Ett annat som är på gång är StarOffice, som kommer vara fritt för personligt bruk men kräva licenciering för kommerciellt bruk.

Inte minst fungerar Linux utmärkt som Internet-server för en hel rad internet- och intranettjänster. Det omättligt populära webservern appache finns för Linux (den går dessutom att köra om till en så kallad secure server som arbetar med kryptering), wu_ftpd går som en dans på Linux, sendmail lika så , eller newsservern innd, eller DNS-servern named. Bara för att ta något ur högen. Linux fungera också mycket bra som en ppp-server, eller som Firewall eller Router.

Självklart fungerar Linux också utmärkt som en alldeles vanlig Unix-server, med möjligheter till sådant som NFS, nis, kerberos, skrivarserver. Som redan sagts kan den också fungera som en filserver för alla vanliga pc-system.

Vad mer behöver man?


Bakåt Framåt Innehåll