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:
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).
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.)
Linux består af flere lag som jeg her giver en meget
forenklet beskrivelse af:
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.
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.
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$ cdDu 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 /".
ny@flem:~$
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.find . -type d -exec chmod u+xwr {} \;
find . -type f -exec chmod u+wr {} \;
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.
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
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.