Linux-katalogstruktur: Hva det er og hvordan det fungerer

En vesentlig forskjell mellom Linux og Windows ligger i standardsystemet for katalogarrangement som du vil møte etter en ren installasjon av operativsystemet.

Merk at vi ikke snakker her om filsystem, som er det tekniske mønsteret som brukes til å lagre data på disk. Katalogstrukturen vi skal gjennomgå vil gjelde for de fleste Linux-distribusjoner uavhengig av hvilket filsystem de bruker.

Hvilke filsystemer er og vanlige som brukes i dag
Rotkatalog på Ubuntu Linux-skrivebordet

Forskjeller mellom Windows- og Linux-katalogstrukturer

For å forstå på et høyt nivå hvorfor disse operativsystemene er strukturert slik de er, er det nyttig å forstå historien deres.

Da Windows-baserte PC-er først begynte sin vekstkurve, i de tidlige dagene av MS-DOS, Microsofts operativsystem spesifikt fokusert på mikrodatamaskiner (det vi i dag oftere kaller desktop datamaskiner). I de første årene ble filer hovedsakelig lagret på diskettstasjoner. De ble merket EN: og B: så det var lett å skille dem. Senere mottok harddisker C: stasjonsetikett og flere stasjonstyper, for eksempel CD-ROM-er eller USB-baserte stasjoner, ble tildelt etterfølgende bokstaver.

Derimot stammer Linux fra Unix, et operativsystem utviklet av AT&T på 1970-tallet. På denne tiden var "datamaskinene" folk brukte først og fremst rettferdige terminaler. De viste tekstbasert informasjon på skjermen og ga et tastatur for input. Men de tunge løftene ble utført av et "system" som kunne ha bestått av flere fysiske maskiner: en for prosessering, en for lagring og en annen som ga en spesifikk applikasjon. Disse var alle koblet over nettverket, mens de for brukerne fremstod som en enkelt enhet. Denne klient-server-konfigurasjonen som Unix ble designet for, var nøyaktig den motsatte teknologien fra enkeltbrukermikrodatamaskinen som MS-DOS, og senere Windows, støttet.

En tommelfingerregel for Linux-filsystemer er at rot, eller det øverste nivået av filsystemet, inneholder ingen bortkommen filer. I de fleste systemer kan den inneholde kjerne(vmlinuz i figurene), eller hjertet av operativsystemet, og muligens en ramdisk (initrd) som inneholder data som systemet trenger for å komme i gang. Men bortsett fra disse, bør den bare inneholde katalogene vi vil diskutere i avsnittene nedenfor (blant andre).

/bin-katalogen

En av de første katalogene du vil møte er /bin. Dette står for binære filer, og den inneholder "standard" operativsystemprogrammer. Her refererer "standard" til grunnleggende verktøy som trengs for å bruke OS på en meningsfull måte. Eksempler på programmer du finner her er som følger:

  • cd, eller endre katalog, som fungerer mye som Windows-motstykket
  • Filbehandlingskommandoer som cp og mv (henholdsvis kopiere og flytte filer).
  • Filtillatelsesverktøy som f.eks chmod (som endrer filtillatelser) og chown (som endrer eierne av disse filene).
  • Programmene som gir datamiljøet ditt, som f.eks Logg Inn (som gir deg muligheten til å logge på maskinen) og bash eller andre skjell.

Når du først installerer en Linux-distribusjon, vil disse programmene bli installert som en del av den mest grunnleggende installasjonen, og kan i mange tilfeller ikke fjernes.

/boot-katalogen

Oppstartskatalogen inneholder oppstartsrelaterte filer, ramdisker og kjerner

Neste opp alfabetisk er /boot, som inneholder filer systemet bruker når det starter opp. Den inneholder kopier av Linux-kjernen (den du ser i roten av filsystemet er sannsynligvis en lenke til en av disse), initrd, eller initial ramdisk for systemet, og andre relaterte data.

Det viktigste du bør vite om denne katalogen er å ikke rote rundt i den. Tingene her håndteres når din pakkeansvarlig installerer og oppgraderer kjerner. Hvis du sletter en av filene som trengs av din nåværende kjerne (eller selve kjernen), kan du ende opp med et system som ikke kan startes opp.

/cdrom-katalogen

Dette er noe av en gammel katalog. Den ble introdusert som et sted hvor CD-en kunne være montert, eller tilkoblet, og dens innhold åpnes. På den tiden var det vanlig å kreve rot, eller administratorrettigheter til å montere CD-ROM-en. Men i dag er det mer vanlig å finne CD-ROM-er automatisk montert i /media katalog, som vi skal diskutere litt senere.

På samme måte var det tidligere en /floppy katalog. Du kan se hvordan disse kom til å gjøre brukere, som sannsynligvis var vant til Windows, litt mer komfortable. Men siden diskettstasjoner ikke er standardkomponenter på moderne PC-er, kan det hende du ikke en gang ser denne katalogen lenger. Ubuntu har det for eksempel ikke. Hvis maskinen din har en diskettstasjon, vil du sannsynligvis finne den automatisk montert /media.

/dev-katalogen

Hver fysisk enhet i et Linux-system er representert som en fil i dev

Et unikt aspekt ved Unix-baserte operativsystemer er det alt er en fil. Det vil si at filer representerer alt i systemet: kjørende prosesser, RAM, og ja, lagringsenheter. Når du kopierer noen data til harddisken din, for eksempel, skriver Linux faktisk data til en fil som /dev/nvme0n1p3, som representerer den tredje skillevegg av SSD-en din.

De /dev katalogen er der alle disse spesielle filene lagres. Hvis du blar gjennom den, vil du se filer for omtrent alle enheter du kan forestille deg, fra de nevnte NVMe-baserte solid state-stasjonene til harddisker på SATA (f.eks. /dev/sd*) eller eldre IDE (/dev/hd*)-tilkoblinger, samt eldre som PS/2-museporten (/dev/psaux). Stjerner representerer jokertegn; for eksempel, på et SATA-basert oppsett, vil din første harddisk være "/dev/sden," og den diskens første partisjon vil være "/dev/sda1." Den andre partisjonen er "/dev/sda2," mens den andre diskens første partisjon er "/dev/sdb1."

Selv om det ikke er viktig for dem å være i noen spesiell rekkefølge, er det viktig å vite hvilken som er hvilken. Denne kunnskapen vil forhindre deg i å overskrive Windows-partisjonen din når du for eksempel skulle installere Linux på en ny, tom stasjon du installerer.

/etc-katalogen

De /etc katalogens navn, som et sted å legge noe ekstra, eller og så videre filer, mener at det er viktig. I praksis inneholder denne katalogen mange av konfigurasjonsfilene som kontrollerer hele systemet. Det er to hovedtyper av filer som ligger her:

  • Globale konfigurasjonsfiler, f.eks. de /dev/fstab fil som brukes til å montere alle de heftige stasjonene du har beskrevet i /dev katalogen ovenfor.
  • Såkalte «skjelett»-filer, som brukes som standard for innstillinger på brukernivå. Et eksempel på dette er /etc/profile fil, som inneholder innstillinger for Bash-skallet. Når en ny konto er opprettet, kopieres denne filen til den nye kontoen som .profil og fungerer som utgangspunktet til brukeren tilpasser det.

Mange av underkatalogene i /etc er oppkalt etter applikasjonene de kontrollerer, så det er enkelt å bla rundt her for å prøve å finne filen du trenger for å fikse en app når den fungerer.

/home og /root-katalogene

Windows-elskere forstår C:\Brukere katalogen, som er der dokumentene og innstillingene for hver bruker av systemet ligger. Siden Unix fra starten var et flerbrukersystem, har dette konseptet eksistert i mange år i Linux som /home katalog. Hver konto har en underkatalog her som inneholder alle kontodataene. Faktisk en normal, ikke-administratorbruker har ikke engang tillatelse å lagre filer andre steder.

De /root katalogen er den tilsvarende brukermappen for systemadministratoren, eller root-bruker. Det skiller seg bare fra /home på plassering (for å holde potensielt sensitive filer langt unna vanlige brukere) og eierskap.

/lib-katalogene

Som du sannsynligvis bruker et 64-bits operativsystem, har du sannsynligvis et par kataloger her: /lib, /lib32, og /lib64. Disse inneholder programvarebiblioteker kjernen bruker for sine mest grunnleggende operasjoner. De som ikke inneholder kode spesifikk for versjonen prosessoren er i /lib mappe. De som er versjonsspesifikke er i /lib32 (32-bit) eller /lib64 (64-bit) kataloger etter behov.

/media og /mnt-katalogene

Flyttbare medier Få montert under et brukernavn i mediekatalogen

For noen år tilbake, hvis du hadde flyttbare medier som en USB-minnepinne, før du kunne bruke den, måtte du tilordne den en /dev oppføring og skape et sted for i /mnt (mount) katalog. I mer moderne versjoner konfigurerer Linux-distribusjoner flyttbare medier automatisk. Faktisk, avhengig av brukeren som er logget på når enheten er tilkoblet, vil systemet opprette en brukerspesifikk katalog, monter enheten og sørg for at brukeren har de riktige tillatelsene til få tilgang til den. Forskjellen i dag er at /media katalogen brukes vanligvis til dette formålet.

/opt-katalogen

Det var en tid for ikke så lenge siden at du ikke bare kunne hoppe over til et nettsted og laste ned en Ubuntu-pakke for favorittapplikasjonen din. Du kan installere mange av disse programmene ved å kjøre et tilpasset installasjonsprogram, ganske enkelt pakke dem ut fra arkivet eller til og med bygge dem fra kildekoden. Disse installasjonsmetodene var ikke enhetlige, og noen ganger var det vanskelig å spore hvor filene var blitt av og hvordan de skulle avinstalleres. De /opt katalogen ble introdusert for denne valgfrie programvaren, for å sikre at resten av systemet ditt var upåvirket i tilfelle installasjonen eller avinstalleringen gikk galt.

Mens flere utviklere i dag gjør appene sine tilgjengelige i standard pakkeformater (.RPM og .DEB), installeres fortsatt noen av disse programmene for å /opt. Hvorvidt denne katalogen fortsatt gir mening er et emne for en del debatt i Linux-samfunnet, men foreløpig gjenstår det. Og noe programvare installeres fortsatt der, selv fra standard .DEB-pakker. Spesielt installeres Google Chrome der på Ubuntu-baserte systemer.

/sbin-katalogen

De /sbin katalog, som nevnte /bin, inneholder binære verktøy. Denne katalogen er imidlertid begrenset til systembinærfiler, og som sådan kan bare rotbrukeren kjøre innholdet. Det inkluderer verktøy som adduser (brukes til å opprette nye brukerkontoer), insmod (brukes til å laste maskinvaredrivere til kjernen), og strøm av (slår datamaskinen av).

Hvis du lurer på det siste, har du et skarpt øye. Nei, du trenger ikke å være en "superbruker" bare for å slå av Linux-systemet. På serversystemer er dette tilfellet. Men på skrivebordet er ditt foretrukne miljø (som KDE, GNOME eller XFCE) satt opp slik at det kan utføre den spesifikke kommandoen som om det var en root-bruker.

/usr-katalogen

usr-katalogen ser enkel nok ut, helt til du begynner å dykke ned i den

Samtidig som brukerdata er lagret i /home mapper, /usr og underkatalogene inneholder mesteparten av installert programvare for systemet. Her installert betyr det som er tilgjengelig utenfor de grunnleggende verktøyene i /bin. Den vil for eksempel inneholde:

  • Applikasjoner som skrivebordsmiljøer, LibreOffice-kontorpakken, GIMP-bilderedigering og nettleseren Firefox.
  • Kildekode for ting som Linux-kjernen og maskinvaredrivere.
  • Tilleggsfiler, for eksempel kunstverk eller dokumentasjon, for alle de ovennevnte.

De /usr katalogen lagrer disse i sitt eget hierarki. Det inneholder bin, lib, og sbin underkataloger, som fungerer akkurat som deres høyere oppstående brødre, men inneholder bare ting relatert til programvare du installerte. De /usr/share katalogen inneholder eiendeler som ikonsett, samt dokumentasjonsfiler.

Usrshare-katalogen er enorm, med mange underkataloger for forskjellige applikasjoner

Til slutt, den opprinnelige intensjonen med /usr/local gren var lik /opt — brukerinstallert, "valgfri" programvare. En del av debatten er hvem av disse to som skal bli værende. Ett poeng i favør av /usr/local er at det meste av programvare installert fra kildekoden er konfigurert til å plassere seg selv her.

/var-katalogen

Var-katalogen inneholder arbeidsdata for å kjøre apper og prosesser

Den siste av de "hoved" Linux-katalogene, den /var katalogen inneholder systemdata. Dette betyr data generert av systemets operasjoner, for eksempel loggfiler (/var/log), cacher (/var/cache), og sikkerhetskopier (/var/backup). Og siden Unix (og derfor også Linux) opprinnelig var et flerbrukersystem, inneholdt områder for serverapplikasjoner som e-post (/var/mail for postkasser og /var/spool/postfix for utgående post) og nettverksutskrift (/var/spool/cups) instansier her også.

Andre kataloger

Ulike distribusjoner bruker forskjellige kombinasjoner av standardkataloger på rotnivå. Nedenfor deler vi katalogoppføringen av rotmappen for både MX Linux 18.3 Continuum og Ubuntu 19.10 Eoan Ermine.

rotkatalogliste mx linux
rotkatalogliste ubuntu

Avhengig av distribusjonen kan du også støte på andre kataloger:

  • /lost+found: Det er tider når små biter av data blir feilplassert i systemet. Hvis du vet at du har mistet noe kan du sjekke her, selv om innholdet ikke er lett identifiserbart. Du må manuelt inspisere innholdet deres for å finne ut hva det er.
  • /proc: Alt i Linux kan representeres med en fil. De /proc katalogen inneholder filer assosiert med prosesser, og du kan se dem for å undersøke hva de gjør (men ikke rediger disse).
  • /run: Dette er en kjøretidskatalog hvor prosesser lagrer noen midlertidige data de trenger, oftest mens systemet starter opp. Som med andre kataloger på systemnivå, ikke tull her inne.
  • /snap: Ubuntus Snap er en pakkeformat som pakker opp en applikasjon og alt som appen trenger, i en container som er isolert fra resten av systemet ditt. De /snap katalogen er der disse beholderne er montert til systemet, på samme måte som lagringsenheter.
  • /srv: Denne katalogen er der filene servert av daemon programmer lagres. For eksempel kan statiske nettsider som serveres av Apache-nettserveren være lagret i /srv/www underkatalog.
  • /sys: I tråd med "alt er en fil"-mantraet, /sys og innholdet representerer innstillinger og informasjon fra Linux-kjernen, på samme måte /proc gjør for å kjøre prosesser.
  • /tmp: Hvis du gjettet etter navnet som denne katalogen har midlertidige data, du har rett. Programmer på systemnivå lagrer informasjon her midlertidig.

På en Windows-basert datamaskin er det ingenting som hindrer deg i å plassere kataloger hvor som helst du ønsker, inkludert på rotnivået (C:\). På Linux-baserte systemer bør du imidlertid beholde data der de hører hjemme. Det granulære tillatelsesbaserte systemet for Linux vil generere tilsiktet friksjon når du tvinger alternative katalogoppsett fra det systemet er designet for å akseptere.