Linux για τους νοητικά ασθενείς part II: Τα αρχεία συστήματος
Description: This is issue 13 of Magaz, the Hellenic LinuxMagazine
Keywords: magaz hellenic greek hellas greece hellug linux magazine

Magaz, The Greek Linux Magazine
Τεύχος #13
Περιληπτικά Περιεχόμενα Αναλυτικά Περιεχόμενα Mirrors Links Πληροφορίες Συντάκτες Αναζήτηση Επικοινωνία
Επόμενο Προηγούμενο Περιεχόμενα ### 2. Τα αρχεία συστήματος Τα αρχεία συστήματος είναι κάτι αρχεία τα οποία διαβάζει ο κουβάς μας κατά την διαδικασία εκκίνησης του για να πάρει γενικές κατευθύνσεις και για να ξέρει τι υπηρεσίες θα ξεκινήσει.Τα αρχεία αυτά θα τα συναντήσετε μέσα στο /etc και στα directories των εκάστοτε user (/root , /home/...).Γενικά οι τροποποιήσεις αυτών των αρχείων (ειδικά των γενικών αρχείων που βρίσκονται στο /etc) κρίνεται απαγορευμένη για μωρά και ηλιθίους αλλά μάλλον -με πάσα επιφύλαξη- εσείς δεν ανήκετε σε καμμία από τις δύο παραπάνω κατηγορίες.Έχοντας υπ' όψιν τα παραπάνω λοιπόν συνιστώ ανεπιφύλακτα να κάνετε ένα backup των αρχείων πριν ξεκινήσετε να τα τσακίζετε στις αλλαγές προς το καλύτερο -κούνια που σας κούναγε. Αρχεία συστήματος στο LINUX, λοιπόν, είναι τα κάτωθι /etc/fstab /etc/profile /etc/printcap /etc/rc.config /etc/inittab /etc/conf.modules Αυτά είναι τα σπουδαιότερα από τα γενικά αρχεία που και θα εξηγήσουμε διεξοδικά. Εκτός όμως από αυτά υπάρχουν και άλλα που δεν είναι του παρόντος να τα εξηγήσουμε. Επειδή όμως εγώ είμαι καλός άνθρωπος και σας πάω θα τα αναφέρω εν περιλήψη. /etc/DIR COLORS Αναθέτει τα χρώματα στην εντολή ls /etc/XF86Config Το configuration για το παραθυρικό περιβάλλον /etc/passwd Πληροφορίες για τους χρήστες (ονόματα, τα shell, τα user ID τους κ.λ.π.) /etc/shadow Τα passwords Φυσικά config file είναι και το lilo.conf αλλά και τα παρακάτω που βρίσκονται στους καταλόγους του κάθε χρήστη (συνήθως /home/{username}). .profile το προσωπικό script του κάθε χρήστη (για το bash) .bashrc το configuration του bash .xinitrc Ένα script για να εκκινείτε τα Χ WINDOWS με τα δικά σας γούστα (γραμματοσειρές, προγράμματα που θα ξεκινούν, ο WINDOW MANAGER της αρεσκείας σας κ.λ.π). ### 2.1 /etc/fstab Λοιπόν αυτό το αρχείο είναι ίσως το πιο απλό στο editing αφού διαβάζεται πανεύκολα. Ας εξηγήσουμε όμως τι κάνει. Με απλά λόγια καθοδηγεί στην εκκίνηση το linuxoboxo μας για το τι filesystems υπάρχουν στον κουβά μας, για το που γίνονται mount και τις διαδικασίες ελέγχου για κάθε ένα απ' αυτά. Η μορφή του είναι ως κάτω:
    Συσκευή     mount-point   filesystem-type   mount-options    dumps(backups)     fschk
Συσκευή . Εδώ ορίζουμε τις συσκευές μας (hard-drives και partitions π.χ. /dev/hda6, floppy-disks π.χ./dev/fd0, cdrom π.χ. /dev/hdc) mount-point.Εδώ ορίζουμε κάτω από ποιον κατάλογο θα γίνεται mount η κάθε συσκευή (/ , /usr , /opt , /cdrom , /mnt/floppy κ.λ.π.) filesystem-type.Εδώ ορίζουμε το είδος του filesystem για την κάθε συσκευή (ext2 , msdos , vfat , iso9660 , hpfs κ.λ.π.) mount-options.Εδώ ορίζουμε με τι επιλογές θα γίνει mount το κάθε σύστημα αρχείων. Αυτό λέει στο σύστημα για το αν το filesystem είναι read-write (rw), read-only (ro) κλπ. Συχνά θα συναντήσετε εδώ και τον ορισμό default , αυτό σημαίνει ότι κατά την εκκίνηση θα χρησιμοποιηθούν οι default επιλογές του συστήματος για το συγκεκριμένο filesystem-type. dumps. Εδώ καλούμαστε να ορίσουμε αν θα ζητήσουμε να γίνει backup της μορφής του filesystem κατά την εκκίνηση.Οι επιλογές είναι δύο α. μηδέν(0) και β. ένα (1) .Με μηδέν το filesystem δεν θα γίνει backup. Με ένα (1) θα αναγκάσει να γραφτεί ένα backup του συστήματος. fschk. Εδώ ορίζουμε αν θα ελέγχεται η συσκευή για λάθη. Οι επιλογές είναι τρείς. α. Μηδέν (0) δεν γίνεται έλεγχος δηλαδή β. Ένα (1) αφορά το root filesystem (/) και κάνει ένα εκτεταμένο fschk . γ. Δύο (2) ένα λιγότερο thorough fschk.
    Ας δώσουμε όμως και δύο-τρία παραδειγματάκια :
    <p>
    Για ένα filesystem ext2 στο πρώτο partition του πρώτου IDE harddisk που θέλουμε να χρησιμοποιήσουμε σαν root οι εγγραφές στο fstab θα είναι :
    <verb>
    /dev/hda1     /       ext2          default     1    1
Για το δεύτερο partition του δεύτερου δίσκου που κατά τραγική τύχη είναι Fat32 και γίνεται mount στο directory /winblows οι εγγραφές θα είναι:
    /dev/hdb2    /winblows           vfat         default(ή και rw)        0    0
Για ένα cdrom master στον δεύτερο IDE controller που θέλουμε να γίνεται αυτόματα mount στην εκκίνηση στον κατάλογο /mnt/cdrom οι εγγραφές είναι:
    /dev/hdc     /mnt/cdrom        iso9660    ro,auto                     0    0
Αυτά τα ολίγα για το fstab και πάμε παρακάτω. ### 2.2 /etc/profile Το profile είναι ένα αρχείο, μα τι αρχείο.Εδώ τα πράγματα μπορεί να είναι εύκολα για τους διαβασμένους έως πολύ δύσκολα για τους αδιάβαστους (σας έστειλα αδιάβαστους που λέμε). Το profile λοιπόν για να ξέρετε ελέγχει την γενική συμπεριφορά του κελύφους εργασίας μας (κάτι λέγαμε για bash την άλλη φορά, θυμάστε;). Η δομή του είναι περίπου αυτή που θα είχε και ένα πρόγραμμα της C. Από εδώ μέσα ορίζουμε το πως θα συμπεριφέρονται οι μεταβλητές συστήματος , ποια directories θα είναι μόνιμα στο PATH , που βρίσκονται οι ΜΑΝ σελίδες, τι aliases θα χρησιμοποιηθούν, τι γλώσσα κ.λ.π. Αυτό που ακολουθεί είναι ένα μικρό δείγμα profile αρχείου . Οι εξηγήσεις για το κάθε τι βρίσκονται στα comments(#)
     # /etc/profile

    PATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin   #καθορίζεται το path για τα εκτελέσιμα αρχεία
    export PATH                                        #γνωστοποιείται στο σύστημα

    export LANG=gr_GR                                  #καθορίζεται η γλώσσα

    LC_ALL=gr_GR         #αλλάζουν όλες οι ρυθμίσεις της γλώσσας και συμβολισμών σε ελληνικά (καθαρά C macro)
    export LC_ALL=gr_GR  #και εδώ γίνονται διαθέσιμες οι νέες ρυθμίσεις στο shell
    export LC_CTYPE=iso-8859_7    #αλλάζουν και καθορίζονται οι λειτουργίες που έχουν να κάνουν με επεξεργασία χαρακτήρων
                                  #σε κωδικοσελίδα iso 8859-7 (ελληνική)

    MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man    #καθορίζεται το path για το που βρίσκονται οι man σελίδες
    export MANPATH                                    #γνωστοποιείται στο σύστημα το path των man

    PS1="\t:\W\\"                       #καθορίζεται η πρωτεύουσα συμπεριφορά του shell prompt
    PS2='> '                            #καθορίζεται η δευτερεύουσα συμπεριφορά του shell prompt
    export PS1 PS2                      #γνωστοποιούνται στο σύστημα

    alias ls='ls -l --color=tty '
    alias dir='ls -l'
    alias ll='ls -l'                    #Διάφορα aliases
    alias la='ls -la'
    alias l='ls -alF'
    alias ls-l='ls -l'

    clear                                #καθαρίζει τον buffer από τα μηνύματα

    if   [ -x /tmp/osslinux-3.7.1z/osslinux.runme ] ; then       #κάνει έλεγχο για την ύπαρξη  αρχείου με όνομα osslinux.runme
       echo "the sound services can be initialized with  **/tmp/osslinux-3.7.1z/osslinux.runme **"     #ειδοποιεί για την ύπαρξη του αρχείου
    else
       echo "if you do not have a sound ready kernel compile one"    #αν δεν υπάρχει  ειδοποιεί και προτείνει
    fi
Μέσα στο profile μπορούν να οριστούν εκφράσεις όπως if...then.....else , loops και άλλα περίεργα και εντυπωσιακά για καλύτερο έλεγχο και παραμετροποίηση του συστήματος, αυτό βέβαια απαιτεί από εσάς να μάθετε καλά το πως λειτουργεί το κέλυφος εργασίας. Όπως θα καταλάβατε το profile μπορεί να γίνει a real pain in our ass με την πολυπλοκότητα που μπορεί να λάβει. Μία προσεκτική ανάγνωση στην man bash θα μας διώξει τις πολλές απορίες. Και συνεχίζουμε ακάθεκτοι. ### 2.3 /etc/printcap Α-χα! εδώ μπαίνουμε στο πιο πονεμένο θέμα για τον στραβόγιαννο χρήστη.Ο ΕΚΤΥΠΩΤΗΣ ΜΟΥ και πως αυτός θα δουλέψει. Μεγάλο θέμα και σηκώνει ώρες συζήτησης. Φυσικά δέν θα σας κάνω την χάρη (εδώ είδα κι έπαθα να κάνω τον δικό μου εκτυπωτή να δουλέψει θα κάνω τον δικό σας;). Λοιπόν το printcap είναι το αρχείο που διαχειρίζεται τους εκτυπωτές μας. Μέσα απ' αυτό περιγράφεται η συμπεριφορά του εκτυπωτή, η ονομασία του, το που θα γίνονται spool τα έγγραφα προς εκτύπωση, το πώς θα μετατραπεί και θα εκτυπωθεί ένα αρχείο που δεν είναι ASCII. Η απλούστερη μορφή του είναι η παρακάτω η οποία όμως είναι ικανή να τυπώσει μόνο ASCII κείμενο
    # epson colonas pro:      # ονομασία του  printer
    lp:lp=/dev/lp1            # ποια συσκευή είναι
    :sd=/usr/spool/lp1        #το spool directory
    :sh                       #παράμετρος που εμποδίζει την εκτύπωση του ονόματος του
                              #owner των προς εκτύπωση σελίδων σαν επικεφαλίδα
Επειδή όμως εσείς δεν θα τυπώσετε μόνο ASCII αλλά όλο και κάποια βρώμικη φωτογραφία θα προσπαθεί να βρει τον δρόμο της προς τον εκτυπωτή σας καλό είναι να γνωρίζετε ότι υπάρχουν τα λεγόμενα φίλτρα τα οποία αναλαμβάνουν να περιγράψουν στον εκτυπωτή αυτό που του στέλνετε (γυμνή, ψηλή, ξανθιά με πλούσια προσόντα κ.λ.π.) ώστε το αποτέλεσμα να είναι το αναμενόμενο και ουχί ακαταλαβίστικοι χαρακτήρες που γεμίζουν τις σελίδες σας. Μία ματιά στην man printcap και στο THE LINUX PRINTING HOWTO θα σας διαφωτίσει για το πώς θα εγκαταστήσετε διάφορα φίλτρα εκτύπωσης. Οι περισσότερες distributions πάντως έχουν και κάποια φίλτρα για εκτυπωτές. Η RH έχει τα redhat print filters τα οποία μπορείτε να εγκαταστήσετε μέσω του printool. Αντίστοιχα η SUSE έχει τα apsfilters τα οποία μπορείτε να εγκαταστήσετε μέσω του yast, ενώ επίσης μπορείτε να βρείτε και commercial φίλτρα στο διαδίκτυο. ### 2.4 /etc/rc.config Εδώ έχομεν το αρχείο το οποίο είναι υπεύθυνο για την έναρξη των δαιμόνων (daemons) για την επιλογή της ρύθμισης γλώσσας, της χρησιμοποιούμενης γραμματοσειράς για την έναρξη και το σετάρισμα των υπηρεσιών δικτύου και άλλων όμορφων και χορταστικών πραγμάτων.Ένα πολύ μικρό δείγμα rc.config είναι και το ακόλουθο
    MOUSE="/dev/psaux" #που βρίσκεται το mouse
    MODEM="/dev/ttyS2" #που βρίσκεται το modem
    KEYTABLE="us.map.gz"#το console map για τους χαρακτήρες
    CONSOLE_FONT="8x14alt"#τίθεται το font της κονσόλας
    KBD_NUMLOCK="yes"#αν το numlock θα είναι on κατά την εκκίνηση
    KBD_CAPSLOCK="no"#αν το capslock θα είναι on
    TIMEZONE="Europe/Athens"#ρυθμίσεις ώρας  (/usr/lib/zoneinfo/localtime)
    START_LOOPBACK="yes"έναρξη μίας εικονικής υπηρεσίας δικτύου (χρήσιμη για την λειτουργία εκτυπωτή)
    NETCONFIG=""#configuration για LAN και δίκτυα γενικά
    IPADDR_0=""
    IPADDR_1=""
    IPADDR_2=""
    IPADDR_3=""
    NETDEV_0="ppp0"#το όνομα του πρωτοκόλλου (συσκευής) δικτύου που μπορεί να ενεργοποιηθεί
    NETDEV_1="eth0"
    NETDEV_2=""
    NETDEV_3=""
    SETUPDUMMYDEV=yes#dummy net device χρειάζεται για σύνδεση με ppp (internet)
    FQHOSTNAME="1.local"#το hostname (από το /etc/hosts)
    NAMESERVER="193.91.1.1"το DNS του server που επιχειρεί πρώτη σύνδεση (εδώ της forthnet)
    START_KERNELD="yes"#εκκίνηση του kernel daemon
    START_GPM="yes"εκκίνηση του gpm για την υποστήριξη mouse σε τερματικό
    GPM_PARAM=" -t ps2 -m /dev/mouse"#παράμετροι για το mouse και το gpm
    START_LPD=yes#εκκίνηση του printer daemon
Όπως καταλαβαίνετε το rc.config είναι το βασικό αρχείο συστήματος το οποίο και διαβάζουν τα scripts κατά την εκκίνηση του Linux για να πληροφορηθούν για την μορφή που πρέπει να πάρει το σύστημα.Μην το αλλάζετε εκτός και αν ξέρετε πολύ καλά τι κάνετε. ### 2.5 /etc/inittab Είναι ένα μάλλον απλό αρχείο του οποίου η σημασία όμως είναι πολύ μεγάλη και για να καταλάβουμε πως λειτουργεί θα πρέπει να πούμε μερικά πράγματα για την /sbin/init και τι κάνει. Λοιπόν αυτή η init καθορίζει την συμπεριφορά του μηχανήματος . Όλοι φαντάζομαι έχετε δώσει κάποια από τις εντολές reboot, halt, shutdown κλπ, λοιπόν το τί θα κάνουν αυτές καθορίζεται από τα init scripts που βρίσκονται στο /sbin/init.d και τα οποία διαβάζει η init η οποία είναι και το πρώτο πράγμα που φορτώνει ο kernel στην εκκίνηση για να ελέγξει τις processes που θα εκκινηθούν. Φαίνεται απλό ε; Ε λοιπόν δεν είναι, αφού στο Linux υπάρχουν διάφορα επίπεδα κάτω από τα οποία μπορεί να τρέξει. Αυτά χαρακτηρίζονται από ένα αριθμό (αν παρατηρήσετε τα μηνύματα στην εκκίνηση θα δείτε που εκκινεί κάθε run-level και πιο είναι το τελευταίο που χρησιμοποιείται ). Ένας πίνακας με τα run-levels παρατίθεται εδώ (με πάσα επιφύλαξη για τα του red hat)
    SUSE
    0 halt
    S single user
    1 multi-user χωρίς δίκτυο
    2 multi-user με δίκτυο
    3 multi-user με δίκτυο και γραφικό login (xdm ή kdm καθορίζεται στο rc.config μαζί με τον window manager)
    6 reboot

    RED HAT
    0 halt
    1 single user
    2 multi user χωρίς network
    3 full multi-user
    5 γραφικό login όλες οι υπηρεσίες
    6 reboot
Έσείς προφανώς με όποια distribution και αν δουλεύετε σε full multi - user περιβάλλον θα κάνετε login. Και φτάνουμε τώρα στο inittab το οποίο καθορίζει την συμπεριφορά της init και των ενεργειών που θα γίνουν σε κάθε runlevel. Παρακάτω ένα inittab με τα σχόλια του.
    # /etc/inittab
    id:2:initdefault: #Έδω καθορίζετε ως default runlevel το 2 (#suse multiusr+network)

    si:I:bootwait:/sbin/init.d/boot #το πρώτο script που διαβάζει (αυτό που ξεκινά τον
                                    #kerneld για τα modules
                                    # ενεργοποιεί το swap ,κάνει fschk κ.λ.π.)

    l0:0:wait:/sbin/init.d/rc 0  #
    l1:1:wait:/sbin/init.d/rc 1  #ΕΝΤΟΛΕΣ ΓΙΑ ΚΑΘΥΣΤΕΡΗΣΗ ΣΤΗΝ ΜΕΤΑΒΑΣΗ ΤΩΝ
    l2:2:wait:/sbin/init.d/rc 2  #RUN-LEVELS ΓΙΑ ΝΑ ΓΙΝΟΥΝ MOUNT ΤΑ FILESYSTEMS
    l3:3:wait:/sbin/init.d/rc 3  #
    l6:6:wait:/sbin/init.d/rc 6  #

    ls:S:wait:/sbin/init.d/rc S   #οδηγίες για περίπτωση που θα μεταβούμε
    ~~:S:respawn:/sbin/sulogin    #σε single user mode (κατι ανάλογο με safe mode)

    ca::ctrlaltdel:/sbin/shutdown -r -t 4 now #η συμπεριφορά του three finger salute
                                              #(for those about to rock  We salute you)
Για να καταλάβετε καλύτερα πως λειτουργεί η init και το inittab καλό θα ήταν να ρίξετε μια ματιά στα script που βρίσκονται στο /sbin/init.d και στους υποκαταλόγους του (rc0.d ,rc2.d κλπ) αλλά και στην man init ### 2.6 /etc/conf.modules Εδώ δεν έχουμε και πολλά να πούμε γιατί το αρχείο αυτό το μόνο πράγμα που περιέχει είναι οι ρυθμίσεις αυτών των κομματιών του hardware που ξεκινάνε με το kerneld τον daemon δηλαδή που φορτώνει τα modules (ας πούμε drivers που φορτώνονται και ξεφορτώνονται δυναμικά) και επίσης aliases δηλαδή μετονομασίες των modules π.χ. alias ppp0 ppp ή alias iso9660 isofs . Οι ρυθμίσεις τώρα που αναφέρονται στα modules έχουν να κάνουν με διευθύνσεις io και τα irq. Ένα αρχείο λοιπόν που μάλλον δεν θα το αγγίξετε ποτέ αλλά μόνο για να διαγράψετε κάνα δυο comments από συσκευές που θέλετε να φορτώνουν αυτόματα μετά από κάποιο επιτυχημένο (θα περάσουν χρόνια) kernel compilation που θα κάνετε. ### 2.7 Τα αρχεία autoexec.bat και config.sys Καλά μεγάλε άμα δεν τα ξέρεις αυτά τα αρχεία έπαιξες και έχασες. Μη με ρωτάς καθόλου γιατί. Θα έπρεπε να ξέρεις.Τέλος πάντων ας σας εξηγήσω λίγα πράγματα γι' αυτά. Είναι αρχεία που ασχολούνται με το φόρτωμα των απαιτούμενων drivers, που καθορίζουν τα path των εκτελέσιμων (στο dos) και άλλα χορταστικά .Στο LINUX εμφανίζονται με ενιαία μορφή που είναι η παρακάτω.
    #autoexec.bat
    #config.sys
    set path=/read_my_lips/den_yparxoun_tetoia_arxeia_sto_linux_ma_ _ka/
    fi
Αυτή η τελευταία παράγραφος αφιερώνεται σ' αυτόν που μου ζήτησε αυτά τα αρχεία από το linuxoboxo μου γιατί λέει δεν μπορούσε να κάνει δουλειά με τα δικά του και το linux του δεν ξεκινούσε (ήταν και γιατρός πανάθεμα τον -ψυχίατρος βέβαια). Ξεκαθαρίζουμε λοιπόν. ΔΕΝ ΥΠΑΡΧΟΥΝ ΑΡΧΕΙΑ CONFIG.SYS ΚΑΙ AUTOEXEC.BAT ΣΤΟ LINUX. Άντε πια με τρελλάνατε. (Το παραπάνω περιστατικό είναι πέρα για πέρα αληθινό και συνέβη αρχές Φεβρουαρίου, μάρτυς η γυναίκα μου). Επόμενο Προηγούμενο Περιεχόμενα