Linux Inside
41
Linux Boot Process
Βήμα 1: Power On – BIOS
Το πρώτο βήμα είναι να δώσουμε ρεύμα στη μηχανή μας.
Καμία μηχανή δεν λειτουργεί χωρίς ρεύμα, οπότε ούτε και η
δική μας. Πατάμε, λοιπόν, το κουμπί Power και περιμένουμε
να ανάψει ο υπολογιστής. Το πρώτο πρόγραμμα που εκτελεί-
ται είναι το BIOS, δηλαδή, Basic Input/Output System [1]. To
BIOS βρίσκεται επάνω στην πλακέτα του υπολογιστή. Η δου-
λειά του είναι ελέγχει τις συσκευές του συστήματος. Εάν λεί-
πουν βασικά στοιχεία (π.χ., η μνήμη), θα μας ενημερώσει με
κάποιο μήνυμα στην οθόνη είτε με κάποιο ηχητικό μήνυμα.
Με τα χρόνια, το BIOS μεγάλωσε τόσο πολύ σε μέγεθος,
που η χωρητικότητά του και οι δυνατότητές του έχουν φτάσει
στα όριά τους. Γι’ αυτό έχει ήδη ξεκινήσει η προσπάθεια αντι-
κατάστασής του από το UEFI, δηλαδή, το Unified Extensible
Firmware Interface [2].
Στα σύγχρονα BIOS υπάρχει η δυνατότητα παραμετροποίη-
σης των συσκευών ενός υπολογιστή, μέσω καταχωρητών
(registers). Η επιλογή του πρωτεύοντος δίσκου εκκίνησης,
εάν θα μπορεί να εκκινήσει το σύστημά μας από CDROM ή
USB ή ακόμη και των κλείδωμα των θυρών μας, μπορεί να γί-
νει μέσα από το BIOS.
Βήμα 2: Master Boot Record – Σκληρός Δίσκος
Αφού ολοκληρώσει τους ελέγχους στις συσκευές μας, το
BIOS θα μεταφέρει τη διαδικασία εκκίνησης στον πρώτο δί-
σκο του συστήματός μας. Συγκεκριμένα, η διαδικασία εκκίνη-
σης περνά από τα πρώτα 512 bytes του δίσκου μας. Εκεί είναι
αποθηκευμένες οι εξής πληροφορίες: To Master Boot Record
ή MBR [3] και το Partition Table του δίσκου μας.
Το MBR περιέχει πληροφορίες για τα υπάρχοντα λειτουργι-
κά συστήματα του συστήματός μας, ενώ το Partition Table πε-
ριέχει πληροφορίες σχετικά με τη γεωμετρία του δίσκου και
τις υπάρχουσες κατατμήσεις του.
Μία χρήσιμη εντολή είναι η εξής:
dd if=/dev/sda of=sda.mbr bs=512 count=1
Η παραπάνω εντολή (dd [4]) περιγράφεται ως εξής: Αντί-
γραψε σε επίπεδο byte, από τον πρώτο δίσκο, τα πρώτα 512
bytes στο αρχείο sda.mbr. Με λίγα λόγια, πήραμε ένα αντί-
γραφο του MBR και του Partition Table σε ένα αρχείο. Καλό
είναι αυτό το αρχείο να το μεταφέρουμε σε έναν εξωτερικό
δίσκο.
Έχουμε εξασφαλίσει, ότι σε περίπτωση που το Partition
Table μας καταστραφεί, έχουμε ένα αντίγραφο και τη δυνατό-
τητα να το επαναφέρουμε Τα πρώτα 512 bytes είναι τόσο ση-
μαντικά, που ακόμη και όταν διαμορφώνουμε έναν δίσκο, ξε-
κινάμε τη διαμόρφωση από το 513o byte και μετά! Μόνο ένα
λειτουργικό σύστημα θα πρέπει να γράφει στο MBR!
Τι περιέχουν, όμως, αυτά τα 512 bytes και σε τι χρησιμεύ-
ουν; Δείτε την
εικόνα 1
. Τα πρώτα 440 bytes (με μέγιστο
όριο τα 446 bytes) αποτελούν την code area, δηλαδή, την πε-
ριοχή στην οποία αποθηκεύεται ο κώδικας των προγραμμά-
των εκκίνησης. Στην περίπτωσή μας, το GRand Unified
Bootloader ή κοινώς GRUB [4]. Για τις ανάγκες του άρθρου
μας θα αναφερθούμε μόνο στο GRUB legacy και όχι στο
GRUB 2. Τα επόμενα 64 bytes αφορούν στο Partition Table
του δίσκου μας. Και τα τελευταία δύο (2) bytes αποτελούν το
MBR signature. Αυτά τα δύο bytes επιβεβαιώνουν την ακεραι-
ότητα του MBR.
Partition Table
Για να κατανοήσουμε καλύτερα τη διαδικασία εκκίνησης, θα
πρέπει να εξηγήσουμε με δύο λόγια τι είναι το Partition Table.
Εάν ο δίσκος μας δεν έχει διαμορφωθεί ποτέ στο παρελ-
θόν, τότε μπορούμε να επιλέξουμε εμείς τον τύπο του. Ο τύ-
πος ενός δίσκου περιγράφει πόσες κατατμήσεις θα έχουμε
και πώς θα περιγράφονται αυτές. Η IBM όρισε αρχικά το IBM
PC compatible partition table ή αλλιώς PC DOS (μπορεί να το
δείτε και ως IBM PC DOS). Σημειώστε ότι το PC DOS δεν εκ-
φράζει λειτουργικό σύστημα και ως εκ τούτου δεν πρέπει να
συγχέεται με το λειτουργικό σύστημα DOS...
Το IBM PC DOS disk type ορίζει τέσσερις κατατμήσεις. Αυ-
τές περιγράφονται ως πρωτεύουσες (primary). Στα λειτουργι-
κά συστήματα Windows χαρακτηρίζονται ως C:, D: και ούτω
καθεξής. Εάν θέλουμε να έχουμε παραπάνω από τέσσερις
κατατμήσεις, τότε θα πρέπει να ορίσουμε μία πρωτεύουσα
κατάτμηση ως εκτεταμένη (extended), γιατί μία extended κα-
τάτμηση μπορεί να «φιλοξενήσει» πολλές λογικές κατατμή-
σεις (logical partitions). Θεωρήστε, δηλαδή, μία extended κα-
τάτμηση ως μία θήκη, στην οποία μπαίνουν οι λογικές κατα-
τμήσεις.
Ο περιορισμός των τεσσάρων primary κατατμήσεων υπάρ-
χει για προς τα πίσω συμβατότητα με παλιά λειτουργικά συ-
στήματα. Τα νέα λειτουργικά συστήματα δεν έχουν τέτοιους
περιορισμούς, αλλά δυστυχώς τα Windows δεν μπορούν να
εγκατασταθούν διαφορετικά. Τα Windows μάλιστα χρειάζεται
να εγκατασταθούν στο C:, δηλαδή, στην πρώτη primary κατά-
τμηση και δεν γνωρίζω εάν μπορεί αυτό να αλλάξει!
Ευτυχώς, πιο «ευφυή» λειτουργικά συστήματα, όπως το
Linux, δεν έχουν τέτοιο περιορισμό. Μάλιστα δεν έχει καμία
απολύτως σημασία εάν είναι primary ή logical η κατάτμηση
στην οποία θα εγκατασταθεί. Όταν μάλιστα εγκαθιστούμε
Linux μαζί με Windows, προτιμούμε να δημιουργήσουμε μία
extended κατάτμηση και πολλές λογικές κατατμήσεις, για να
έχουμε εκεί το χώρο swap, το root σύστημα αρχείων ή άλλα
τμήματα, όπως τα /home, /usr και ούτω καθεξής.
Ανατομία του Master Boot Record.
1
Τα πρώτα 512 bytes είναι τόσο σημαντικά, που
ακόμη και όταν διαμορφώνουμε έναν δίσκο,
ξεκινάμε τη διαμόρφωση από το 513o byte και
μετά! Μόνο ένα λειτουργικό σύστημα θα πρέπει
να γράφει στο MBR!