Indledning

Formålet med denne bog er at gøre det nemt for nybegyndere at lære linux. Problemet er bare at linux ændrer sig hurtigt. Hvis man ikke passer på, er bogen forældet før den er færdig. Derfor koncetrerer jeg mig om de dele af linuxsystemet der ikke ændrer sig så hurtigt, og samtidig om de sider af linux som giver brugeren stor kontrol med sin computer. Derfor handler denne bog om linuxkommandoer for begyndere. Lad mig forklare dette:

Hvad er linux?

Linux er et styresystem ligesom Windows og Mac OS X. Det søger for at du kan 'snakke' med din computer og køre programmer på den. Dvs. du kan vælge at køre Linux på din pc i stedet for Windows eller Mac OS X. Men hvor Windows og OS X udvikles og kontrolleres af Microsoft og Apple, er Linux et langt mere frit og demokratisk system fordi alle og enhver kan være med til at tilpasse og evt. udvikle systemet. Du må gøre hvad du vil med Linux, så længe du ikke "stjæler" det og påstår at du rettighederne over det, (og så længe det du gør i øvrigt er lovligt). I Linux har du adgang til ALT.

Men selvom linux er et gigantisk frivilligt samarbejdsprojekt, er det ikke af dårlig kvalitet. Tværtimod, er det generelt mere sikkert og stabilt end Windows. Linux kan alt som Windows kan og typisk lidt til. Men som udgangspunkt kan man ikke afvikle windows-programmer på linux. Det gør nu ikke så meget for der er programmer til alle almindelige formål - og meget, meget mere end det. F.eks. anvender man i linux kontorpakken OpenOffice.org i stedet Windows Officepakke. MEN der er en række specialprogrammer der kun er udviklet til at køre på windows. F.eks. er der ikke rigtig nogen programmer til linux der svarer til analyseprogrammer såsom Nvivo, Maxdas, etc. Hvis man vil køre et avanceret statistikprogram, må man vælge R der er programmeringssprog; man får ikke et program som SPSS eller SAS der i høj grad bruger en grafisk brugerflade. Hvis man derimod vil arbejde med lyd, findes der til linux en lang række avancerede programmer, og et genialt program der hedder jack som præcist kan styre signalernes overførsel fra et program til et andet.

Man kan sagtens have både Linux og Windows på ens computer, f.eks. ens bærbare. Når man starter computeren vælger man så hvilket styresystem man vil bruge denne gang (Dualboot).

Mange slags linux

I modsætning til f.eks. Windows, er der over 100 varianter af linux, de såkaldte distributioner. De mest udbredte er Ubuntu (Kubuntu), Debian, Suse, Red Hat (Fedora) og Mandriva, og det er dem man som begynder bør bruge. Jeg giver ikke her en beskrivelse af hvordan man installerer linux på sin computer. Der findes gode installationsguider til alle de nævnte distributioner. (Google har for øvrigt også en linux distribution, Android, til mobiltelefoner som nu også er på ind på bærbare computere. Men det er i skrivende stund ikke rigtig velegnet til at installere på ens computer.)

Hvorfor denne bog er relevant

Linux består af flere lag som jeg her giver en meget forenklet beskrivelse af:

  1. Kernen som er den software der snakker med hardware.
  2. Kommandolinie programmer og programmeringssprog.
  3. Vindue systemet X
  4. Skrivebordet (Kde, gnome, m.fl.)
  5. Programmer med grafisk brugerflade

Kernen er det software der snakker med computeres hardware: mus, tastatur, netkort, processor, hukommelse, osv. Når kernen kører, kan man udføre og lave programmer på computeren. Det gør man ved at udføre kommandoer på en kommandolinie. De 3 sidste lag er i virkeligheden lavet med kommandoer selvom man ikke ser det. Det første lag ovenpå kommandolinien er X der er et system hvor man med kommandoer lave vinduer med indhold i. Det kan man ikke rigtig bruge til så meget før man har fået skrivebord hvor man kan lægge filer og åbne dem osv. Det er også fra skrivebordet man åbner programmer med en grafisk brugerflade, f.eks. tekstbehandling eller en browser.

Der findes flere skriveborde til Linux, men de to mest udviklede er Kde og Gnome. Alle de nævnte linux distributioner (undtagen Android) findes med både Kde og Gnome. F.eks. er Ubuntu med Gnome, men Ubuntu med Kde hedder Kubuntu. Personligt foretrækker jeg Kde frem for Gnome fordi jeg synes Kde er lettere at tilpasse, men det er langt hen ad vejen en smagssag. Man kan dog installere både Gnome og Kde, og så kan man prøve begge dele af.

I Linux har man fuld adgang til alle disse lag. I Windows vil almindelige brugere typisk kun have adgang til skrivebordet og programmer med grafisk brugerflade. Her Linux anderledes: Fordi Linux er beregnet på at brugeren har mest mulig kontrol med sin computer, er det helt normalt at bruge kommandolinie programmer. I praksis kan man løse mange småproblemer hvis man ved lidt om Linux og kender et lille antal kommandoer.

Hvad er en kommando?

En kommando udfører et program. Man indtaster kommandoen på en kommandolinie og trykker enter. Så udføres programmet. En kommando starter altid med navnet på det program man vil udføre og så tilføjer man gerne noget som specificerer hvordan programmet skal fungere. F.eks.

ls -l /home

Dette betyder: Du kører programmet ls som giver en liste over indholdet af mappen /home.

Ved at tilføje -l lige efter ls får du en masse ekstra oplysninger om indholdet af mappen. Dette kaldes en option, og næsten alle kommandoer har optioner der modificerer hvad programmet gør. Nogen gange er optionen et helt ord, og så plejer man at sætte to streger foran. F.eks.

ls --size /home

Denne kommando laver en liste over filer i mappen /home, ordnet er efter størrelse. Man kan godt have flere optioner. F.eks.

ls -l -t /home

eller:

ls -lt /home

Begge kommandoer lister indholdet af mappen /home med mange oplysninger og ordnet efter hvor gamle filerne er.

Du har uden tvivl bemærket at skråstregen foran home. Den betyder roden af filtræet i linux. Dvs. hele linux er ordnet som et træ af mapper og filer med mapper inden i mapper inden i mapper osv. Den allerførste mappe som ikke ligger inden i andre mapper hedder roden. I kommandoer benævnes den: /. Altså betyder /home at der i rodmappen ligger en anden mappe eller fil der hedder home. Faktisk er home en mappe som indholder alle brugernes mapper. Hvis nu den bruger hedder ny, så tildeler systemet dig også en mappe der hedder ny. Hvis du inde i denne mappe har en fil der hedder minfil, så kan du beskrive hvor filen ligger på denne måde:

/home/ny/minfil

Dette kaldes stien til filen minfil. Stien angiver altså vejen gennem filtræet hen til filen.

Lad os nu prøve at bruge dette i praksis.

Filer og mapper

by bjerke last modified 2007-04-22 18:39

Du går i gang med at inspicere din pc. I eksemplerne hedder brugeren "ny". Det skal du ikke lade dig forvirre af. Du skal bare udføre kommandoerne.

Når du er logget ind skal du kunne bruge en bash terminal. Gå ind i menuen "system" og åben en terminal. I terminalen kan du kan skrive kommandoer. Nu skal du lære to kommandoer: ls der lister indholdet i en mappe og cd som du kan bruge til at gå ind i mapper. I din terminal skriver du nu:

ny@dinpc:~$ ls
Examples

Nu skulle du gerne kunne se dine egne filer i din egen mappe. I det her tilfælde ligger der en mappe som hedder Examples. Hvis der ikke er nogen filer, kan du ikke se noget. Men der ligger helt sikkert også nogle skjulte filer og mapper der starter med et '.' For at se dem sætter du et -a efter ls:

ny@dinpc:~$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc  Examples

Nu ser du at der er dukket tre filer op. Det er tre opsætnings-filer (konfigurationsfiler) som styrer hvordan din terminal ser ud og fungerer. De hedder noget med .bash fordi det program som laver terminalen hedder bash. Der er også et "." og et "..". "." betyder den mappe du er i. ".." betyder mappen ovenfor. Du kan f.eks. kigge hvad der er i mappen ovenfor:

ny@dinpc:~$ ls ..
ny

Du ser at i mappen ovenfor ligger der kun mappen "ny". Faktisk kigger du op i mappen "home" hvor brugerne har deres mapper. Når der kun mappen "ny" skyldes det at der kun findes brugeren ny på din pc. Du kan lige chekke at din mappe faktisk ligger i "home" at du mappe. Du skriver kommandoen pwd.

ny@dinpc:~$ pwd
/home/ny

Her ser du stien til din brugermappe: /home/ny. Det betyder følgende: Den første "/" er den allerøverste mappe, roden. I den ligger mappen "home" (og mange andre mapper og filer). I home-mappen ligger mappen "ny", hvor du er. For lige at se hvad der ligger i roden taster du lige ls ../.. dvs. du går op i mappen over forældremappen. Altså ser du hvad der ligger i roden:

ny@flem:~$ ls ../..
bin etc lib root sys
boot lost+found rted-host-version=2.6.12-9-386 tmp
cdrom floppy media rted-target-version=2.4.27-2-386 usplash_fifo
debootstrap home mnt sbin usr
dev initrd opt var initrd.img
proc srv

Du kunne også have tastet "ls /". Så havde du fået de samme. Nu har du faktisk set forskellen på relative og absolutte stier. Hvis du skriver "/" først, er det stien fra roden. Skriver du ikke "/", er det stien fra hvor du er. Og lige nu er du i /home/ny. Det vil sige at når du står i /home/ny, ser du indholdet i din hjemme mappe både når du skriver "ls /home/ny" og "ls". Prøv. Du kan også skrive "ls ." fordi "." betyder den mappe du er i prøv. Nu skal vi til at prøve flytte os. Men først skal du lige lægge merke til følgende:

I din terminal lægger du nu mærke til at der altid står "ny@dinpc:~$" Det betyder at du er brugeren "ny" som er på "dinpc". Det er formentlig dig selv der har valgt navnene. Der kunne f.eks. lige så godt have stået: "flemming@flemmingscomputer:~$". Tegnet "~" betyder at du er i din hjemmemappe, og "$" betyder at her kommer din kommando.

Lad os nu prøve at flytte os lidt. Skriv "cd ..". "cd" betyder "change directory". Så med "cd .." går du op i /home. Du chekker det lige med "pwd". Så kigger du med "ls" på hvad der er i "/home".

ny@flem:~$ cd ..
ny@flem:/home$ pwd
/home
ny@flem:/home$ ls
ny

På anden linie ser du at der nu står: "ny@flem:/home$" fordi du er gået ned /home. "pwd" viser dig at du er i "/home". "ls" viser dig at der ligger mappen "ny" i "/home". Prøv nu at skrive "cd".

ny@flem:/home$ cd
ny@flem:~$
Du ser at "cd" uden noget efter flytter dig tilbage i din egen mappe. Lad os nu prøve at gå ud i roden. Det kan du gøre enten ved "cd ../.." eller "cd /".

Filers indhold


2. Roden

by bjerke last modified 2007-09-20 07:31

Nu skal du ind og kigge i roden i linux ...

Nu vil vi gerne have lidt flere oplysninger om hvad der ligger i roden. Derfor bruger vi "ls -l /".

ny@flem:~$ cd ../..
ny@flem:/$ ls -l
total 100
drwxr-xr-x 23 root root 4096 2010-03-20 04:08 a1
drwxr-xr-x 2 root root 4096 2010-05-26 21:59 bin
drwxr-xr-x 3 root root 4096 2010-08-06 06:13 boot
drwxr-xr-x 2 root root 4096 2010-05-26 21:55 cdrom
drwxr-xr-x 17 root root 3800 2010-09-07 22:15 dev
drwxr-xr-x 154 root root 12288 2010-09-06 07:16 etc
drwxr-xr-x 37 root root 4096 2010-09-03 07:56 home
lrwxrwxrwx 1 root root 28 6 mar 2011 initrd.img -> boot/initrd.img-2.6.32-5-686
drwxr-xr-x 21 root root 12288 2010-08-07 08:01 lib
drwx------ 2 root root 16384 2010-05-26 21:54 lost+found
drwxr-xr-x 2 root root 4096 2010-09-06 07:21 media
drwxr-xr-x 2 root root 4096 2010-04-23 12:11 mnt
drwxr-xr-x 5 root root 4096 2010-09-03 09:33 opt
dr-xr-xr-x 163 root root 0 2010-09-06 07:16 proc
drwx------ 17 root root 4096 2010-09-04 10:41 root
drwxr-xr-x 2 root root 4096 2010-08-07 08:01 sbin
drwxr-xr-x 2 root root 4096 2009-12-05 22:55 selinux
drwxr-xr-x 2 root root 4096 2010-04-27 13:03 srv
drwxr-xr-x 12 root root 0 2010-09-06 07:16 sys
drwxrwxrwt 16 root root 4096 2010-09-08 07:35 tmp
drwxr-xr-x 11 root root 4096 2010-05-29 08:13 usr
drwxr-xr-x 16 root root 4096 2010-08-08 12:28 var
lrwxrwxrwx 1 root root 25 6 mar 2011 vmlinuz -> boot/vmlinuz-2.6.32-5-686

Hvad ser du så her? Det er så at sige hele dit linuxsystem du ser her.

Hver linie angår en fil eller en mappe eller et link. Til sidst på hver linie står hvad filen eller mappen hedder.

Hvis der står "d" først, er det en "mappe" (directory). Hvis der står "-" er det en fil, og "l" betyder link. Der er altså kunne mapper og links i roden. Nederst ses det f.eks at vmlinuz henviser til boot/vmlinuz-2.6.32-24-generic. Grunden til det er at når dit linuxsystem starter op (booter) skal det kunne finde kernen som snakker med hardware. Derfor er det smart med et link i roden som henviser til den kerne man bruger - og kernen ligger så i makken boot som også ligger i roden. Prøv at køre kommandoen:

ny@flem:/$ ls -l /boot

totalt 20836
-rw-r--r-- 1 root root  111135 23 sep 15:40 config-2.6.32-5-686
drwxr-xr-x 3 root root   12288 13 nov 06:10 grub
-rw-r--r-- 1 root root 8810610 13 nov 06:10 initrd.img-2.6.32-5-686
-rw-r--r-- 1 root root 1295399 23 sep 15:40 System.map-2.6.32-5-686
-rw-r--r-- 1 root root 2301536 23 sep 15:40 vmlinuz-2.6.32-5-686

I boot kan du så se den fil som vmlinuz henviser til nemlig vmlinuz-2.6.32-5-686 der ligger i mappen boot. Numrene henviser til versioner af linuxkernen så din vmlinuz hedder sikkert noget andet. Det er en 2.6 kerne version 32. De to sidste tal er nogle som debian folkene har tilføjet så man kan se hvilken debian-version af kerne 2.6.32 der er tale om. De forskellige slags linux har hver deres måde at modificere kernen på, og så tilføjes der lidt ekstra tal eller bogstaver så man kan se hvad der er for en variant man har at gøre med.

I boot ligger der også lidt andre filer bl.a, en config som fortæller hvordan linux-kernen er tilpasset på netop dit system, men også et lille startop system kaldet initrd.img.

De fleste programmer ligger i tre mapper:

/bin hvilket står for binaries og heri ligger programmer som alle brugere kan bruger. Det er typisk mindre programmer med basale funktioner.

/sbin hvilket vist står for superuser binaries og heri ligger programmer som root og andre superbrugere kan bruge. Det er typisk mindre programmer med basale funktioner.

/usr er der hvor alle mulige programpakker installeres samt filer der har med programpakker at gøre. Specielt er der en mappe der hedder share hvor der blandt andet ligger en masse dokumentation.

Devices

Configuration og Daemons


3. Tilladelser

by bjerke last modified 2007-08-20 18:14

find . -type d -exec chmod u+xwr {} \;

find . -type f -exec chmod u+wr {} \;


Netværk

Ip-adresser

Alle computere der er på nettet har en IP-adresse. IP-adressen er så at sige internettets telefonnumre, og uden dem kan din computer ikke kontakte en anden. En IP-adresse består af fire numre med punktum imellem, f.eks. 130.226.235.88. Hvert af numrene kan gå fra 0 til 255.

Internettet består groft taget af to slags netværk: LAN (Local Area Network) og WAN (Wide Area Network). LAN er sådan et netværk man har i sit hus eller i et firma, og deres ip-adresser starter normalt med 192.168. eller 10.0.. Disse ip-adresser findes kun på LAN-netværk. Næsten alle andre ip-adresser findes på internettet i WAN netværk. LAN netværk ligger altid bag en router. Routeren har en ip-adresse på internettet, men den muliggør samtidig et antal lokale ip-adresser indadtil. Typisk er der tale om ip-adresser der starter med 192.168.1. eller 10.0.0. Den der administrerer routeren bestemmer det faktisk selv, og kan f.eks. bestemme at ip-adresserne på et LAN netværk starter med 192.168.55.

For at komme på internettet skal din computer først have en lokal ip-adresse f.eks. 192.168.1.7, og så skal den gennem routeren ud på nettet. Routeren vil så typisk have den lokale ip-adresse 192.168.1.1, og routeren og din computer kommunikerer ved hjælp af disse to ip-adresser. Men udadtil vil routeren maskere (masquerading) din computers ip-adresse så det ser ud som din computer har routerens ip-adresse. På den måde viser ip-adresser der starter med 192.168. eller 10.0. sig aldrig på internettet.

Prøv selv at chekke dette en gang. Du skriver kommandoen ifconfig (på nogle systemer skal du skrive /sbin/ifconfig).

ny@flem: ifconfig

Du får så f.eks. følgende resultat:
eth0      Link encap:Ethernet  HWaddr 00:22:64:6d:a1:22  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memory:e4600000-e4620000

eth1      Link encap:Ethernet  HWaddr 00:21:00:88:ce:08 
          inet addr:192.168.2.99  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::221:ff:fe88:ce08/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1049987 errors:0 dropped:0 overruns:0 frame:100856
          TX packets:8023527 errors:69 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:190322261 (190.3 MB)  TX bytes:3477935194 (3.4 GB)
          Interrupt:17

lo        Link encap:Local Loopback 
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:23966 errors:0 dropped:0 overruns:0 frame:0                                                            
          TX packets:23966 errors:0 dropped:0 overruns:0 carrier:0                                                          
          collisions:0 txqueuelen:0                                                                                         
          RX bytes:2611576 (2.6 MB)  TX bytes:2611576 (2.6 MB)                 

Det du ser, er at der er to netkort eth0 og eth1. Desuden kan din computer snakke med sig selv som om den var på nettet med sig selv, lo. Du kan se at det ene netkort, eth1, har en ip-adresse på et lokalt netværk: 192.168.2.99. Men du kan også se at 192.168.2.255 er broadcastaddressen, dvs. den addressen man bruger hvis man vil kontakte alle computere på netværket. Endelig kan du at netmasken er 255.255.255.0. Det betyder at på dit lokale netværk kan ip-adresserne kun variere på det sidste nummer, altså der hvor der står 0. Det kan også ses at det andet netkort, eth0, ikke har nogen ip-adresse, så du kan ikke gå på nettet med dette kort. (Selv hvis kortet havde ip-adresse, er det nu ikke sikkert at du kan komme på nettet.) Bemærk at din egen computer har ip-adressen 127.0.0.1. Alle ip-adresser der starter med 127.0. angår computeren selv.

Du kan også læse ipv6 (inet6) adressen på eth0. Ipv6 er næsten generation af ip-adresser. De er dog ikke rigtig taget i anvendelse endnu. Du kan også læse dit netkorts Mac-adresse (HWaddr). Det er tal som identificerer dit netkort (og dog: der findes et program der hedder mac-changer som du kan bruge til ændre mac-adressen).

Hvis du starter din linuxpc, og der ikke viser sig andre netkort end lo, tyder det på at driveren til dit netkort mangler eller ikke virker. 

Giv din computer en ip-adresse

Der er forskellige måder at give din computer et ip-adresse på. Men du skal være root for at få lov til noget som helst. 

En måde er at gå ind og rette i følgende fil med teksteditoren nano:

nano /etc/network/interfaces

Vi har igen to netkort, eth0 og eth1, samt lo.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# eth0
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp
#eth1
auto eth1
iface eth1 inet static
     address 192.168.1.7
     network 192.168.1.0
     netmask 255.255.255.0
    broadcast 192.168.1.255
     gateway 192.168.1.1

Der er en linie med auto ved hvert device. Det betyder at IP-adressen skal tildeles automatisk når computeren starter. Der er også en linie der starter med "iface". Det angiver devicet og hvad det er for et slags net - inet betyder internet. Endelig angives hvilken måde ip-adressen tildeles: "loopback" som bruges til at computeren er på nettet med sig selv. "dhcp" betyder at computeren får en ip-adresse af routeren. "static" betyder at man selv giver den en ip-adresse. Derfor skal der ved static også nedenfor angives ip-address, netværk, netmask, broadcast og gateway. Gateway er typisk routeren fordi den er vejen ud til nettet. Kender computeren ikke gatewayen, ved den ikke hvordan den skal komme på nettet.

Når du har rettet i /etc/network/interfaces, skal du fortælle computerens netssytem at den skal bruge de nye oplysninger. Det gør du ved at køre:

/etc/init.d/network restart

Webadresser

Din computeren kan ikke finde en anden computer på internettet hvis den bare kender en webadresse, f.eks. www.itpol.dk. Din computeren skal kende den ip-adresse hvor www.itpol.dk ligger, for at kunne læse hvad der ligger på www.itpol.dk.

Hvordan finder din computer så ip-adressen til www.itpol.dk? Det gør den ved at slå op ip-adressen op i en bestemt slags computer - en DNS-server. DNS-servere er så at sige internettets telefonbøger. Der findes et hierarki af DNS-servere over hele verden så man altid kan finde en given webadresses ip-adresse. Når du indtaster www.itpol.dk i en browser på din computer, går din computer ud på den nærmeste DNS-server og finder IP-adressen, og så kontakter din computer den computer hvor hjemmesiden ligger. Den nærmeste DNS-server er typisk din internetudbyders DNS-server. Men hvad nu hvis din internetudbyder ikke kender webaddressen på www.itpol.dk? Så spørger DNS-serveren videre ud i systemet internetserver indtil den finder en DNS-server der kender adressen.

Men hvordan kan din computer finde den første DNS-server? Det kræver at den får DNS-serveren at vide. Det kan den få på to måder manuelt eller automatisk.