Linux's fil system: Alt er en fil

(Hvad betyder at alt er en fil på Linux systemet?)

Introduktion

Stuttgart Library, Germany Foto af Tobias Fischer

Linux bygger på UNIX filosofien om at alle ting på systemet er en fil. Ja, selv mapper på systemet er under motoren en fil. Det er hvad man kalder et "directory" på engelsk, da de grafiske brugerflader begyndte at komme begyndte man så at kalde det for "folders" (mapper) i stedet for. Men i sidste ende, så er en mappe i Linux bare en tekst fil med "links" til andre filer på systemet.

For at kunne forstå det koncept lidt bedre, så vil jeg lige gennemgå nogle termer. Forhåbenligt vil du have en god viden om hvordan Linux faktisk håndtere dataen du gemmer og bruger bagefter.

Video Guiden

Vil du direkte i gang med at se en video om det her emne, så er den lige her. Ellers spring sektionen over for i stedet at læse om det hele.

Videon er ikke tilgængelig

Beklager, men videoen er stadigvæk ved at blive optaget.

Fil systemet

Et fil system kan faktisk være to ting inden for computer-verdenen. Den ene er en rent logisk fortolkning af strukturen, hvorpå der gemmes data, den anden henviser til når man eksempelvis formatere en USB nøgle. Der formatere man et nyt fil system på sin USB nøgle, så computeren kan gemme og modtage data fra dem.

Jeg tager dog selvfølgelig udgangspunkt i den første version. I dag skal vi lære helt grundlæggende om hvor vores filer på en Linux computer er gemt. Derudover vil jeg fortælle om nogle helt grundlæggende principper som adskiller sig især fra folk der kender til Windows.

Er Linux versalfølsom?

Skelner systemet imellem store og små bogstaver?

Ja! Det er der hvor folk der kommer fra Windows ofte møder deres første mur. For på Linux systemer er der stor forskel på om du bruger store og små bogstaver, men det giver samtidigt også nogle fordele. (Eller ulemper, alt efter hvordan du ser på det.)

Et eksempel på det kan ses lige her:

ls -la ~/mappe

total 8
drwxrwxr-x  2 dhh dhh 4096 feb  1 02:45 .
drwxr-xr-x 32 dhh dhh 4096 feb  1 02:45 ..
-rw-rw-r--  1 dhh dhh    0 feb  1 02:45 test
-rw-rw-r--  1 dhh dhh    0 feb  1 02:45 tesT
-rw-rw-r--  1 dhh dhh    0 feb  1 02:45 Test
Files

Elementary OS: Files program, for visuelt at se filerne.

Som det kan ses, så har vi tre filer med samme navn - men forskellige store og små bogstaver. Og det kan Linux sagtens kende forskel på. Hvorimod at hvis du delte de tre filer her med en Windows computer, så ville den ikke vide hvad den skulle gøre med de filer. Så det er en god idé at kun holde sig til en standard, eksemeplvis kun små bogstaver. (I hvert fald hvis du har intentioner om at dele filer med Windows brugere.)

Behøver Linux at have filendelser på deres filer?

Er der forskel på eks. test.txt og bare test?

Linux behøver man ikke at give en filendelse, som eksempelvis .txt, .docx eller .jpg. Systemet kigger ikke normalt efter de her endelser, så for systemet er det ligegyldigt. Det er dog en god idé at give sine filer filendelser alligevel, da især grafiske brugerflader (såsom Files i Elementary OS) og nogle programmer så automatisk ved hvad den skal gøre med filerne når man klikker på dem. Udover det, så giver det også en visuel genkendelse når man selv kigger alle sine mange filer igennem, hvis man har givet dem en filendelse.

Alt er virkelig en fil i Linux?

Alt er en fil i UNIX filosofien.

Dit keyboard, mus eller grafikkort du har sat til computeren. Er repræsenteret af en fil på systemet, så kan få data og give data til enhederne.

stat /dev/nvidia0

  File: /dev/nvidia0
  Size: 0         	Blocks: 0          IO Block: 4096   character special file
Device: 6h/6d	Inode: 606         Links: 1     Device type: c3,0
Access: (0666/crw-rw-rw-)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-02-01 00:08:19.613339032 +0100
Modify: 2020-02-01 00:08:19.613339032 +0100
Change: 2020-02-01 00:08:19.613339032 +0100
  Birth: -

Her kan du eksempelvis se mit grafikkort, som er en "character special file" - men stadigvæk en fil.

Dette skal ikke forvirres med en evt. driver til et grafikkort, men hvordan systemet læser og skriver data til grafikkortet. For at kunne visse dig grafik på din computerskærm.

Fil systemets mappe-struktur

Linux-filsystemet forener alle fysiske harddiske og partitioner i en enkelt katalogstruktur/mappestruktur. Det lyder måske mærkeligt hvis man kommer fra Windows hvor hver harddisk eller SSD har sit eget "navn" (eks. D:, E: osv.) og en mappestruktur under sig. Men der er faktisk en god grund bag det.

Lad os springe ud i det. Lad os se hvad for mapper der ligger i roden af vores Linux system.

tree -d L 1 /

/ (Roden af vores fil-system)
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

21 directories
Files

Elementary OS: Files program, for visuelt at se strukturen/mapperne.

Der findes en del mapper som alle sammen har et formål, jeg vil dog kun tage de aller mest brugte, (dem som er markeret med gul) og fortælle lidt om dem.

/

Roden af vores fil-system

Her starter vores mappestruktur, det er her fra alt er sat op i form af undermapper til / roden af vores system.

/bin

Forkotelse af "binary"

Her inde ligger en masse af sytemets programmer, det er her hvor bl.a. touch, cd, mkdir og ls kommandoer/programmerne ligger.

/boot

Mappen der bruges når du opstarter din computer

Her inde ligger alle de filer vi behøver for at kunne starte vores Linux system op.

/cdrom

Ja, jeg er også selv overrasket...

Før i tiden når man satte en CD i sin computer, så var det igennem mappen her man kunne tilgå den. I dag eksistere den som "legacy", det vil sige for at være bagudkompatibel.

I dag bruges /media mappen.

/dev

Dine enheder skal leve et sted...

Din lyd på systemet, din mus og tastatur - ja endda dit grafikkort lever i den her mappe og kan dermed skrives og læses fra af systemet den her vej igennem. Det er ikke driveren til dit grafikkort der er her, men mere en måde hvorpå systemet kan få adgang til at læse og skrive data til dine enheder.

For at få tekst op på din skærm, må systemet kunne læse og skrive til grafikkortet som står for at lave grafik på din PC skærm. Det samme gælder dit tastatur, et sted skal den få dine input i form af at taste på tastaturet fra.

/etc

Etcetera... og så videre...

Den her mappe huser ofte alle dine konfigurationsfiler på computeren. Eksemeplvis standardkonfigurationer for den bruger du logger ind med og meget mere. Det er også oftes den her mappe du med sudo-rettigheder (root) ændre i, når du vil lave noget om på systemets konfiguration.

/home

Hjem, kære hjem...

Alle normale brugere på systemet skal have et sted at gemme deres egne personlige filer. Det kunne være billeder, dokumenter eller noget helt tredje. Og alle de bruger får sin egen mappe inden under /home mappen.

Eksempelvis hvis jeg logger ind med brugernavnet dhh, så hedder stien til min hjemmemappe (som det også kaldes) /home/dhh.

/lib og /lib64

Library, eller bibliotek på dansk.

Her lever delte biblioteker, som forskellige programmer kan benytte. Et sådan bibliotekt kunne eksempelvis være hvordan systemet læser og skriver til filer, hvordan den snakker snakker med din hardwares firmware og meget mere.

/lib64 er forbeholdt 64bit specifikke filer.

/media

USB nøgler, CD'er, USB harddiske og så videre.

Når du stikker en USB nøgle i din computer eller CD ind i din computer, så skal systemet kunne læse fra dem. Den her mappe bruges til at montere dine medier så du kan tilgå dem.

/mnt

Står for "mount", montering...

Hovedsageligt brugt af systemadministratorer for at montere en midlertidig harddisk eller lignende. For at evt. fejlrette et system.

/opt

Optional software, eller valgfri software på dansk.

Software såsom Teamviewer eller Google Chrome bliver ofte installeret her. Såkaldt lukket software (hvor du ikke kan se kildekoden bag) lever oftes i den her mappe.

/root

Root-brugerens hjemmepappe, også kaldt super brugeren.

Ligesom at din normale bruger har en hjemmemappe under /home, så har din super bruger (root) også sin helt egen mappe. Hvor den kan gemme konfigurations-filer m.m.

/sbin

System-binær filer, eller system binaries.

Mere specifikt for system programmer, eksempelvis så lever cfdisk kommandoen/programmet her inde, som kan bruges til at formatere og partionere ens harddiske, USB nøgler og SSD'er.

/tmp

Står for "temporary", eller midlertidig på dansk.

Her smider programmer deres midlertidige filer ind. Nogle gange har programmer brug for at (midlertidigt) gemme en fil på systemet og det gør den så i mappen her. Mappen her kan læses og skrives fra af alle, men kun brugeren som ejer filerne kan faktisk slette dem. (Eller hvis du er root kan du også.)

/usr

Universal System Resources, universalle system ressourcer.

Dokumentations filer for programmer, programmer som kan bruges af alle brugere på systemet m.m. lever oftes her.

På grafiske Linux distributioner kunne sådan noget som program-ikoner, og så videre også leve her.

/var

Variable filer.

Variable filer (filer der ændre sig ofte) såsom log-filer, lever i den her mappe.

Forenet mappe-struktur

Med en forenet mappestruktur, skal det forståes sådan at er dybest set ligeglad med hvilken harddisk eller partition den får sine data fra. Eksempelvis så kunne mappen /home have sin helt egen harddisk eller blot partition for sig selv på samme harddisk som resten af systemet er kørende på.

Fordelen ved det, er at hvis du eksemeplvis en dag vil skifte over til en anden Linux distribution, eller at du pludseligt en dag ikke kan starte din computer fordi at man har kommet til at fejlkonfigurer systemet. Så kan man ganske simpelt geninstallere systemet, uden at man røre sin gemte data i eksempelvis /home mappen.

Det som mange gør er at de deler deres system op på harddiske for sig selv, en harddisk (eller partition på samme harddisk) for /home, /var og /boot. Så hvis der skulle opstå problemer, så kan resten af systemet geninstalleres uden at røre de 3 mapper/steder på systemet..

Konklusion og afsluttende ord

Hvis du ikke forstår det helt endnu, så tab ikke modet. Det tog mange af os garvede år at forstå konceptet til fulde. I vores næste guides vil vi gennemgå konceptet i praksis så man kan få en endnu bedre forståelse.

Men husk nu, Linux er ikke Windows.