Κυριακή 28 Σεπτεμβρίου 2008

Το βασικό σύστημα αρχείων του Linux

Αυτό που διαπιστώνει ο νέος χρήστης Linux μετά την επιτυχή εγκατάσταση της διανομής που διάλεξε είναι ότι δεν ξέρει πού να ψάξει και τι να βρει... wow.gif

Τα γραφικά εργαλεία βέβαια (file browser, πχ. Nautilus, Konqueror, Dolphin, Thunar) θα επιτρέψουν στο χρήστη να ανοίξει το "Υπολογιστής" και θα βρει τους δίσκους του και ένα άγνωστο "File System", το οποίο με λίγη φαντασία θα καταλάβει, ότι μάλλον είναι τα αρχεία του λειτουργικού...

Αυτό που είχε συνηθίσει ο προερχόμενος από τα Windows χρήστης, απλά δεν υπάρχει... Δηλαδή δεν θα βρει κανένα C:, A:, D: κτλ.. Αυτό που θα βρει είναι ένας φάκελος με πολλούς (απρόσμενα πολλούς! pardon.gif) υποφακέλους. Όλοι με κάτι παράξενα ονόματα που δεν ξεπερνούν τους 4-5 χαρακτήρες. Και άντε πάλι κάποιων κάτι λέει το όνομά τους, οι άλλοι όμως;

Δεν χρειάζεται άγχος... nono.gif

Το σύστημα αρχείων του λειτουργικού, αν κατανοηθεί, μπορεί να αγαπηθεί! Είναι σαφές και αυστηρό. Και δεν χρειάζεται ασφαλώς να το κατανοήσει ο μέσος χρήστης εις βάθος! Έτσι κι εμείς θα παρουσιάσουμε εδώ μόνο τα βασικά.

Πριν όμως από αυτό, να θυμίσουμε κάτι ακόμα. Στο Linux οι κρυφοί φάκελοι/ αρχεία δεν ορίζονται από τις ιδιότητες του φακέλου/ αρχείου, αλλά από την τελεία (.) μπροστά από το όνομά τους.

______________________


Αρχικά θεωρούμε ότι όλοι οι φάκελοι του λειτουργικού βρίσκονται στον ριζικό κατάλογο (root directory) που συμβολίζεται με μια σκέτη λοξή παύλα: /. Κάτω από αυτόν βρίσκονται όλοι οι υπόλοιποι. Αν και υπάρχουν μερικές διαφορές μεταξύ των φακέλων που συναντάμε στις διάφορες διανομές, η βασική φιλοσοφία παραμένει. Έτσι οι φάκελοι που θα βρούμε είναι:

--/bin
(binaries)
Τα εκτελέσιμα των πιο βασικών προγραμμάτων. Κοινά για το σύστημα και όλους τους χρήστες (υπερχρήστες και απλούς).

--/boot
Όπως λέει και η λέξη, ο φάκελος αυτός φιλοξενεί αρχεία απαραίτητα για την εκκίνηση του λειτουργικού.
Ενδιαφέρον παρουσιάζουν μερικά αρχεία, τα οποία θα αναφέρουμε παρακάτω.

--/dev
(devices)
Όλες οι συσκευές αναπαρίστανται στο λειτουργικό σαν αρχεία με ειδικές ρυθμίσεις.

--/etc
Γενικά περιέχει αρχεία ρυθμίσεων.
Ενδιαφέρον παρουσιάζουν μερικά αρχεία, τα οποία θα αναφέρουμε παρακάτω.

--/home
Μέσα σ' αυτόν τον φάκελο μπορούμε να νοιώθουμε σαν στο σπίτι μας. veryhappy.gif

Αν έχουμε φτιάξει περισσότερους του ενός χρήστες, τότε αυτοί φιλοξενούνται σε αντίστοιχους υποφακέλους με όνομα το όνομα χρήστη που χρησιμοποιούν για login.

Εδώ κάνουμε ό,τι θέλουμε, έχουμε πλήρη δικαιώματα πάντοτε, μπορούμε να φυλάμε τα αρχεία μας κτλ.. Σε αυτόν φιλοξενούνται και κρυφοί φάκελοι με τις ρυθμίσεις μας για τα περισσότερα προγράμματα που χρησιμοποιούμε (πχ. εδώ φυλάσσονται τα profile του Firefox στον κρυφό φάκελο ~/.mozilla). Ο φάκελος αυτός μπορεί να περιέχει τα αρχεία μας ταξινομημένα στις δημοφιλείς κατηγορίες "Documents", "Music", "Photos", "Videos" και ο,τιδήποτε άλλο, χωρίς να είναι υποχρεωτικό κάτι από αυτά. Είπαμε εδώ είναι το σπίτι μας! Κάνουμε ό,τι θέλουμε! Προσοχή μόνο με το φάκελο "Desktop", γιατί αυτός είναι ολόκληρη η επιφάνεια εργασίας μας!

Παρενθετικά να θυμίσουμε ότι αυτός ο φάκελος του χρήστη μας, δηλαδή ο /home/onoma_xristi συμβολίζεται με "~" για συντομία. Αυτό σημαίνει ότι αν συναντήσουμε σε κάποιον οδηγό την διαδρομή ~/Documents, αυτό αντιστοιχεί σε /home/onoma_xristi/Documents.

Τέλος, να σημειώσουμε ότι αυτός ο φάκελος φρόνιμο είναι να αντιστοιχηθεί (κατά την εγκατάσταση ας πούμε) σε μία ξεχωριστή κατάτμηση του σκληρού.

--/initrd
Φάκελος για την εκκίνηση του λειτουργικού. Δεν υπάρχει σε όλες τις διανομές.

--/lib
(libraries)
Βιβλιοθήκες. Πιο συγκεκριμένα διαμοιράσιμες βιβλιοθήκες του συστήματος και modules. Αντιστοιχούν κατά κάποιο τρόπο στα dll των Windows.

--/lost+found
Περιέχει αρχεία που σώθηκαν σε έκτακτες περιπτώσεις. Δεν είναι κάτι που θα μας απασχολήσει συχνά. Ίσως και ποτέ. Άλλωστε δεν είναι φάκελος του λειτουργικού, αλλά φάκελος που έχει κάθε κατάτμηση ξεχωριστά.

--/media
Σε αυτό τον φάκελο υπάρχουν άλλοι υποφάκελοι καθένας από τους οποίους αντιστοιχεί σε ένα προσαρτημένο τόμο (δίσκο/ κατάτμηση). Αυτό δεν σημαίνει ότι δεν μπορούμε να προσαρτήσουμε τις κατατμήσεις σε κάποιο άλλο σημείο, αλλά η τάξη είναι τάξη. smile.gif
Με τον φάκελο αυτό θα ασχοληθούμε λίγο περισσότερο παρακάτω.

--/mnt
(mount=προσάρτηση)
Ο φάκελος αυτός διατίθεται για τις προσωρινές προσαρτήσεις κάποιων κατατμήσεων. Σε κάποιες διανομές δεν χρησιμοποιείται καθόλου εκ προεπιλογής. Είναι θέμα του χρήστη, αν θα τον χρησιμοποιήσει ποτέ.
Με τον φάκελο αυτό θα ασχοληθούμε λίγο περισσότερο παρακάτω.

--/opt
Είναι ο χώρος εγκατάστασης κάποιων προγραμμάτων του χρήστη. Μόνο συγκεκριμένα προγράμματα πρακτικά τον χρησιμοποιούν. Σίγουρα όμως είναι εφαρμογές τρίτων κατασκευαστών, όπως πχ. το Google Picasa.

--/proc
Ένα εικονικό σύστημα αρχείων για τις λειτουργίες του συστήματος και τους πόρους του (χρησιμοποιείται με τις εκδόσεις των πυρήνων 2.4 και 2.6)

--/root
Με απλά λόγια είναι το home του χρήστη root. Ο λογαριασμός root δεν χρησιμοποιείται από όλες τις διανομές και μπορεί να βρείτε τον φάκελο αυτό τελείως άδειο (άντε να έχει μερικά κρυφά αρχεία).

--/sbin
Περιέχει πολύ σημαντικά προγράμματα για τη διαχείριση του συστήματος.

--/srv
(services)
Πολύ συγκεκριμένη η χρήση του, η οποία αφορά σε δικτυακές εργασίες. Πιθανότατα θα τον βρείτε τελείως άδειο.

--/sys
Αντίστοιχης χρήσης με το /proc (χρησιμοποιείται στη σειρά 2.6)

--/tmp
(temporary)
Χώρος για χρήση από προγράμματα που απαιτούν την δημιουργία προσωρινών αρχείων. Τα περιεχόμενά του καθαρίζονται αυτόματα.

--/usr
Ένας μεγάλος υποκατάλογος του ριζικού συστήματος. Περιέχει φακέλους που συναντήσαμε στο ριζικό κατάλογο (πχ. bin, lib, sbin) μόνο που τα προγράμματα εδώ δεν αφορούν κρίσιμες υπηρεσίες ή μόνο τον administrator, αλλά είναι διαμοιράσιμα μεταξύ περισσοτέρων χρηστών.

--/var
(variable)
Περιέχει αρχεία μεταβλητού περιεχομένου. Χαρακτηριστικά εδώ είναι αποθηκευμένα όλα τα log του συστήματος, που αντανακλούν την εύρυθμη ή μη λειτουργία του.
Κάποια αρχεία εδώ παρουσιάζουν ενδιαφέρον και θα αναφερθούμε σε αυτά παρακάτω.

______________________


Αυτοί ήταν οι φάκελοι που θα βρείτε (εκτός μερικών εξαιρέσεων ανάλογα με τη διανομή σας). Όπου δεν κάναμε κανένα σχόλιο, σημαίνει ότι με αυτούς τους φακέλους ΔΕΝ χρειάζεται να ασχοληθείτε! Στους άλλους υπάρχουν κάποια αρχεία που μπορεί να χρειαστεί να ελέγξουμε ή/ και να επεξεργαστούμε κάποια φορά, οπότε θα αναφερθούμε ειδικότερα.

Να σημειώσουμε ότι όλοι οι φάκελοι πλην του /home απαιτούν αυξημένα δικαιώματα για να μπορείτε να τους επεξεργαστείτε. Αυτό προφανώς για λόγους ασφαλείας. Ακόμα να ξεκαθαρίσουμε ότι τα αρχεία ρυθμίσεων είναι απλά αρχεία κειμένου. Άρα τα επεξεργαζόμαστε με έναν κειμενογράφο, όπως τους gedit, kate, kwrite, nano κτλ.. Για να αποκτήσουμε δικαιώματα υπερχρήστη (administrator/ root) ανάλογα με τη διανομή μας μπορούμε να εισέλθουμε στο σύστημα με τον λογαριασμό root ή να παίρνουμε προσωρινά δικαιώματα σε μια συνεδρία τερματικού χρησιμοποιώντας συνήθως τις εντολές su ή sudo (προστρέξτε σε οδηγούς για την διανομή που χρησιμοποιείτε για πιο συγκεκριμένες οδηγίες).

Τώρα ας δούμε μερικά αρχεία ρυθμίσεων που μπορεί να μας απασχολήσουν.

/boot/grub/menu.lst
Κατά πάσα πιθανότητα ο bootloader (το πρόγραμμα που αναλαμβάνει τη φόρτωση του λειτουργικού) που εγκαταστήσατε ήταν ο GRUB. Τότε στην παραπάνω διαδρομή θα βρείτε το αρχείο που ρυθμίζει τι και πώς θα εμφανίζεται στην οθόνη επιλογής λειτουργικού κατά την εκκίνηση του υπολογιστή.

/etc/fstab
Το αρχείο αυτό ορίζει ποιες κατατμήσεις και πού θα προσαρτηθούν αυτόματα κατά την εκκίνηση του λειτουργικού ή μόλις γίνουν διαθέσιμες (πχ. εισαγωγή ενός οπτικού δίσκου ή μιας δισκέτας). Η "γλώσσα" που χρησιμοποιεί δεν είναι πολύ δύσκολη, αλλά χρειάζεται μια εξοικείωση. Επιφυλασσόμαστε για περισσότερες οδηγίες πάνω στο θέμα αυτό, που μας απασχολεί συχνά.

/etc/X11/xorg.conf
Το αρχείο που ρυθμίζει πολλές παραμέτρους του υλικού μας. Εδώ ρυθμίζεται εν μέρει το πληκτρολόγιο, η οθόνη και το κυριότερο η κάρτα γραφικών, που δυστυχώς απασχολεί ακόμα αρκετούς από μας. Κάθε διανομή όμως κάνει ελαφρώς διαφορετική χρήση αυτού του αρχείου και θα πρέπει να το επεξεργάζεστε μόνο κατά τις οδηγίες που θα βρίσκεται από άτομα που εμπιστεύεστε.

/media
Τον φάκελο αυτό χρησιμοποιούμε συνήθως για να ορίζουμε το σημείο προσάρτησης (mount point) κατατμήσεων που φορτώνονται με την εκκίνηση του λειτουργικού. Το σημείο προσάρτησης είναι πάντα ένας υποφάκελος του /media, πχ. /media/Windows ή /media/External-disk. Η αυτόματη προσάρτηση γίνεται μέσω του fstab που ήδη αναφέραμε.

/mnt
Δεν διαφέρει σε τίποτα από το /media, εκτός του ότι μας επιτρέπει να βάλουμε μια τάξη. Δηλαδή ας θεωρήσουμε ότι στο /media προσαρτούμε τις κατατμήσεις (δίσκους) που χρησιμοποιούμε συνέχεια, ενώ στο /mnt θα προσαρτήσουμε κάτι σε μια έκτακτη περίπτωση. Αυτά όμως δεν είναι απόλυτα και συνδέονται με τη φιλοσοφία της κάθε διανομής.

/usr
Ενδιαφέρει το χρήστη κυρίως όταν θέλει να ψάξει για κάποιο λόγο χειροκίνητα ένα εκτελέσιμο αρχείο. Για παράδειγμα ένα πρόγραμμα που δεν έφτιαξε αυτόματα εγγραφή για το μενού και πρέπει να αναζητηθεί στο φάκελο που εγκαταστάθηκε (πιθανώς /usr/bin).

Χρήσιμη εδώ είναι η εντολή whereis (που κάνει ό,τι λέει το όνομά της wink.gif). Αν ψάχνουμε να βρούμε που είναι εγκατεστημένο ένα πρόγραμμα, τα χνάρια του οποίου χάσαμε για κάποιο λόγο, δίνουμε για παράδειγμα:
ΚΩΔΙΚΑΣ
whereis firefox

και παίρνουμε αμέσως την καταλυτική απάντηση:
ΠΑΡΑΘΕΜΑ
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox

Δεν είναι κάτι όμως που χρειάζεται να μάθει ο αρχάριος χρήστης, καθώς θα χρειάζεται σε πολύ συγκεκριμένες περιπτώσεις. Πάντως τα εργαλεία υπάρχουν. wink.gif

Θα ασχοληθούμε λίγο ακόμα με τα παραπάνω paths στην τελευταία παράγραφο του άρθρου.

/var
Αποθηκεύονται σαν backup τα πακέτα εγκατάστασης που κατεβάζουμε μέσω του Διαχειριστή πακέτων της διανομής μας για μελλοντική χρήση (για να μην χρειάζεται να τα ξανακατεβάσουμε). Ανάλογα με τον διαχειριστική πακέτων της διανομής σας, ο φάκελος μπορεί να είναι ο /var/cache/apt (apt-get/ apt-rpm), /var/cache/yum (yum), /var/cache/zypp/packages (Zypper), /var/packages (netpkg), /var/slapt-get (Slackware), /var/cache/pacman/pkg (Arch) κ.ά..



/var/log
Περιέχει log των συμβαμάτων του συστήματος. Το πιο κοινά χρησιμοποιούμενο ίσως είναι το /var/log/messages. Αν το παρακολουθήσετε για λίγη ώρα, συνδέοντας ένα φλασάκι για παράδειγμα θα καταλάβετε περί τίνος πρόκειται. Για αυτό βέβαια είναι εύκολη η δημιουργία ημιγραφικών εργαλείων επισκόπησης των αλλαγών, όπως στο Ubuntu στη διαδρομή System - Administration - System Log.

______________________


Τελειώνοντας ας κάνουμε μία νύξη και για κάτι πιο προχωρημένο, αλλά άμεσα συνδεόμενο με την παραπάνω περιγραφή.

Όταν πληκτρολογούμε εντολές στην κονσόλα, αυτές φυσικά αντιστοιχούν σε εκτελέσιμα αρχεία (σύνολο εντολών = προγράμματα). Τα αρχεία αυτά όμως, για να μπορέσουν να εκτελεστούν απευθείας από ένα τερματικό χωρίς να καθοριστεί η διαδρομή του εκτελέσιμου αρχείου πρέπει να βρίσκονται σε κάποιες συγκεκριμένες διαδρομές. Δηλαδή κάθε εκτελέσιμο που βρίσκεται στις διαδρομές αυτές μπορεί να εκτελεστεί άμεσα από την κονσόλα.

Οι φάκελοι στους οποίους φιλοξενούνται αυτά τα αρχεία είναι συγκεκριμένοι και είναι κάποιοι από αυτούς που προαναφέραμε. Μπορούμε να τους "ανακαλύψουμε" δίνοντας την εντολή:
ΚΩΔΙΚΑΣ
echo $PATH

Θα μας επιστρέψει κάτι σαν:
ΠΑΡΑΘΕΜΑ
/home/prts2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Αυτό σημαίνει ότι ό,τι πρόγραμμα υπάρχει μέσα σε αυτούς τους φακέλους μπορεί να εκτελείται σαν απλή εντολή από ένα τερματικό. smile.gif

Οποιοδήποτε πρόγραμμα είναι εγκατεστημένο εκτός των παραπάνω διαδρομών, μπορεί να εκτελεστεί από κονσόλα μόνο μέσω του πλήρους path προς το εκτελέσιμο. Για παράδειγμα, έστω ότι κατέβασα μια δοκιμαστική έκδοση του Firefox και θέλω να την δοκιμάσω. Κατεβάζω και αποσυμπιέζω τα αρχεία του προγράμματος στην επιφάνεια εργασίας μου και βρίσκω το εκτελέσιμο αρχείο της εφαρμογής. Αν ήθελα να χρησιμοποιήσω την κονσόλα, θα έπρεπε να δώσω ~/Desktop/firefox/firefox...

Βέβαια μπορούμε να προσθέσουμε στο PATH νέες διαδρομές, αλλά πρώτον αυτό μπορεί να προκαλέσει θέματα ασφαλείας και μπερδέματα, αν δεν γνωρίζουμε, και δεύτερον αυτό θα χρειαστεί σε πολύ συγκεκριμένες περιπτώσεις και σταματούμε εδώ, γιατί έχουμε ξεφύγει. nananana.gif

______________________


Αυτά εν ευλόγω συντομία και απευθυνόμενοι σε αρχάριους χρήστες. Όποιος θέλει να εντρυφήσει στο σύστημα αρχείων του Linux παραπέμπεται στις ιστοσελίδες που παρατίθενται πιο κάτω.
Για το forum του e-pcmag.gr, prts_1

Ελπίζουμε το άρθρο να φανεί χρήσιμο στους χρήστες που εισέρχονται στη διαφορετική δομή του λειτουργικού αυτού και να το αγαπήσουν με τον τρόπο τους. wink.gif

Δεν υπάρχουν σχόλια: