Linux-introduktion for Windows-brugere

Version 0.16, opdateret 4/8-2000

Allan Høiberg, Kolding

allan@hoiberg.dk


Forord


Denne tekst er påbegyndt efter et foredrag i Fyns Linux User Group, FLUG, 25/11-99, og henvender sig til alle, der kommer fra Windows til Linux og bliver forvirrede over de mange forskelle. Teksten må frit kopieres i enhver form, så længe denne notits er med. Forslag til ændringer og udvidelser modtages gerne på adressen allan@hoiberg.dk.


Jeg har forsøgt at samle nogle af de spørgsmål, man står med som Linux-begynder, når man skifter fra DOS/Windows. Mit udgangspunkt er en fuldt installeret Red Hat 6.0, så der kan selvfølgelig være programmer, der ikke findes, eller som fungerer en smule anderledes i den distribution, du selv benytter. Jeg er meget interesseret i at høre om problemer med at benytte de tips, jeg giver, så teksten kan blive anvendelig for så mange som muligt.


Spørgsmålene stammer flere steder fra - mit eget arbejde med Linux, venner og bekendte, forskellige foredrag og ikke mindst fra mine elever på Kolding Udviklingshøjskole.


I forbindelse med undervisningen på Kolding Udviklingshøjskole har jeg tilføjet nogle punkter, der ikke direkte har med forskellene mellem Windows og Linux at gøre, men som lige så godt kan kaldes ”generelt”.


Jeg er selv relativt ny i Linux endnu, men lærer nyt, efterhånden som jeg har tid. Der kan være fejl i denne tekst, selvom jeg afprøver eksemplerne efterhånden, og checker forskellige steder, om det, jeg skriver, passer med hvad andre har sagt. Hvis du finder faktuelle fejl, eksempler der ikke fungerer, har bedre eksempler eller spørgsmål, eller hvis du bare finder teksten anvendelig og har kunnet bruge den til noget, er du meget velkommen til at skrive til mig.


Nye udgaver af dette dokument vil blive lagt til download på http://allan.hoiberg.dk/download/linux.zip, og det hele vil senere være tilgængeligt på min hjemmeside et eller andet sted… Jð

Lidt generelt


Når du nu har sat dig for at lære Linux at kende, er det en fordel at huske på, at der aldrig er nogen, der har lovet, at Linux er ligesom DOS eller Windows – så var der jo ingen grund til at skifte, vel? Man taler meget om, at Linux er ved at blive en seriøs konkurrent til Windows, men hvis det så ud på samme måde og blev betjent på samme måde, er der ikke noget interessant ved at undersøge dets muligheder. Linux er ved at blive en Windows-konkurrent på samme måde som Windows95 var en konkurrent til Windows 3.x – det er et system, der virker på en lidt anden måde, kan nogle andre ting og skal bruges på en lidt anden måde – og som, når alt kommer til alt, kræver tilvænning men byder på en masse nyt til gengæld.


Et sted, hvor vi typisk lægger mærke til store forskelle, er på tastaturet. Det viser sig, at Linux-programmer ikke altid er skrevet til at håndtere taster som Esc, Alt og F1, men til gengæld kan det lade sig gøre at lave om på mange detaljer omkring, hvordan sådanne taster fungerer.


En anden vigtig forskel, der driller mange er, at der i Linux er forskel på store og små bogstaver i langt de fleste sammenhænge – men specielt når vi taler kommandoer!


I forhold til Windows er det endnu vigtigere, at man husker at lukke en Linux-maskine kontrolleret ned, enten med Ctrl-Alt-Delete eller med kommandoen halt. Linux er, som de fleste Unices, beregnet til at køre hele tiden, og den spilder ikke tid med, hele tiden at skrive sine data til disken. Hvis man bare slukker en Linux-maskine, kan den have så mange ændringer liggende i RAM, at det går helt i kludder for den bagefter. Ctrl-Alt-Delete genstarter ikke bare, men laver en kontrolleret nedlukning, og slutter af med en genstart, hvor man så kan nå at slukke maskinen.


Det kan være beroligende at vide, at set i en større sammenhæng er det ikke Linux, der er ”anderledes,” men derimod DOS og Windows. Det nytter ikke at lade sig irritere af, at tingene ikke er, som vi er vant til – Linux’ måde at gøre tingene på blev brugt længe før nogen havde tænkt på DOS.


Linux er et langt stykke ad vejen en variant af Unix, der, som Bill Gates engang prøvede at få til at lyde som en ulempe, bygger på over 30 års erfaring (han sagde det i 1999). DOS er fra omkring 1980 og Windows i de udgaver, de fleste kender, fra starten af 90’erne. Efter min erfaring er det, når vi sammenligner disse to platforme, ikke ubetinget nogen fordel at være ”nyere”, specielt ikke når man insisterer på at gøre det hele på sin egen måde i stedet for at bruge andres erfaringer – men skal vi endelig bruge det som kvalitetskriterie, blev arbejdet med at skrive Linux fra bunden først påbegyndt i starten af 90’erne.


Bortset fra det skal vi ikke starte en religionskrig hér – hvilket operativsystem der er bedst, afhænger i meget høj grad af, hvad man bruger sin PC til, og de fleste vil nok, ligesom jeg selv, vælge at benytte både Windows og Linux på samme maskine, hvilket er et klart tegn på, at der ikke er ét rigtigt svar.


Linux er – stik mod, hvad mange ynder at fortælle, når Windows skal skældes ud, ikke fejlfri. Det er meget mere stabilt end Windows i enhver udgave, men der er fejl, specielt i Gnome. Til gengæld er fejl i Linux ikke underlagt en multimilliardkoncerns vurdering af, hvornår det kan betale sig at rette en fejl. En fejl i et Linux-program bliver som regel rettet lige så hurtigt som den bliver opdaget, og i værste fald kan man finde kildekoden til det hele og rette fejlene selv!


Mange funktioner i Linux kan kun udføres af brugeren root, der har adgang til alt. Hvis du prøver at gøre eksemplerne i teksten efter, vil du for eksempel finde ud af, at en almindelig bruger ikke kan starte fdisk (fejlmeldingen lyder, som om programmet slet ikke findes) og halt (der kræver at få root’s password,) eller for den sags skyld skrive til /etc/fstab. Det er normalt, og er med til at give den stabilitet, Linux (og Unix generelt) er kendt for: Det er kun ham, der ved, hvad han laver, der må ændre i operativsystemets allerhelligste. Det er fristende at arbejde som root hele tiden, men så er du selv ude om balladen, når du kommer til at skrive noget dumt som ”rm –rf *” ude i roden og ser alt fordampe uden yderligere kommentarer. Den underlige plasticagtige lyd bagefter er din pande, der rammer tastaturet i frustration, men nu er du advaret: Brug kun root til de ting, en almindelig brugerkonto ikke kan få lov til! ;-)


Apropos yderligere kommentarer: Man hører af og til, at Unix er skrevet af programmører til programmører. En tolkning af det er, at mange programmer forventer, at man ved hvad man gør, og at man ikke vil forstyrres uden grund. En masse kommandoer resulterer bare i en ny prompt uden tilbagemelding – det betyder normalt, at tingene er gjort som man bad om, og ikke at der er noget galt! En anden årsag kan være, at man, da Unix blev skabt, ikke nødvendigvis havde ISDN-linier til at forsyne sine terminaler med tegn, så man kunne næsten nå at vente på hvert eneste bogstav, der skulle skrives på skærmen. Så var det nærliggende at have så få ligegyldige ”ok”-meldinger som muligt, og til gengæld at forkorte kommandoerne så mange steder man kunne komme til det.

Grafiske brugerflader er ikke det eneste rigtige


I Linux er strukturen temmelig anderledes end i DOS/Windows, og konsollen (det, der svarer til DOS’ kommandoprompt) er ikke en forældet forløber for den grafiske brugerflade (det er den heller ikke i Windows9x, men det er en helt anden og halvvejs religiøs diskussion :-) De fleste af de funktioner, den grafiske brugerflade anvender, ligger ”nedenunder,” og de grunde, man har for at skille DOS ud fra Windows gælder ikke i Linux-sammenhæng, fordi Linux fra starten er født med de fordele, der først kom til Windows med den såkaldt DOS-uafhængige Windows95: 32-bit over hele linien, ægte multitasking, lange filnavne og alt det dér.


Hvis man er bare lidt nysgerrig efter at lære noget om, hvad Linux kan, foregår det udenfor den grafiske brugerflade, hvor alle de geniale indfald fra mere end 30 års professionelle brugeres arbejde med Unix ligger til fri afbenyttelse. De grafiske brugerflader er kommet til undervejs for at gøre det muligt at køre programmer, der i kraft af deres design nu engang bedst lader sig betjene med en mus og en grafisk terminal, men det er først for nylig, man er begyndt at gå Windows i bedene med ting som brugervenlighed og overskuelige menuer som vigtige designkriterier – jeg vil endda vove at påstå, at det først og fremmest er Linux’ pludselige stilling som konkurrent til Microsoft, der rigtigt har sat gang i, og fokus på, udviklingen af ”pæne” grafiske brugerflader af den art, der går mere op i brugervenlighed end i at kunne betjenes hurtigt og effektivt.


En anden årsag til, at jeg ikke vil bruge så meget tid på grafiske programmer er, at de minder tilstrækkeligt meget om Windows til, at de fleste vil kunne ”regne dem ud” af sig selv. Som tidligere nævnt er jeg interesseret i at høre om det, hvis du sidder med en anden mening og/eller har konkrete spørgsmål.

X


Lad os starte med at slå fast, at den grafiske brugerflade ikke hedder X-Windows, men X Window System, X11 eller bare X.


Om man bruger KDE eller Gnome eller en af de andre er ikke så vigtigt for de almindelige programmer, der ikke er skrevet specielt til en af disse to. Et X-program er ikke gravet så dybt ind i brugerfladen som Windows-programmer er.


Faktisk er mange Linux-programmer skrevet, så det samme program kan arbejde tekstbaseret og som X-program, alt efter hvor man starter det fra.


X er opdelt i flere uafhængige dele, og kører altid oven på Linux; ikke i stedet for, sådan som Windows 9x påstås at gøre i forhold til DOS.


Vi skelner mellem X-serveren, der sørger for at styre skærm, mus og tastatur, og resten af systemet, X-klienten, der bestemmer, hvordan det hele skal se ud. X-serveren er til en vis grad sammenlignelig med en grafikdriver – det er den, vis skifter ud, når vi skifter grafikkort. Men til forskel fra en Windows-driver, er X-serveren også i stand til at kommunikere med de programmer, der kører, via netværk. En X-klient er ligeglad med, om skærmbilledet skal vises på den samme maskine som det selv kører på – på samme måde som et tekstbaseret Linux-program typisk er ligeglad med, om det bliver startet fra den maskine, det ligger på, eller via telnet.


Denne opdeling betyder faktisk, at vi kan få en X-server til Windows, og så køre vores Linux-programmer på en Linux-maskine, men styre dem fra Windows-maskinen.


X-klienten er også delt op i flere forskellige dele, og det giver os mulighed for at tilpasse systemet utrolig meget til vores egen smag – men det vil jeg ikke komme ret meget ind på nu.


Jeg antager, at du har fundet ud af, at du starter den grafiske brugerflade med kommandoen startx, hvis du ikke har valgt, at du altid starter i X, når Linux starter op.


I et Red Hat 6.0-system har du normalt valget mellem KDE og Gnome som desktop, når du installerer, men hvis du laver en fuld installation, får du Gnome uden yderligere diskussion. De fleste programmer er ligeglade, men betjeningen at selve brugerfladen varierer mellem KDE og Gnome, og efter min erfaring er Gnome i den udgave, der følger med RH6.0, mindre stabil end KDE selvom den også er lidt pænere.


Er du irriteret over, at du ikke ”står i” nye vinduer, når de kommer frem i Gnome? Det har faktisk ikke noget med Gnome selv at gøre, men styres af window-manageren, der er endnu et af de lag, X består af. Gnome bruger som standard en window-manager ved navn Enlightemnent.

Gå ind i Settings og start Gnome Control Center (eller tryk på værktøjskassen nede i bunden af skrivebordet,) vælg ”Window manager” og tryk på ”Run configuration tool for Enlightenment”. Under punktet Behavior kan du vælge, at alle nye vinduer skal have fokus, når de kommer frem, ligesom i Windows (om det så egentlig er en fordel er en helt anden snak...)


Hvis du gerne vil starte KDE i stedet for Gnome, kan du prøve disse tre kommandoer, mens du står i en konsol (husk, at der er forskel på store og små bogstaver, og læg mærke til punktummet foran Xclients):

cd

echo ”exec startkde”>.Xclients

chmod +x .Xclients


Første linie skifter til dit hjemmebibliotek – hver bruger har sin egen opsætning af den grafiske brugerflade, så ændringen påvirker kun den bruger, du er logget ind som.

Dernæst laver du en fil med navnet .Xclients. Punktummet gør, at filen er skjult, så den ikke vises med en almindlig ls-kommando (ls er Linux’ svar på DOS’ dir-kommando.)

chmod-kommandoen gør, at filen gøres eksekvérbar. I praksis bliver den forvandlet til det, der under Linux svarer til en BAT-fil – et såkaldt shellscript. Når X starter op, er det en del af processen, at der i brugerens hjemmebibliotek kigges efter en fil med navnet .Xclients, og hvis den eksisterer, får den lov til at afgøre, hvilket program der startes til at styre brugerens desktop. Hvis du glemmer chmod-kommandoen, vil X ikke starte længere, fordi den ikke kan få lov til at udføre filen.


Hvis du senere fortryder, og vil tilbage til gnome, kan du bare slette filen igen:

cd

rm .Xclients


Et par andre nyttige ting i forbindelse med X


Den grafiske brugerflade kan afbrydes her og nu med Ctrl-Alt-Backspace (backspace ”slet bagud”-tasten.)

Programmet Xconfigurator bruges til at vælge hardware-indstillingerne til X. Xconfigurator kaldes fra konsollen.

Hvis du i Xconfigurator har valgt at kunne bruge flere forskellige opløsninger, skifter du mellem dem med Ctrl-Alt-(plus/minus på det numeriske tastatur)

xvidtune kan finindstille grafikkortets ydelse – men er ret langhåret!

Når du starter et grafisk program fra et konsolvindue, er konsolvinduet låst, så længe programmet kører. Det kan afhjælpes ved at skrive et og-tegn (&) efter programnavnet, når du starter det.

Alt-F1 til –F4 i Gnome, og Ctrl-F1 til Ctrl-F4 i KDE, skifter skrivebord. Et eller andet sted i opsætningen kan du indstille, hvor mange skriveborde, du vil have, men fire er så vidt jeg ved standardinstillingen i begge systemer.

KDE har vinduerne en lille tegnestift-knap. Hvis den er aktiveret i et vindue, er vinduet synligt på alle skriveborde. I Gnome klikker du på vinduernes kontrolbox (øverste venstre hjørne) og vælger ”stick/unstick” i stedet.

Ctrl-Alt-F1 til -F6 skifter til en tekstkonsol. Den konsol, du startede X fra, står og venter på, at X slutter, og er fyldt med kryptiske beskeder fra de programmer, du har startet i X. Alt-F7 vender tilbage til X.

Vigtige websites om X


http://www.xfree86.org/ - her findes opdaterede X-servere, når dit grafikkort er nyere end din Linux-distribution.

http://www.kde.org/ - hjemsted for KDE, der i skrivende stund er tæt på at have en gratis kontorpakke klar også.

http://www.gnome.org/ - hjemsted for Gnome-projektet, som løbende bliver forbedret.

http://www.themes.org/ - nye temaer, når skrivebordet bliver for kedeligt. Her er også en række links til mange af de andre X-relaterede sites.

http://www.x.org/ - mere information om, hvordan klient/servermodellen i X fungerer.

Filsystemet


En disk er i Linux ikke et uafhængigt drev med sit eget drevbogstav. I stedet for uafhængige drev har Linux ét filsystem, der umiddelbart ser ud på samme måde som et vilkårligt DOS-drev, bare uden drevbogstav og kolon i starten. I stedet for backslash bruger Linux en skråstreg til at adskille de enkelte subdirectories fra hinanden, så en tilfældigt udvalgt fil kunne f.eks. have navnet /var/log/messages i Linux.


I stedet for at skifte drev som i DOS, mounter vi drevene i Linux. Når et drev mountes, hægtes det på filsystemet, som om det var et hvilket som helst andet subdirectory, bare med den forskel, at filer, der ligger i dette directory-træ fysisk er placeret på en separat disk. Der findes dog programmer, der lader os bruge disketter på samme måde som vi er vant til fra DOS (mtools)…


Filnavne i Linux er ikke begrænset til otte tegn, og har aldrig været det. Derfor er der ikke noget problem med lange navne, der ikke fungerer med ældre programmer, og de deraf følgende forkortede navne med tilder i, som man hænger på i de fleste DOS-programmer.


I DOS-verdenen er vi vant til at en fil har en filtype, der fortæller os, hvilket program den er lavet med, om den selv er et program eller noget andet. Vi var, indtil man begyndte at kunne skjule filtypen i Windows95, vant til, at en fil der sluttede på .COM, .EXE eller .BAT var et program, man kunne starte ved at skrive navnet på filen direkte. I Linux er det, at en fil kan startes, ikke synligt på filens navn, men det er i stedet en egenskab ved filen, ligesom en fil i DOS kan være skjult eller skrivebeskyttet. Når vi laver et shellscript (det, der svarer til en batchfil i DOS) slutter vi altid af med at gøre den eksekvérbar, før den kan startes. Til det bruger vi kommandoen chmod, der bedst kan sammenlignes med attrib under DOS.


Udover egenskaber som eksekvérbar, har hver eneste fil i Linux tildelt en ejer og en gruppe – og både rettigheder til at læse, skrive og udføre filen er tildelt separat til dens ejer, medlemmer af dens gruppe, og alle andre på systemet – alle filer har altså tre sæt rettigheder!


I modsætning til DOS har en fil til gengæld ikke en attribut, der gør den usynlig for en normal dir (eller ls, som kommandoen hedder i Linux.) I stedet skal filens navn starte med et punktum. En gennemsnitsbrugers hjemmebibliotek vil hurtigt blive fyldt med ”dot-filer”, fordi mange programmer gemmer deres brugerafhængige opsætning i dem.


Den fysiske opdeling af en disk er anderledes end i DOS – men Linux kan naturligvis både læse og skrive de fleste andre operativsystemers filsystemer.

Et par udvalgte underbiblioteker


/etc indeholder en masse konfigurationsfiler, og mange af dem kommer man før eller siden til at stifte bekendtskab med. I /etc/rc.d finder vi de filer, der bestemmer, hvad der sker under opstart og skift mellem de såkaldte runlevels. I /etc/skel ligger det, der lægges ud i alle nye brugeres hjemmebiblioteker, når de oprettes.


I biblioteket /dev finder i et hav af filer, der i virkeligheden for de flestes (men ikke alles) vedkommende er henvisninger til en driver, som er indbygget i kernen.

/dev indeholder ikke kun drivere. Et typisk eksempel er /dev/cdrom, der normalt henviser til en anden enhed, så vi ikke behøver at huske, hvilken controller vores CD-ROM sidder på. På samme måde finder vi /dev/mouse.


/proc indeholder også filer, der ikke eksisterer på disken, men styres af programmer. Mange af filerne i /proc styrer indstillinger i kernen, eller giver os oplysninger om systemet. Prøv f.eks. kommandoen cat proc/cpuinfo der udskriver kernens oplysninger om din processor.


/home indeholder de enkelte brugeres hjemmebiblioteker, inklusive et par brugere, der styres af systemet, såsom httpd, der er maskinens indbyggede webserver (/home/httpd/html/index.html er den fil, folk får severet, når de kontakter Linux-maskinen med en browser.)


/var indeholder filer, der ændres tit, såsom printerkøer og logfiler. I /var/log/messages kan vi se beskeder fra systemets opstart og fra programmer, der er sat til at logge deres status.


/usr indeholder systemfiler, programmer og meget andet. /usr/src/linux indeholder kildekoden til kernen, så her kan vi omkonfigurere og recompilere kernen, når det bliver tid til den slags. /usr/doc/HOWTO indeholder en masse tekstfiler, der giver mere eller mindre detaljerede instruktioner i alt mellem himmel og jord - forudsat at det har noget med Linux at gøre, forstås – f.eks. Danish-HOWTO, der forklarer opsætning af dansk tastatur og meget andet relevant.


/boot indeholder filer, der bruges til at starte systemet op med. Det er ikke Linux’ svar på AUTOEXEC.BAT og CONFIG.SYS (det ligger gemt i /etc-hierarkiet,) men selve kernen, der er tale om. Når man har en harddisk på over 8 GB, er det vigtigt, at /home er placeret på en partition, der ligger før cylinder 1024 (i det første 8 GB,) fordi kernen skal indlæses herfra, og først bagefter kan overtage styringen af disken, så den kan udnytte resten af disken.

Partitioner


Partitioner på en disk er ikke navngivet med bogstaver som i DOS, men med numre, der hægtes på selve diskens navn. Hvis vi har et IDE-system, vil den primære master hedde /dev/hda. Denne enhed er selve disken. Dens partitioner er nu navngivet /dev/hda1 og frem.


Hvis du kender til partitionering, vil du vide, at en disk maksimalt kan have fire primære partitioner, og en af disse kan så være en udvidet partition, der indeholder logiske drev. I Linux er der altid reserveret plads til de fire primære partitioner, /dev/hda1 til hda4. Hvis én af dem gøres til en udvidet partition, vil de logiske partitioner i den udvidede partition blive nummereret fra 5 og op – uanset om vi har udnyttet alle fire primære eller ej.


I DOS har vi typisk en enkelt primær partition, C:, og et antal logiske drev, D: og frem. Hvis vi tilføjer en harddisk mere, og laver en primær partition på den også, vil den komme til at ligge som D:, og alle andre drev flytter rundt. Dette problem optræder ikke i Linux, fordi der ikke er noget koncept med drevbogstaver og deres rækkefølge. Tilføjer vi en disk her, er dens navn afhængigt af, på hvilken controller den sidder, og partitionerne er nummererede fra 1 og frem på samme måde som på /dev/hda i eksemplet lige før.


For at bruge en partition i Linux mounter vi den et sted i filsystemet, og så kan vi bagefter være fuldstændig ligeglade med, hvilken disk den egentlig ligger på. Vi kan mounte netværksdrev på samme måde, så det kan lade sig gøre at have det meste af selve operativsystemet samlet på én maskine, og så bruge en antal mindre maskiner med små harddiske, som om de indeholdt en komplet Linux-installation hver især.


Erfarne administratorer deler efter sigende deres systemer op i mange partitioner, så f.eks. /home-hierarkiet ligger på en disk for sig selv – det gør det f.eks. lettere at opgradere systemet, fordi brugernes data (der alle ligger under /home) kan ”kobles fra,” mens resten af systemet slettes og ominstalleres.


Lad os tage et kort kig på filen /etc/fstab (med kommandoen cat /etc/fstab):

/dev/hda6 / ext2 defaults 1 1

/dev/hda7 swap swap defaults 0 0

/dev/fd0 /mnt/floppy ext2 noauto 0 0

/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0

none /proc proc defaults 0 0

none /dev/pts devpts mode=0622 0 0


fstab indeholder en beskrivelse af systemets partitioner, som de kendes af Linux. I første kolonne står partitionens nummer, fulgt af dens mount-point (hvor i filsystemet, den sidder,) filsystemets type og endelig forskellige andre indstillinger. Her kan vi for eksempel se, at roden på mit system ligger på /dev/hda6 og er af typen ext2 (second extended, Linux’ normale filsystem.)

De to sidste linier skal altid være med, fordi de er vigtige for kernen, men hvis vi kigger på cdrom og fd0 (floppydrevet) kan vi se, at der står noauto i fjerde kolonne. Det betyder, at disse to drev ikke er mounted, når vi starter op. Praktisk nok, når det nu er drev, der ikke altid sidder noget i. Ved CD-drevet står der endvidere ro for Read Only.


De to tal i de sidste kolonner kræver en længere teknisk forklaring, som egentlig er overflødig lige nu. Der skal bare stå nul, medmindre du ved, der skal stå andet. ;-)


Hvis du vil vide mere om mulighederne i /etc/fstab, og om, hvad de sidste to kolonner betyder, kan du prøve kommandoen man fstab, som giver dig manualsiderne for filen. Når du er færdig med at læse, kommer du ud ved at trykke på q.


Når en partition er nævnt i /etc/fstab, behøver vi ikke at give så kryptiske kommandoer som ellers for at få det op at køre. Hvis vi vil bruge en CD, klasker vi den i drevet og skriver mount /mnt/cdrom hvorefter Linux ved hjælp af fstab finder ud af, hvad der skal gøres. Hvis vi ikke havde drevet stående her i forvejen, skulle vi til at angive, hvilken enhed og hvilket filsystem, vi ville bruge: Noget i stil med mount –t iso9660 /dev/cdrom /mnt/cdrom. I eksemplet bruges ”-t” til at fortælle, at vi bruger iso9660-filsystemet, der er det normale på en CD. Linux kan tit selv afgøre, hvad der er det rigtige system, men i ældre versioner kunne automatikken f.eks. glemme, at et Win95-drev brugte lange filnavne, hvis man ikke udtrykkeligt gjorde opmærksom på det ved at angive typen vfat (mount antog, at den korrekte type var msdos.)


Mount-processen udskifter et underbibliotek med det, vi mounter – der skal altså eksistere et underbibliotek, før vi mounter noget andet der – et såkaldt mount-point. Det gør til gengæld ikke noget, at det eksisterende underbibliotek ikke er tomt – indholdet bliver bare ”væk” indtil vi afmonterer det mountede system igen med umount: umount /mnt/cdrom.


Når vi mounter en CD, bliver drevet normalt låst.


Når vi har et andet drev, vi ønsker at bruge fra Linux, er det lettest at angive det i /etc/fstab. Jeg har f.eks. et C-drev med Windows95, som jeg vil have siddende under /mnt/c. C: var den første partition, jeg lavede på disken, så den sidder som /dev/hda1. For at være sikker, prøver jeg at mounte den manuelt, før jeg sætter automatik på den:


cd /mnt

mkdir c

mount –t vfat /dev/hda1 c

ls c

umount c


Som det skulle være til at gætte, skifter jeg her til /mnt, som er Red Hat Linux’ normale sted for manuelt monterede filsystemer. Det er ikke noget krav, at man bruger /mnt; det kan gøres hvor som helst. I /mnt opretter jeg biblioteket c (mkdir svarer til md i DOS – men DOS kan faktisk også bruge mkdir) og mounter /dev/hda1 af typen vfat oven i det nye bibliotek. Med ls kigger jeg på indholdet af c, og til sidst afmonterer jeg DOS-drevet igen.


Nu er det tid til at tilføje DOS-drevet til /etc/fstab. Linux indeholder et hav af editorer som kan være mere eller mindre lette at gå til, afhængigt af, hvad man er vant til i forvejen. Lige nu kan vi uden det store besvær bruge joe til formålet. Skriv joe /etc/fstab og tilføj linien


/dev/hda1 /mnt/c vfat noauto,user 0 0


et sted i filen. Afslut med Ctrl-K fulgt af X.


Hvis alt gik vel skulle det nu være muligt at mounte DOS-drevet med kommandoen mount /mnt/c uden yderligere dikkedarer. Parameteren noauto,user fortæller, at partitionen ikke skal mountes automatisk under opstart, og at det skal være muligt for almindelige brugere at mounte den (ellers er det kun root, der kan.)


I forbindelse med /etc/fstab skal vi huske at nævne /etc/mtab, der viser, hvilke filsystemer, der lige nu er mounted på systemet.

Hvis du vil vide, hvilke partitioner, du har til rådighed, kan du bruge programmet fdisk. fdisk i Linux har navnet og formålet til fælles med DOS-udgaven, men mulighederne er ulige anderledes. Du kan angive en disk, når du starter fdisk, f.eks. ved at skrive fdisk /dev/hda.


Når fdisk starter, får vi ikke meget at vide, før vi beder om det, men det er da til at se, at vi skal skrive et m for at få hjælp. Til at starte med har vi brug for kommandoen p for at vise, hvilke partitioner, der er på disken, og q for at afslutte fdisk igen uden at lave noget om.


Der er flere alternativer til fdisk, f.eks. cfdisk, der er lidt mere overskuelig.

Netdrev


Et netværksdrev på en Windows-maskine kan også mountes. Kommandoen hedder smbmount, men syntaxen varierer i forskellige udgaver af Red Hat.


I Red Hat 6.0 minder syntaxen mest om en trylleformular, på den måde at det er næsten umuligt at gætte sig til den: smbmount //server/drev –c ’mount /mnt/netdrev’


De fleste valgmuligheder til smbmount kan ses i manualsiderne, men den lille detalje med, at der skal køres en normal mount-kommando efter –c er mildest talt svær at regne ud!


Afhængigt af Windows-maskinen kan det være nødvendigt at angive et brugernavn med –U, eller måske skal man fortælle den, hvad man selv hedder. Heldigvis kommer smbmount selv med et par forslag, hvis det ikke lige virker. Det kan også være nødvendigt at angive –N for at undgå, at man bliver spurgt om et password, hvis der ikke er noget på Windows-maskinen.


I nyere udgaver af Red Hat er det blevet lidt nemmere; i hvert fald hvis man er vant til Windows’ NET.EXE: smbmount //server/drev /mnt/netdrev

Netdrev unmountes på normal vis.

Disketter


Der er en genvej til at bruge DOS-disketter i Linux: mtools. mtools er en samling af programmer, der efterligner de gamle DOS-programmers måde at arbejde på, og som skjuler alt det besværlige arbejde med at mounte og unmounte disketterne.


Generelt er mtools-kommandoerne en kopi af DOS-kommandoerne med et m foran, og de er lige ud ad landevejen at bruge:


mcopy a:*.* . kopierer alle filer i disketten aktuelle bibliotek til det aktuelle bibliotek

mdir a: viser indholdet af diskettens aktuelle bibliotek

mcd a:testdir skifter til biblioteket testdir på disketten


og så videre. Skriv man mtools for at læse manualsiderne om mtools (og afslut som tidligere beskrevet med q.)

Vigtige websites om filsystemet


http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html – en detaljeret beskrivelse af ext2-systemets datastrukturer

http://www.gnu.org/software/parted/ - GNU Parted, en partitionseditor ala Partition Magic

http://mtools.linux.lu/ - hjemsted for mtools


Konsollen


En central del af kommunikationen med Linux foregår via konsollen - det, der for en Windows-bruger betragtes som DOS-prompten.


Alle”skærmene,” hvadenten det er den fysiske monitor og tastaturet, en telnet-forbindelse, et vindue, du har startet fra den grafiske brugerflade eller en virtuel konsol, kaldes konsoller. Selve operativsystemet er relativt ligeglad med konsollen – man kan sagtens have en kørende Linux-maskine uden en eneste aktiv konsolforbindelse, og man kan starte programmer med besked om, at de skal holde sig langt væk fra konsollen.


For at gøre det hele endnu mere forvirrende har et typisk Linux-system hele seks konsoller kørende fra starten! For en DOS-bruger er det lidt underligt, men det virker fint, og er faktisk en temmelig praktisk ting til mange opgaver.


Mindre forvirrende bliver det ikke af, at det, der svarer til COMMAND.COM i DOS – kommandofortolkeren, eller shellen som det kaldes, kan udskiftes uden problemer – hver bruger kan have sit eget program sat op som shell. I praksis har man typisk en enkelt shell, som man bruger medmindre man har brug for en andens specielle muligheder til en opgave. Til at starte med får en Linux-bruger på en Red Hat-installation tildelt programmet bash (Bourne Again SHell) som sin shell.

Sådan skifter du mellem konsollerne


Når du starter Linux, vil du, hvis du ikke har valgt at starte op i grafikmode, stå ved en login-prompt. Du befinder dig i den første logiske konsol, og kan skifte til de andre ved at holde Alt-tasten nede, mens du trykker på F1 til F6. I første omgang ser der ikke ud til at ske noget, men hvis du skriver et par bogstaver først, vil du se, at der er tale om seks uafhængige konsoller.


Hvis du befinder dig i grafikmode, kan du skifte tilbage til en tekstkonsol ved at holde både Ctrl og Alt nedtrykket. For at komme tilbage til grafikmode, skifter du til konsol nummer syv (Alt-F7).

Brugere


Linux er født som flerbrugersystem. Det vil ikke kun sige, at hver bruger kan logge ind og få sit eget skrivebord og sit eget dokumentbibliotek (eller sine 20 egne dokumentbiblioteker, som det i praksis nærmere er i Windows,) men derimod at Linux kan arbejde med flere forskellige brugere på én gang. Der er kun tilsluttet en enkelt skærm og et tastatur til en gennemsnitlig PC, men det kan lade sig gøre for andre brugere at forbinde sig til Linux-maskinen over netværk, og med lidt opsætningsarbejde kan man tilslutte terminaler til maskinens serielporte også – og alle disse brugere kan med sindsro lade, som om de har maskinen for sig selv. Hver bruger får tildelt sit eget område på disken, hvor éns opsætning, skriveborde og arbejdsfiler bliver placeret, og man har som almindelig bruger ganske enkelt ikke mulighed for at rode rundt i andre brugeres filer, hvis ikke man udtrykkeligt har fået lov.


Når man kommer fra Windows er man vant til at have total kontrol over systemet, men det er en dårlig vane i Linux. Det første man bør gøre er derfor at oprette en ”menig” bruger, som man så ”er” til daglig.


Den ene bruger, der kan omgå sikkerhedsforanstaltningerne, lyder navnet root og det er denne bruger, du skulle angive en adgangskode til, da du installerede. root er systemets superbruger og administrator, og har lov til at oprette og nedlægge brugere, samt til at gøre hvad som helst med systemets filer.


Man kan godt komme ud for, at nogle almindelige opgaver kun kan udføres af root, fordi der ikke er givet lov til, at almindelige brugere må komme til – men det kan som regel rettes.


Brugere oprettes af root med kommandoen adduser brugernavn. Herefter skal den nye brugerkonto have et password, før hyn kan logge ind: passwd brugernavn. Hvis passwd brokker sig over det password, man skriver, er det som regel fordi det er for let at gætte, og så gør det kontoen til et let mål for en eventuel hacker.


Hvis passwd skrives uden et brugernavn, kan man lave sit eget password om.


Installation


De fleste programmer til Linux kan downloades fra Internettet. Gode steder er www.freshmeat.net og www.linuxberg.com.


Et Linux-program kommer typisk som et af fire filtyper: rpm, tar, tgz og gz.


RPM, Red Hat Package Manager, et er program, der holder styr på, hvad en pakke består af, og hvilke filer i pakken der er afhængige af andre filer og pakker på systemet. I modsætning til de øvrige filformater kan en RPM-pakke afinstalleres uden problemer igen, fordi RPM-systemet holder styr på pakkens indhold. Hvis kan vælge at downloade et program i RPM- formatet, er det som regel at foretrække, også fordi man så allerede under installationen vil få det at vide, hvis programmet kræver andre pakker for at køre (hvis det er tilfældet, vil rpm-kommandoen nægte at installere pakken, før de manglende pakker er på plads).


En RPM-pakke installeres med kommandoen rpm –i pakke.rpm

De øvrige filtyper er ikke installationspakker, men indeholder en eller flere filer, som skal installeres manuelt, når de er pakket ud.


TAR er egentlig et format, der er beregnet til at arkivere filer på bånd – det betyder Tape Archive. Et TAR-arkiv indeholder ikke kun filerne selv, men også oplysninger om, hvem der ejer dem, og hvordan deres filladelser og andre attributter er sat, så formatet kan bruges til sikkerhedskopiering. Ulempen ved TAR er, at filerne ikke bliver pakket sammen, så de fylder så lidt som muligt.


Et TAR-arkiv (som regel kaldet en tarball) pakkes ud med kommandoen tar –xf pakke.tar eller tar –xvf pakke.tar hvis man vil se, hvilke filer der pakkes ud.

GZ er en fil, der er pakket med programmet gzip. Typisk slutter filnavnet på .tar.gz, hvilket betyder, at filen er et tar-arkiv, der er pakket sammen med gzip, så det fylder mindre.


GZ-filer udpakkes med kommandoen gunzip pakke.gz


Bemærk, at det er den oprindelige fil, der omdannes til en upakket version – .tar.gz-filen hedder for eksempel bagefter .tar og fylder mere – der er ingen .gz-fil tilbage efter udpakningen, sådan som vi er vant til det fra f.eks. ZIP-filer i DOS/Windows.

TGZ er en pakket TAR, mere eller mindre det samme som en .tar.gz-fil, men tar kan selv pakke den ud undervejs.


TGZ-filer udpakkes med tar –xzf pakke.tgz eller tar –xvzf pakke.tgz, hvis man vil se, hvilke filer der pakkes ud.

Når arkivet er pakket ud, skal det sandsynligvis installeres. Enkelte arkiver kan selvfølgelig indeholde et program, der bare kan startes, men typisk skal der udføres lidt konfigurationsarbejde, før det kører. Én af de ting, der sker under installationen kan for eksempel være, at det nye program lægger manualsider på plads, så man-kommandoen også kender det nye program. Der kan også være konfigurationsfiler, der bliver flyttet til /etc/ hvor man normalt forventer at finde dem, og selvfølgelig skal selve programmet lægges på plads et eller andet sted i systemet.


Mange programmer kommer som kildetekst, der først skal oversættes til et færdigt program. Det kan virke besværligt, men fordelen er, at man, hvis man kender noget til programmering, kan finde og rette eventuelle fejl og tilføje nye funktioner i programmet selv. Det er nok om noget det, der har gjort Linux til det populære og ikke mindst stabile system, det er i dag.


Det er meget forskelligt, hvordan man installerer et program, men typisk er der hjælp at hente i form af en README-fil, der f.eks. kan læses med less i en anden terminal, så man kan ”beholde den på skærmen”, mens man laver arbejdet.


Kig efter, om der er en fil ved navn configure. Sådan én er tit et script, beregnet til at sætte installationen i gang. Der kan også være filer, der hedder noget i retning af setup eller install. Er der ingen af delene, er en Makefile tegn på, at make skal bruges på én eller anden måde.


Husk, at et script, der ligger i det aktuelle bibliotek, startes med ./scriptnavn, ikke med scriptnavn alene.

Netværk


Linux’ netværksfunktioner er tæt knyttet til Internettet. Internettet var en naturligt integreret del af den måde, Unix-systemet blev bygget op på, og Linux har arvet det hele.


En maskine på et Linux-netværk har en såkaldt IP-adresse, der består af fire tal, adskilt af punktummer, for eksempel 212.54.64.170 (i skrivende stund benyttes dette tal af en navneserver hos World Online). Hvert af de fire tal kan være mellem 0 og 255, men nogle af kombinationerne er reserverede til specielle formål.


I virkeligheden er det ikke en maskine, der har en IP-adresse, men derimod et netkort. I en pc med flere netkort vil hvert netkort normalt have sin egen adresse – og et modem fungerer normalt også som et netkort, når man ringer op til sin internet-udbyder.


Man kan ikke bare bruge et vilkårligt tal til sin maskine, fordi man kan risikere, at tallet allerede er reserveret til en bestemt maskine på Internettet. Hvis man bruger en opkaldsforbindelse til en internet-udbyder, vil man automatisk få tildelt et tal, når man ringer op, og hvis man har en fast forbindelse, har man enten fået tildelt et tal, da man fik forbindelsen, eller også fungerer forbindelsen i praksis på samme måde som en opkaldsforbindelse, så udbyderen tildeler én et tal, når man benytter forbindelsen.


På et lokalt netværk kan man bruge nogle specielle talserier, der er reserveret til formålet. Disse tal kan pr. definition ikke findes ude på Internettet, så man kan ikke komme i konflikt med andre, når man benytter dem – og ens netværkstrafik vil ikke blive sendt videre ud på Internettet, medmindre den bliver sendt videre af en maskine, der er beregnet til formålet (f.eks. en proxy-server eller en gateway). Fordelen er, at man ikke skal spørge nogen om lov til (og betale for at) få tildelt et tal til hver eneste maskine på sit lokalnet. til gengæld kan man ikke se maskinerne på det lokale net udefra, så de kan ikke være Internet-servere, hvis de bruger de private numre.


Tallene fra 192.168.0.0 til 192.168.255.255 er afsat til private net.


Udover IP-nummeret bruger man noget, der kaldes en subnet-maske. Det er fire tal, der typisk starter med et antal 255’er og slutter på et antal nuller. Ideen er, at man f.eks. kan opdele 192.168-serien i flere uafhængige serier, hvor maskinerne ikke kan se hinanden, selvom de sidder på samme netkabel. Det kan lyde unødvendigt, men kan være praktisk til mange formål. Kort fortalt kan maskiner se hinanden, hvis de har samme subnet og hvis deres adresser er ens på de dele af IP-adressen, hvor subnet-masken er 255. For eksempel kan 192.168.1.1 og 192.168.1.2 se hinanden, når subnet-masken er 255.255.255.0, mens 192.168.0.1 ikke kan se nogen af dem. Hvis subnet-masken havde været 255.255.0.0, havde alle tre maskiner kunnet se hinanden.


Med et IP-nummer og en subnet-maske kan to maskiner snakke sammen. Tilbage er så to ting, nemlig hvordan de to maskiner ved, hvad de snakker sammen om, og hvordan vi mennesker kan holde styr på, hvilken maskine der har hvilken adresse.

For at tage den menneskelige side først, kan man give et IP-nummer et navn, som er til at huske for mennesker. Det er for eksempel nemmere at huske www.kuh.dk end 234.213.11.7 (nummeret er frit opfundet). Når vi indtaster et navn på en maskine i vores browser eller email-program, vil programmerne ”bag vores ryg” slå op i en navnedatabase for at finde det tal, der hører til, lidt i stil med når vi skal slå op i en telefonbog for at finde nummeret på nogen, vi ved hvad hedder.


Et Internet-navn er opdelt af punktummer, men består af helt ned til to led. Det sidste led, f.eks. dk, kaldes topdomænet og det næstsidste er organisationen, f.eks. kuh. I daglig tale kaldes de to tilsammen også for et domæne, f.eks. kuh.dk. Når der for eksempel står www som en del af adressen på en webserver, er det organisationen, der har valgt at have det stående – det er egentlig ikke noget krav, og man kan også mange steder undvære de tre w’er, f.eks. hos Danmarks Radio på dr.dk.


Navnesystemet fungerer på to måder: DNS og HOSTS.


DNS (Domain Name Service) er et system, hvor en masse computere hver især holder styr på, hvad maskinerne i et lille område af Internettet hedder, og hvilke andre computere der kender navnene på resten af maskinerne. Enhver navneserver har pligt til at vide, hvilke andre navneservere (også kaldet DNS-servere) der har styr på topdomænerne (dk, com, net, org og så videre), og serverne for topdomænerne skal vide, hvor man finder navneserverne for de forskellige organisationer, de har under sig.

Hvis vi f.eks. skriver www.kuh.dk i browseren, vil den sandsynligvis kontakte en DNS-server hos vores internet-udbyder for at få nummeret at vide. Udbyderens DNS-server starter med at kontakte DNS-serveren for topdomænet dk, hvor den for at vide, hvilken DNS-server, der er ansvarlig for kuh.dk. Denne server kontaktes derefter med spørgsmålet om, hvilken IP-adresse der hører til www.kuh.dk, og til sidst kan webserveren så kontaktes for at få fat i den hjemmeside, den indeholder.


Hvis kuh.dk skifter webserver, har de pligt til at opdatere deres DNS-server, så den peger på den nye webserver i stedet. Til gengæld behøver dk-serveren ikke at få noget at vide, medmindre kuh.dk’s egen navneserver skifter IP-adresse. Med et langhåret fagudtryk kaldes DNS-systemet en distribueret database, men det er ikke så vigtigt at gå og huske på…


Det siger sig selv, at vi er nødt til at kende adressen på mindst én DNS-server, før vi kan bruge Internettet ordentligt. I Windows får vores maskine det normalt automatisk at vide, når den ringer op, men i Linux er det tit nødvendigt at skrive IP-nummeret manuelt under netværksopsætningen.


Et supplement til DNS-systemet er filen /etc/hosts, der kan indeholde en række navne og de IP-numre, der hører til dem. /etc/hosts bliver checket, før maskinen laver et DNS-opslag, og hvis navnet bliver fundet hér, springes DNS-opslaget helt over. /etc/hosts er specielt smart til et lokalt netværk, hvor der ikke er nogen DNS-server, der kender maskinerne.


Når vores maskine kender IP-nummeret på en anden, kan de to snakke sammen, men der foregår naturligvis en masse andet bag ryggen på os. Hvis vi sidder på et lokalnet, skal IP-numrene oversættes en gang til, fordi netkortene i de enkelte maskiner fra fabrikkens side er født med helt faste numre, der ikke har noget med IP-numrene at gøre. Denne oversættelse er det slet ikke nødvendigt at vide noget om til daglig, men det skader ikke at vide, at det sker. Hvis netkortene ikke have hver deres unikke adresse, kunne vi ikke skelne to maskiner fra hinanden på kablet, når maskinerne startede op!

Når en maskine kontakter en anden, sker det ved at der sendes en klump data – en pakke – af sted på netkablet med en bestemt modtageradresse. Når modtageren har fået pakken, skal den til at finde ud af, hvad pakken skal bruges til – er det en forespørgsel til maskinens DNS-server, en email, en hjemmeside eller noget helt fjerde? For at maskinerne kan finde ud af det, bliver pakkerne sendt til en såkaldt port på modtageren. En port er bare et ekstra tal efter IP-nummeret, som fortæller om, hvad pakken skal og hvor den kommer fra. Når en browser skal hente en hjemmeside, får den en ledig port på sin maskine, og sender så sin forespørgsel til modtagerens IP-adresse med den port, der er beregnet til at modtage forespørgsler om hjemmesider (normalt port 80). Webserveren, der modtager pakken, fordi den er sendt til port 80, finder selv en ledig port, hvorfra den sender sit svar tilbage til afsenderen på den port, der blev sendt fra, og de to portnumre bruges nu til at overføre hjemmesiden, indtil forbindelsen bliver afbrudt igen.


Der findes en række standardporte, som er beregnet til at modtage en bestemt slags pakker. Filen /etc/services har en oversigt over en masse af dem, men det er ikke nødvendigvis alle, der bruges på alle maskiner.


Filen /etc/inetd.conf styrer sammen med et par andre filer, der blandet andet holder styr på, hvem der må hvad, hvilke porte der er bundet til bestemte programmer lige nu. Som navnet antyder, er det som regel programmet inetd, der modtager pakkerne og sender dem videre til de serverprogrammer, der ”lytter” på portene.


Der findes mange programmer, der kan bruges i forbindelse med netværk. Et par typiske hjælpeprogrammer er ping og tcpdump.


ping er et program, der sender en pakke til en anden maskine sammen med en instruktion om at få pakken tilbage. Det er ikke så formålsløst som det lyder! Virkningen dels er at undersøge, om den anden maskine svarer, dels at se, hvor lang tid det tager. ping er noget af det første man prøver, hvis der lader til at være problemer på netværket. Når der kommer svar på ping, ved vi allerede, at kablet ikke fejler noget, og at begge maskiners netværkssystem grundlæggende er i orden.


Der findes et magisk IP-nummer, 127.0.0.1, bundet til navnet localhost. Dette nummer henviser altid til maskinen selv, og kan bruges til at teste, om der er noget helt galt med netværkssystemet. Hvis man kan pinge sig selv men ikke andre, er der gode chancer for, at det er på kablet eller hos de andre maskiner, fejlen skal søges.


tcpdump er et program, der tapper rå datapakker fra kablet og viser deres indhold. Det kan give mange informationer om, hvad der foregår på et netværk, men det kan godt kræve noget tid at sætte sig nærmere ind i protokollernes virkemåde, før oplysningerne giver mening.