Tiedostot
Linux vs. Windows
Linuxin (ja UNIX:n) hakemistorakenne voi tuntua oudolta, mikäli on aiemmin tottunut Windowsin vastaavaan. Windowsissa yksi fyysinen tallennuslaite (kiintolevy, optinen asema, muistikortinlukija) löytyy tyypillisesti asemasta, joka merkataan kirjaimella (eng. drive-letter). Kiintolevyn osio, jolle Windows on asennettu, löytyy usein C-asemasta eli polusta C:\. Mikäli tietokoneessa on toinen kiintolevy, sen osio voidaan tuntea esimerkiksi D:\-asemana. E:\ on esimerkiksi CD-asema tai toinen kiintolevy/osio.
Note
Tarkennuksena mainittakoon, että laite:osio:asema suhde ei ole aina välttämättä näin yksiselitteinen. Käyttäjä voi esimerkiksi luoda useasta kiintolevystä RAID-henkisen Windows Storage Pool:n, jolloin monta fyysistä levyä löytyy yhden aseman kirjaimen takaa.
Lisäksi myös Windows-ympäristössä on osioita, joille ei ole tarkoitus tallentaa laisinkaan tietoa käsin. Näitä ovat esimerkiksi UEFI- ja Recovery-osiot. Jos osioit Dual Boot -asennuksen yhteydessä Linuxia varten käyttämätöntä tilaa, törmäsit näihin todennäköisesti. Huomaa, että nämä toki voi mountata asematunnukseen esimerkiksi debuggausta varten PowerShellillä.
Linuxissa tilanne on hyvin toinen. Asemia ja niiden kirjaimia ei ole olemassa. Hakemistorakenteen juuri ei siis ala laitteen/aseman kirjaimesta vaan /-merkistä, joka toimii Linuxissa hakemistoerottimena. Hakemistot muodostavat puurakenteen samalla tavalla kuin Windowsin hakemistot, joten on mahdollista, että kissa.txt sijaitsee polussa /a/b/c/kissa.txt. Yksittäinen hakemisto, kuten /home tai /var, voi sijaita saman levyn eri partitiolla tai jopa kokonaan eri levyllä kuin valtaosa käyttöjärjestelmästä.
Alla näkyy ajettuna komento lsblk eli List Block Devices. Tässä tapauksessa sda on laite eli kiintolevy. Sen osiot tunnistaa juoksevasta numerosta jälkiliitteessä. Lähes koko 30 Gt:n levy on varattu /-hakemistolle, pois lukien tietokoneen käynnistysprosessin tarvitsemat pikkuosiot, sekä virtuaalinen snap:n hallinnoima osio, joka on varattu Firefoxin oikolukuohjelmistolle.
$ lsblk /dev/sda
AME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 513M 0 part /boot/efi
└─sda3 8:3 0 29,5G 0 part /var/snap/firefox/common/host-hunspell # (1)
/
Alla erittäin karkea taulukko Linuxin ja Windowsin tiedosto/kansiorakenteen eroista.
| Linux | Windows | |
|---|---|---|
| Kansiorakenteen standardi | Filesystem Hierarchy Standard | Microsoft ja konventiot |
| Juuri | / |
C:\ |
| Kotihakemisto | /home/username/ |
C:\Users\username\ |
| Kotihakemisto env | $HOME |
%homepath% |
| Todennäköinen tiedostojärjestelmä | ext4, XFS | NTFS |
| Tekstitiedoston pääte | Ei mitään väliä | .txt |
| Ajettavan tiedoston pääte | Ei mitään väliä | .exe |
Spesifikaatiot
Filesystem Hierarchy Standard
Linuxin tiedostojärjestelmän standardi löytyy Filesystem Hierarchy Standard (linuxfoundation.org)-sivustolta, mutta alla on listattuna tärkeimmät juuritason kansiot taulukossa. On tärkeää kuitenkin huomioida, että vaikka kyseessä on standardi, ei se tarkoita, että kaikki Linux-jakelut noudattaisivat sitä. Esimerkiksi GoboLinux asentaa ohjelmat poikkeukselliseen /Programs-hakemistoon. Voit tutustua tähän FHS:stä poikkeavaan tapaan GoboLinux at a glance-sivulla. Esimerkin mukaan esimerkiki Bash asentuisi /usr/bin/bash sijasta /Programs/Bash/4.4/bin/bash-hakemistoon, ja sen manuaalit olisivat tyypillisen /usr/share/man sijasta /Programs/Bash/4.4/man/-hakemistossa.
| Hakemisto | Sisältää |
|---|---|
| /bin, /sbin | Useimmiten C-kielestä käännettynä ajettavia binääritiedostoja, kuten yllä käytetty lsbkl tai hakemistojen luontiin tarkoitettu mkdir. Tyypillisesti viittaa lokaatioon /usr/bin/ sekä /usr/sbin/. |
| /boot | Kernel image, jota käytetään konetta käynnistäessä. |
| /dev | Fyysisiä laitteita, kuten yllä näkyvä sda, tai loogisia/virtuaalisia laitteita kuten partitio sda1 tai työpöytäympäristössä käyttämäsi terminaali /dev/pts/0. |
| /etc | Koko järjestelmää koskevat konfiguraatiotiedostot, kuten /etc/hosts, josta tarkistetaan tunnetut hostnamet ennen DNS-kyselyitä, tai /etc/passwd, jossa määritellään käyttäjät ja aikoinaan jopa salasanat, tai /etc/fstab |
| /home | Käyttäjien kotikansiot. |
| /lib | Jaettuja kirjastoja, joita /bin:ssä ja /sbin:ssä olevat ohjelmat tarvitsevat, kuten C-kielen kirjastot libc.so. |
| /mnt, /media | Käsin tai automaattisesti mountattavat mediat kuten CD- sekä USB-asemat tai jopa verkkolevyt. |
| /opt | Jotkin kolmannen osapuolen eli jakelun ulkopuoliset ohjelmat. Opiskelijana saatat huomata, että sinne asentuu esimerkiksi Brave-selain, Cisco Packet Tracer tai Zoom. |
| /proc, /sys | Kernelin rajapintoja, kuten /proc/version, joka sisältää kernelin ja distron versioon liittyvää tietoa. |
| /tmp | Väliaikaiset tiedostot. Eivät säily ikuisesti. |
| /usr | Käyttäjien ohjelmat ja tiedostot. |
| /var | Usein muuttuva, ohjelmien sisältämä data. Erikoimaininta lokitiedostoja sisältävä alihakemisto /var/log/ |
Tip
Tyypillisesti distribuution oma paketinhallinta (esim. apt) asentaa ohjelman eri tyyppiä edustavat tiedostot eri lokaatioihin: binääri /usr/bin hakemistoon, kirjastot /usr/lib-hakemistoon, konfiguraatiot /etc-hakemistoon, data /var-hakemistoon ja niin edelleen.
Tälle on vaihtoehtona /opt, mihin ohjelmat asennetaan jonkin paketinhallinnan (esim. Homebrew) toimesta. Ohjelmat ovat tällöin self-contained, eivätkä ole pirstaloitu /usr-hakemistoon. Tämä on tyypilisesti Windows-käyttäjille tutumpi tapa (vrt. C:\Program Files\Ohjelmannimi).
Base Directory Specification
XDG Base Directory Specification (XDG BDS) on FSH:een läheisesti liittyvä määrittely, joka määrittelee, missä käyttäjän tiedostot sijaitsevat. Tähän liittyvä konventio on tallentaa käyttäjän oman binääritiedostot /home/username/.local/bin/-hakemistoon. Jos esimerkiksi haluat luoda oman skriptin, jota juuri sinä voit ajaa mistä tahansa, voit tallentaa sen tähän hakemistoon. Samaan hakemistoon tallentuvat usein myös käyttäjän omat ohjelmat, jotka eivät ole distribuution paketinhallinnassa.
Aiemmin mainitun ~/.local/bin lisäksi muita siihen liittyviä merkittäviä hakemistoja ovat:
$XDG_CONFIG_HOME(oletus~/.config/) - Käyttäjän konfiguraatiotiedostotXDG_DATA_HOME(oletus~/.local/share/) - Käyttäjän data, kuten pelitallennukset
Jos ympäristömuuttujaa ei ole asetettu, käytetään oletusarvoja. On tyypillistä, että asentamasi ohjelma luo kotikansioosi binäärejä, konfiguraatioita ja dataa näihin hakemistoihin - ja joskus myös hakemistoon, joka on piilotettu hakemisto kotihakemistossa (esim. .ohjelmanimi/, kuten .kube, .azure, .ssh, ...).
Tehtävät
Tehtävä: Hakemistopuu
Piirrä valitsemallasi työkalulla hakemistopuu, joka alkaa juuresta, ja sisältää seuraavat tiedostot kaikkine hakemistoineen. Älä unohda juurihakemistoa.
/home/pekka/.bashrc
/home/pekka/Desktop/P.jpg
/home/liisa/.bashrc
/home/liisa/Desktop/L.jpg
/etc/crontab
/etc/cron.d/anacron
/dev/
Työkalu voi olla kynä ja paperi, Excalidraw, OpenOffice Draw tai vaikkapa ASCII Draw.
Tehtävä: lsblk
Aja komento lsblk ja tarkastele tulosta. Mitä laitteita ja osioita löytyy. Jos olet asentanut Dual Bootin, missä näistä osioista on Windows ja missä Linux?