-- Leo's gemini proxy

-- Connecting to magaz.hellug.gr:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Διαδικασία εκκίνησης του Υπολογιστή.


DJ Art(mailto:djart@freemail.gr)
Νοε 1999

Το άρθρο αυτό αποτελεί συνέχεια του αντίστοιχου άρθρου του τεύχους 13. Έχει σκοπό να εμβαθύνει περισσότερο στο εσωτερικό και στη λειτουργία του αρχείου /etc/inittab και του καταλόγου /etc/rc.d/


1. init και /etc/inittab


2. Τα αρχεία /etc/inittab και /etc/rc.d/rc.sysinit


3. Το αρχείο /etc/rc.d/rc.local


4. Οι κατάλογοι rcX.d


[1. init και /etc/inittab]


Η man page του init αναφέρει: "Το init είναι ο πατέρας όλων των processes". Ο πρωταρχικός του ρόλος είναι να δημιουργήσει processes από τις οδηγίες που του δίνει το /etc/inittab. Ο τρόπος με τον οποίο το Linux εκκινεί τα processes μετά από το boot του kernel, προέρχεται από μία άλλη έκδοση του UNIX, την System V. Στην πραγματικότητα η εντολή init είναι συμβατή με την System V init εντολή. Παρόλο που η init χαρακτηρίζεται ως το τελευταίο βήμα της διαδικασίας του boot του kernel, είναι η πρώτη εντολή που ρυ θμίζει και προετοιμάζει το σύστημά σας για χρήση. Η init δουλεύει διαβάζοντας το /etc/inittab και τρέχοντας τα scripts του καταλόγου /etc/rc.d σύμφωνα βέβαια με το επιθυμητό runlevel. Κάθε script μπορεί να σταματήσει ή να ξεκινήσει μια υπηρεσία, όπως π.χ. την υπηρεσία για το mail, τα news ή το Web.


Αυτή είναι μιά άποψη του καταλόγου /etc/rc.d (προσέξτε ότι από διανομή σε διανομή, τα runlevels δεν είναι ίδια):


init.d/
rc*
rc.local*
rc.sysinit*
rc0.d/
rc1.d/
rc2.d/
rc3.d/
rc4.d/
rc5.d/
rc6.d/

Στον κατάλογο /etc/rc.d/init.d θα βρείτε έναν αριθμό από scripts που χρησιμεύουν στο να σταματούν ή να ξεκινούν τις διάφορες υπηρεσίες.


[2. Τα αρχεία /etc/inittab και /etc/rc.d/rc.sysinit]


Το σπουδαιότερο script είναι το rc.sysinit, καθώς είναι το πρώτο script που εκτελείται στο Linux. Οι λειτουργίες του script αυτού είναι οι εξής:


Ορίζει το PATH (κάνει export τη μεταβλητή PATH)

Ρυθμίζει το networking

Ξεκινάει το swapping για τη virtual memory

Ορίζει το hostname του συστήματος

Ελέγχει το root partition για πιθανές επιδιορθώσεις (fsck)

Ελέγχει τα quotas του root filesystem

Ενεργοποιεί τα user και group quotas για το root filesystem

Ξανακάνει mount το root filesystem, αλλά αυτήν την φορά read/write

Ελέγχει τον πίνακα των mounted filesystems, τον /etc/mtab

Ετοιμάζει το σύστημα για το φόρτωμα των modules

Βρίσκει τα modules dependencies

Ελέγχει τα υπόλοιπα filesystems για πιθανές επιδιορθώσεις

Κάνει mount όλα τα υπόλοιπα filesystems

Σβήνει πολλά /etc αρχεία, όπως π.χ. το /etc/fastboot

Σβήνει τα UUCP lock αρχεία

Ρυθμίζει την ώρα του συστήματος

Ξεκινάει το swap partition

Ετοιμάζει τις serial ports

Φορτώνει τα modules


Το rc.sysinit script εκτελείται από την init δια μέσου του /etc/inittab. Το inittab περιέχει την εξής γραμμή:


# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit


[3. Το αρχείο /etc/rc.d/rc.local]


Μέχρι τώρα είδαμε ότι μετά το boot του kernel, η εντολή τρέχει το script rc.sysinit. Στη συνέχεια, η εντολή init εκτελεί το script rc.local. Αν κοιτάξετε το περιεχόμενο του rc.local, θα διαπιστώσετε ότι αυτό το script μαζεύει πληροφορίες για το όνομα της διανομής σας και για την αρχιτεκτονική του υπολογιστή σας και τοποθετεί αυτές τις πληροφορίες στο αρχείο /etc/issue. Το περιεχόμενο του αρχείου αυτού αναδεικνύεται κατά τη διαδικασία του login από το χρήστη.


Αναλυτικότερα, σε ένα RedHat σύστημα, το rc.local διαβάζει το αρχείο /etc/redhat-release, που περιέχει την έκδοση της διανομής, και στη συνέχεια εκτελεί τις εντολές uname -r, που εμφανίζει την έκδοση του kernel, και uname -m, που εμφανίζει τον τύπο του επεξεργαστή (π.χ. 686). Στο τέλος, τοποθετεί όλες αυτές τις πληροφορίες στο αρχείο /etc/issue (με echo >> ).


Σημείωση: Ο σκοπός του rc.local δεν είναι να αποτελεί ένα μέρος για να βάζει κανείς εντολές για τη ρύθμιση (initialization) του συστήματος, παρόλο που μερικοί το κάνουν. Στο BSD UNIX, το rc.local χρησιμοποιείται για τον έλεγχο των δικτυακών υπηρεσιών. Το Linux δεν χρησιμοποιούσε πάντα τα ίδια initialization scripts, οπότε μπορεί να βρείτε διαφορές μεταξύ των RedHat, SuSE, Slackware και των άλλων διανομών.


[4. Οι κατάλογοι rcX.d]


Η επόμενη εργασία που κάνει η εντολή init είναι η εκτέλεση των ειδικών scripts για κάθε runlevel. Μέσα στον κατάλογο /etc/rc.d, όπως είδαμε, υπάρχουν οι κατάλογοι rcX.d, όπου X είναι ο αριθμός του αντίστοιχου runlevel (από 0 έως 6). Αν κοιτάξετε τα περιεχόμενα ενός από αυτούς του καταλόγους, θα δείτε οτι περιέχουν links στα διάφορα scripts του καταλόγου /etc/rc.d/init.d. Η μορφή των links είναι κάπως έτσι:


S10network ή
K10network

Το γράμμα S ή K αντιστοιχεί στην εκκίνηση ή στον τερματισμό μιάς υπηρεσίας (S από το Start και K από το Kill). Ο αριθμός δίπλα από το γράμμα χρησιμεύει για να τρέχουν τα scripts στη σωστή σειρά (για παράδειγμα να μην κάνει unmount τα partitions πριν κλείσει το network file-sharing).


Αρχική Σελίδα

-- Response ended

-- Page fetched on Sat May 11 21:31:34 2024