Magaz, The Greek Linux Magazine
Magaz Logo

The Linux filesystem standard

Νίκος Κόκρας mailto:kokni@eexi.gr
Σεπτέμβριος 1998

Όπως όλοι γνωρίζουμε ακόμη και η πιο "γυμνή" εγκατάσταση του αγαπημένου μας λειτουργικού, έχει μια σειρά από directories, τα οποία δημιουργούνται αυτόματα και είναι στην πλειονότητά τους απαραίτητα για την ορθή λειτουργία του συστήματος.

Η δομή του λεγόμενου directory tree είναι πιθανώς οικεία σε όσους έχουν εμπειρία και από άλλα *nix-οειδή λειτουργικά. Το Linux δεν αποτελεί εξαίρεση, αν και μικροδιαφορές πάντοτε παρατηρούνται. Αυτό που ακολουθεί είναι μια *σύντομη* παρουσίαση του filesystem. Για όποιον ενδιαφέρεται, υπάρχει το FSSTND. Αυτό είναι ένα standard που εξηγεί πολύ κατανοητά, τι υπάρχει, που και γιατί στην δομή του Linux filesystem

Στο root, κανονικά δεν πρέπει να υπάρχουν αρχεία, προκειμένου να διατηρείται μικρό. Τα directories που περιέχει είναι:

  • /boot Σε αυτόν το κατάλογο βρίσκουμε τα απαραίτητα αρχεία για τον boot loader. Οι πυρήνες συχνά φυλάσσονται εδώ και γενικά όποιος χαλάσει αυτόν το κατάλογο, κατά την επανεκκίνηση θα έχει... κάποια...προβλήματα. Σε συνδυασμό με το /sbin σηκώνουν το λειτουργικό.
  • /etc (κλπ) Εδώ βρίσκει κανείς το μεγαλύτερο μέρος των configuration files τα οποία είναι ειδικά για κάθε σύστημα (δεν έχει νόημα ο διαμοιρασμός του). Γενικά απαγορεύονται ρητά τα binaries (δεν ξέρω γιατί, καμία ιδέα ?) και τα υπό-directories που περιέχει είναι συνήθως:
    • ppp Configuration για το PPP(d)
    • init.d, rc.d Ανάλογα με το SysV ή το BSD στύλ, εδώ έχουμε τα αρχεία εκκίνησης του συστήματος
    • X11 configuration gia το X Window system,
    • skel configuration για το σκελετό των αρχείων που κατασκευάζονται όταν προστίθεται ένας χρήστης.
  • /bin (binaries) Εκτελέσιμα αρχεία, απαραίτητα για την εκκίνηση του λειτουργικού, τα οποία μπορούν όμως να χρησιμοποιηθούν και από κανονικούς χρήστες μετά την εκκίνηση. Γενικά λίγα πράγματα μπαίνουν εδώ, που χρειάζονται τόσο στον root όσο και στους απλούς χρήστες. Εάν κάτι δεν χρειάζεται στον root, τότε πάει στο /usr/bin
  • /sbin (system binaries) Ομοίως, το /sbin περιέχει εκτελέσιμα αρχεία απαραίτητα για την εκκίνηση, με την διαφορά όμως ότι αυτά δεν προορίζονται για χρήση από τους κανονικούς χρήστες. Μαζί με τα /usr/sbin και /usr/local/sbin αποτελούν το "οπλοστάσιο" του root και καλόν θα ήταν να ρίξετε μια ματιά στα permissions.
  • /root Προφανώς το homedir του root. Δεν ισχύει για όλα τις Linux dists αφού συχνά ο root έχει σαν homedir το /.
  • /proc Αυτός ο κατάλογος δεν υπάρχει πραγματικά στον δίσκο, αλλά αντίθετα αποτελεί δημιούργημα του πυρήνα αποκλειστικά στην μνήμη του συστήματος. Περιέχει πολύ σημαντικές πληροφορίες τόσο για το hardware όσο και για το λειτουργικό. Εξερευνήστε ελεύθερα το σύστημά σας (π.χ. cat /proc/cpuinfo).
  • /dev (devices) Σε αυτό το directory περιέχονται όλα τα devices. Απολύτως απαραίτητο και ο γενικός κανόνας είναι ότι δεν θέλετε να πειράξετε τίποτε εκεί μέσα, πλην ίσως των sumbolic links π.χ. για το modem ή το mouse (καλύτερα να χρησιμοποιείτε τα πραγματικά devices και όχι symlinks). Περιέχει φυσικά και το περίφημο MAKEDEV, τον καλύτερο τρόπο για να εκβιάσετε το "που_έβαλα_το_cdrom_για_την_εγκατάσταση_του_Linux" σε περίπτωση που παίξετε μαζί του χωρίς να κατέχετε το αντικείμενο.
  • /mnt (mount) Ένα dir, στην κορυφή του filesystem, κάτω από το οποίο οι sysadmins μπορούν προσωρινά να τοποθετούν filesystems που δεν φορτώνονται αυτόματα. Καλόν είναι όλα τα εικονικά dirs (cdrom, floppy, poly_spania_mounted_fs) να βρίσκονται κάτω από το /mnt και όχι στο / για να μην μπλέκονται στα πόδια μας.
  • /home Ο κατάλογος αυτός περιέχει τους υποκαταλόγους που αποτελούν τα homedirs των χρηστών. Εκτός από αυτούς, πολλοί server του συστήματος όπως π.χ. ο fptd, η samba, o apache χρησιμοποιούν υποκαταλόγους κάτω από το home. Από τους καταλόγους που συνηθέστερα διαμοιράζονται και προτείνεται ανεπιφύλακτα η τοποθέτησή του σε ξεχωριστό partition
  • /tmp (temporary) Όπως λέει και το όνομά του είναι το temporary (προσωρινό) μέρος για την τοποθέτηση αρχείων. καμία σχέση με το "swap". Πολλοί ενώνουν το /tmp με το /var/tmp προκειμένου να υπάρχει μόνο ένα tmp στο σύστημα (ιδανικά σε δικό του partition ή στο γενικά "βρώμικο" partition του /var). Θυμηθείτε, ότι εδώ έχουν rwx permissions όλοι οι χρήστες. Πολλοί τολμηροί βάζουν το /tmp στην μνήμη, ιδίως σε μικρά συστήματα.
  • /lib (libraries) Εδώ θα βρούμε πολύ βασικές shared libraries, οι οποίες είναι απαραίτητες σχεδόν για τα πάντα. Ένα directory που γενικά θέλει πολύ προσοχή όταν παίζουμε με το root account. Περιέχει τον κατάλογο modules, όπου βρίσκονται τα modules που χρειάζεται ο kernel..
  • /usr (user) Το μεγαλύτερο directory του Linux, αφού σχεδόν όλα τα αρχεία εγκαθίστανται εδώ. Πολύ συχνά διαμοιράζεται σε ένα ολόκληρο τοπικό δίκτυο. Κανονικά δεν χρειάζεται να γράψει κανείς τίποτε όποτε το ro στο mount είναι μια πιθανή επιλογή. Τα dirs που συχνά περιέχει είναι:
    • X11R6 εδώ τοποθετούνται όλα τα αρχεία του X11R6, πλην του configuration (=/etc/X11)
    • X386 ομοίως για το X11R5
    • bin Όλες οι εντολές που δικαιούνται να τρέξουν οι χρήστες που δεν έχουν ειδικά προνόμια
    • dict κατάλογοι λεξικών
    • doc όταν σας λένε RTFM, έρχεστε εδώ
    • etc αντίστοιχο του /etc αλλά για χρησιμοποιείται για το configuration ενός ολόκληρου τοπικού δικτύου
    • games χμμμμ...
    • include Header files για τα διάφορα προγράμματα
    • info Ο κατάλογος του GNU-Info
    • lib Βιβλιοθήκες
    • local εδώ τοποθετούνται διάφορα αρχεία, για "τοπική" χρήση. Αν το /usr γίνεται mount από nfs server τότε το /usr/local ιδανικά έχει δικό του partition
    • man on-line manuals
    • sbin εκτελέσιμα για την διαχείριση του συστήματος, που δεν είναι όμως ζωτικής σημασίας
    • share δεδομένα που διαμοιράζονται και δεν εξαρτώνται από αρχιτεκτονική (i386, alpha κλπ)
    • src εδώ τοποθετείται ο πηγαίος κώδικας
  • /var (variable data) Εδώ περιέχονται μια σειρά από καταλόγους και αρχεία. Μερικοί υποκατάλογοι μπορεί να διαμοιραστούν σε περισσότερα συστήματα (π.χ. /var/spool/mail) ενώ άλλα, όπως το /var/log ή /var/lock είναι ειδικά για κάθε σύστημα. Οι συνηθέστεροι και σημαντικότεροι υποκατάλογοι είναι:
    • catman εδώ βρίσκουμε τις man pages που έχουν φορμαριστεί
    • lib σε αυτόν το κατάλογο υπάρχουν πληροφορίες σχετικά με την κατάσταση των προγραμμάτων που τρέχουν
    • local σε αυτόν τον κατάλογο αποθηκεύονται δεδομένα από προγράμματα του /usr/local
    • lock αρχεία που υποδηλώνουν το "κλείδωμα" μιας συσκευής.
    • log logs (ημερολόγια) που κρατούνται από όσα προγράμματα το υποστηρίζουν.
    • named αρχεία του DNS, όπως παράγονται από το bind.
    • nis περιέχεται η database για το nis
    • preserve εδώ με λίγη τύχη θα βρείτε το υπόλοιπο της δουλείας σας, μετά από crashes.
    • run εδώ βρίσκουμε αρχεία που παράγονται από προγράμματα που τρέχουν.
    • spool εδώ βρίσκετε η "ουρά". Σε υποκαταλόγους βρίσκουμε e-mail, news, printer jobs κλπ
    • tmp προσωρινά αρχεία που καταχωρούνται εδώ με σκοπό να περιοριστεί το μέγεθος του /tmp
  • /opt (optional) Αυτό το directory δεν δημιουργείται πάντα από τις γνωστές διανομές και δεν περιγράφεται στο Linux Filesystem Standard. Είναι η τελευταία μεγάλη προσθήκη στο /, και σκοπός της είναι να δωθεί η δυνατότητα σε μεγάλα commercial προγράμμα να έχουν ένα δικό τους top-level directory (ιδανικά σε ξεχωριστό partition). Ουσιαστικά εδώ μπαίνουν προγράμματα που δεν μπορούν να πάνε στο /usr γιατί το τελευταίο έχει μεγαλώσει υπερβολικά.


Valid HTML 4.01!   Valid CSS!