7 Τεχνικές Λεπτομέρειες

(Γράφτηκε από τον Randall Hopper, )

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

7.1 Σκληροί Δίσκοι

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

Ο δίσκος σας έχει ένα συγκεκριμένο αριθμό από κυλίνδρους, ένα αριθμό από κεφαλές και κάποιο αριθμό από τομείς σε κάθε ζευγάρι κυλίνδρου-κεφαλής (το ζευγάρι κυλίνδρου-κεφαλής είναι γνωστό και ως μονοπάτι ή track). Συνολικά αυτές οι πληροφορίες ορίζουν την «φυσική γεωμετρία δίσκου» του σκληρού δίσκου. Το τυπικό μέγεθος ενός τομέα είναι 512 bytes και συνήθως υπάρχουν 63 τομείς σε κάθε μονοπάτι. Ο αριθμός των κεφαλώ και κυλίδρων διαφέρει αρκετά από δίσκο σε δίσκο. Έτσι μπορείτε να υπολογίσετε τον αριθμό των bytes που χωράνε να αποθηκευθούν στο δίσκο σας υπολογίζοντας την τιμή:

(κύλινδροι) × (κεφαλές) × (63 τομείς/μονοπάτι) × (512 bytes/τομέα)

Για παράδειγμα, στον 1.6 GigWestern Digital AC31600 EIDE σκληρό δίσκο μου, αυτές οι τιμές είναι:

(3148 cyl) × (16 heads) × (63 sectors/track) × (512 bytes/sect)

που μας δίνει 1.624.670.208 bytes, ή περίπου 1.6 Gig.

Μπορείτε να βρείτε την φυσική γεωμετρία του δίσκου σας (τον αριθμό των κυλίνδρων, των κεφαλών και το πλήθος των τομέων ανά μονοπάτι) χρησιμοποιώντας το πρόγραμμα ATAID ή άλλα προγράμματα που είναι διαθέσιμα μέσω δικτύου. Προσοχή όμως. Αν έχετε ενεργοποιήσει την πρόσβαση με LBA στο BIOS σας (βλ. Τμήμα 7.3), δεν μπορείτε να χρησιμοποιήσετε οποιοδήποτε πρόγραμμα για να διαβάσετε την φυσική γεωμετρία του δίσκου. Αυτό συμβαίνει γιατί πολλά προγράμματα (π.χ. το MSD.EXE ή το fdisk του FreeBSD) δεν διαβάζουν την φυσική γεωμετρία του δίσκου, αλλά την μεταφρασμένη γεωμετρία (εικονικούς αριθμούς που προκύπτουν από την χρήση LBA πρόσβασης). Δείτε παρακάτω τι σημαίνει αυτό.

Κάτι άλλο που είναι χρήησιμο γι αυτούς τους όρους. Με μια τριάδα αριθμών--ένα αριθμό κυλίνδρου, ένα αριθμό κεφαλής κι ένα αριθμό τομέα μέσα στο μονοπάτι--μπορείτε να αναφερθείτε στην φυσική θέση ενός συγκεκριμένου τομέα του δίσκου σας (ένα μπλοκ δεδομένων, μεγέθους 512 bytes). Οι κύλινδροι και οι κεφαλές έχουν αριθμούς από 0 και πάνω, ενώ οι τομείς από 1 και πάνω.

Για αυτούς που ενδιαφέρονται για περισσότερες τεχνικές λεπτομέρειες, πληροφορίες για την γεωμετρία των δίσκων, τους τομείς εκκίνησης (boot sectors), τα BIOS, κλπ. μπορούν να βρεθούν σε πολλά μέρη στο διαδίκτυο. Ψάξτε στο Lycos, στο Yahoo, κλπ. για boot sector ή για master boot record. Ανάμεσα στις χρήσιμες πληροφορίες θα βρείτε και την σειρά κειμένων How It Works του Hale Landis. Δείτε το τμήμα Τμήμα 6 για περισσότερες λεπτομέρειες κι αναφορές σε πηγές.

Ok, αρκετά με την ορολογία. Υποτίθεται μιλάμε για την διαδικασίας εκκίνησης.

7.2 Η διαδικασία Εκκίνησης

Στον πρώτο τομέα του δίσκου (Κυλ. 0, Κεφαλή 0, Τομέας 1) υπάρχει ο Κύριος Τομέας Εκκίνησης (Master Boot Record ή MBR). Περιέχει ένα χάρτη του δίσκου. Ορίζει μέχρι 4 κατατμήσεις (partitions), κάθε μια από τις οποίες είναι ένα συνεχές κομμάτι του δίσκου. Το FreeBSD ονομάζει τις κατατμήσεις slices για να αποφύγει την σύγχυση με τα δικά του partitions, αλλά δεν θα το κάνουμε αυτό εδώ. Κάθε κατάτμηση μπορεί να περιέχει το δικό της, ξεχωριστό λειτουργικό σύστημα.

Κάθε εγγραφή κατάτμησης στο MBR έχει ένα Partition ID, ένα αρχικό κύλινδρο και ένα τελικό κύλινδρο/κεφαλή/τομέα. Το Partition ID ορίζει τι τύπου είναι η κατάτμηση (τι λειτουργικό σύστημα περιέχει) και η αρχή/τέλος ορίζουν που βρίσκεται. Ο Πίνακας 1 δείχνει κάποιους από τους πιο κοινούς τύπους κατάτμησης.

Πίνακας 1. Τύποι κατατμήσεων

Τύπος (στο δεκαεξαδικό) Περιγραφή
01 Κύρια κατάτμηση DOS12 (12-bit FAT)
04 Κύρια κατάτμηση DOS16 (16-bit FAT)
05 Εκτεταμένη κατάτμηση DOS
06 Κύρια κατάτμηση DOS μεγάλυ μεγέθους (> 32MB)
0A OS/2®
83 Linux (EXT2FS)
A5 FreeBSD, NetBSD, 386BSD (UFS)

Σημειώστε πως δεν είναι δυνατή η εκκίνηση από οποιοδήποτε τύπο κατάτμησης (π.χ. από εκτεταμένες κατατμήσεις DOS). Από κάποιους τύπους γίνεται, από άλλους όχι. Αυτό που κάνει δυνατή την εκκίνηση από μια κατάτμηση είναι οι ρυθμίσεις του Τομέα Εκκίνησης Κατάτμησης που βρίσκεται στην αρχή κάθε κατάτμησης.

Όταν ρυθμίσετε τον boot manager της προτιμήσεώς σας, αυτός ψάχνει όλες τις εγγραφές κατατμήσεων τον πίνακα MBR όλων των δίσκων σας και σας δίνει τη δυνατότητα να ονομάσετε εγγραφές από τη λίστα. Έτσι, μόλις ξεκινάτε τον υπολογιστή σας, ειδικός κώδικας στο Master Boot Sector του πρώτου δίσκου του συστήματος τρέχει και ξεκινάει τον boot manager. Ο boot manager βρίσκει στον πίνακα MBR την εγγραφή για την κατάτμηση που επιλέξατε, βρίσκει την αρχή και το τέλος της κατάτμησης, φορτώνει στη μνήμη τονν Τομέα Εκκίνησης Κατάτμησης από αυτή την κατάτμηση και περνάει τον έλεγχο σε αυτόν. Ο Τομέας Εκκίνησης της κατάτμησης περιέχει αρκετές πληροφορίες για να ξεκινήσει να φορτώνει το λειτουργικό σύστημα από αυτή την κατάτμηση.

Κάτι που δε το αναφέραμε με πολλές λεπτομέρειες είναι σημαντικό και πρέπει να το ξέρετε. Όλοι οι δίσκοι σας έχουν MBR. Αλλά, ο τομέας MBR που είναι σημαντικός είναι αυτός που είναι στον πρώτο δίσκο του συστήματος που αναγνωρίζεται από το BIOS. Αν έχετε μόνο IDE δίσκους είναι ο πρώτος IDE δίσκος (δηλ. ο κύριος δίσκος του πρώτου ελεγκτή δίσκων). Αντίστοιχα για τα συστήματα που έχουν μόνο SCSI δίσκους. Αν έχετε και IDE και SCSI δίσκους όμως, συνήθως είναι οι IDE δίσκοι που αναγνωρίζονται πρώτα από το BIOS. Τότε ο boot manager πρέπει να τοποθετηθεί στο MBR αυτού του δίσκου, όπως περιγράψαμε πριν.

7.3 Περιορισμοί Εκκίνησης και Προειδοποιήσεις

Και τώρα τα ενδιαφέροντα πράγματα για τα οποία θα πρέπει να προσέχετε.

7.3.1 Το περίφημο όριο του κυλίνδρου 1024 και πως βοηθάει το LBA BIOS

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

Ο τρόπος με τον οποίο το BIOS καλείται να διαβάσει τον σκληρό δίσκο σε αυτό το στάδιο της εκκίνησης (INT 13H, Συνάρτηση 2) δεσμεύει 10 bits για τον αριθμό κυλίνδρου, 8 bits για τον αριθμό κεφαλής και 6 bits για τον αριθμό τομέα. Αυτό περιορίζει κάπως τους χρήστες αυτής της κλήσης (π.χ. τους boot managers που υπάρχουν στο MBR του δίσκου σας, καθώς και τους loaders των λειτουργικών συστημάτων που υπάρχουν στους άλλους τομείς εκκίνησης). Τα όρια που επιβάλλει αυτή η κλήση είναι:

  • μέγιστος αριθμός κυλίνδρων = 1024

  • μέγιστος αριθμός κεφαλώνν = 256 heads

  • μέγιστος αριθμός τομέων/μονοπάτι = 64 (βασικά 63, ο τομέας 0 δεν είναι διαθέσιμος)

Σήμερα οι δίσκοι είναι αρκετά μεγάλοι, και έχουν πάρα πολλούς κυλίνδρους αλλά όχι πάρα πολλές κεφαλές. Έτσι λοιπόν, χωρίς εξαίρεση, οι μεγάλοι σκληροί δίσκοι έχουν περισσότερους από 1024 κυλίνδρους. Αυτό σημαίνει πως το BIOS δεν μπορεί να εκκινήσει τον υπολογιστή σας από οποιοδήποτε σημείο του δίσκου. Ο κώδικας εκκίνησης (ο boot manager και ο OS loader που έχει εγκατασταθεί σε όλες τις κατατμήσεις από τις οποίες θέλουμε να είναι δυνατή η εκκίνηση) πρέπει να είναι κάτω από το όριο του κυλίνδρου 1024. Γενικά, αν ο δίσκος σας είναι ένας τυπικός δίσκος κι έχει 16 κεφαλές, αυτό σημαίνει:

1024 κυλ/δίσκο × 16 κεφαλές/δίσκο × 63 τομείς/(κυλ-κεφαλή) × 512 bytes/τομέα

που είναι περίπου κοντά στο όριο των 528 MB που συχνά θα ακούσετε να αναφέρεται.

Εδώ είναι που η χρήση του BIOS LBA (Logical Block Addressing--Λογική Διευθυνσιοδότηση Μπλοκ) έρχεται να μας βοηθήσει. Η διευθυνσιοδότηση LBA δίνει στον χρήστη των κλήσεων του BIOS API ένα τρόπο να προσπελάσει κυλίνδρους πάνω από τον κύλινδρο 1024 χρησιμοποιώντας τις ίδιες κλήσεις BIOS ορίζοντας διαφορετικά τον κύλινδρο. Ορίζει μια διαφορετική οργάνωση των κυλίνδρων και των κεφαλών, για να δώσει μέσω του BIOS διαφορετική μορφή στο δίσκο, με λιγότερους κυλίνδρους και περισσότερες κεφαλές από ότι πραγματικά έχει. Με λίγα λόγια, εκμεταλλεύεται το γεγονός ότι οι δίσκοι έχουν σχετικά λίγες κεφαλές και πολύ περισσότερους κυλίνδρους αλλάζοντας λίγο την ισορροπία μεταξύ του αριθμού των κυλίνδρων και του αριθμού των κεφαλών, έτσι ώστε και οι δυο αριθμοί να φαίνονται κάτω από τα όρια που αναφέραμε (1024 κύλινδροι, 256 κεφαλές).

Με χρήση BIOS LBA, το όριο μεγέθους του δίσκου δεν είναι πλέον εμπόδιο (τουλάχιστον, όχι μέχρι τα 8 Gigabytes). Αν έχετε LBA BIOS, μπορείτε να βάλετε το FreeBSD ή οποιοδήποτε άλλο λειτουργικό σύστημα οπουδήποτε θέλετε και να μην περιορίζεστε από το όριο του κυλίνδρου 1024.

Για να χρησιμοποιήσω ξανά τον 1.6 Gig Western Digital δίσκο μου σαν παράδειγμα, η φυσική γεωμετρία του είναι:

(3148 κυλ, 16 κεφ, 63 τομείς/μονοπάτι, 512 bytes/τομέα)

Αλλά, η διευθυνσιοδότηση LBA του BIOS τον αλλάζει σε:

(787 κυλ, 64 κεφ, 63 τομείς/μονοπάτι, 512 bytes/τομέα)

δίνοντας πρακτικά το ίδιο μέγεθος δίσκου, αλλά με τους αριθμούς κυλίνδρων και κεφαλών μέσα στα όρια των κλήσεων του BIOS API (Παρεπιπτόντως, έχω στήσει και Linux και FreeBSD σε ένα από τουυς δίσκους μου, πάνω από το όριο του κυλίνδρου 1024. Και τα δυο λειτουργικά συστήματα δουλεύουν μια χαρά, χάρη στην διευθυνσιοδότηση LBA του BIOS).

7.3.2 Boot Managers και Κατανομή Δίσκων

Ένα άλλο σημαντικό σημείο που αξίζει να προσέξετε όταν στήνετε κάποιο boot manager είναι να κρατήσετε αρκετό χώρο για τον boot manager. Είναι καλύτερα να τοο ξέρετε αυτό από την αρχή για να γλιτώσετε από τον κόπο της επανεγκατάστασης ενός η περισσότερων από τα λειτουργικά συστήματά σας.

Αν ακολουθήσατε τις οδηγίες στο Τμήμα 7.2 σχετικά με το MBR (που είναι το MBR), τους Τομείς Εκκίνησης, και την διαδικασία εκκίνησης, μπορεί να αναρωτιέστε ήδη που ακριβώς στον δίσκο σας υπάρχει αυτός ο καλός boot manager. Ε λοιπόν, κάποιοι boot managers είναι αρκετά μικροί ώστε να χωρέσουν μέσα στον Κύριο Τομέα Εκκίνησης (MBR. Κύλινδρος 0, κεφαλή 0, τομέας 1) μαζί με τον πίνακα κατατμήσεων. Κάποιοι άλλοι χρειάζονται περισσότερο χώρο και ουσιαστικά καταλαμβάνουν αρκετούς τομείς μετά τον MBR, μέσα στο μονοπάτι με κύλινδρο 0 και κεφαλή 0, αφού τυπικά αυτός ο χώρος είναι ελεύθερος--τυπικά.

Εδώ είναι κι η παγίδα. Κάποια λειτουργικά συστήματα (ένα από αυτά είναι και το FreeBSD) σας επιτρέπουν να ξεκινήσετε την κατάτμησή τους ακριβώς μετά το MBR στον κύλινδρο 0, κεφαλή 0, και τομέα 2 αν θέλετε. Για παράδειγμα, αν δώσετε το sysinstall πρόγραμμα εγκατάστασης του FreeBSD ένα δίσκο με άδειο χώρο στην αρχή του δίσκου ή ένα τελείως άδειο δίσκο, εκεί θα προσπαθήσει να βάλει την κατάτμηση του FreeBSD (τουλάχιστον αυτό έκανε όταν την πάτησα εγώ). Έτσι, όταν πάτε να στήσετε τον boot manager σας, αν χρειαστεί να πιάσει κάποιους τομείς αμέσως μετά το MBR, θα σβηστεί η αρχή της πρώτης κατάτμησης με δεδομένα. Στην περίπτωση του FreeBSD, αυτό καταστρέφει την περιοχή του disklabel, κάνοντας αδύνατη την εκκίνηση από αυτή την κατάτμηση.

Η εύκολη λύση για να αποφύγετε τέτοια προβλήματα (και να κρατήσετε για τον εαυτό σας την δυνατότητα χρήσης κάποιου διαφορετικού boot manager στο μέλλον) είναι να αφήνετε πάντα ελεύθερο το πρώτο μονοπάτι όταν φτιάχνετε κάποιες κατατμήσεις στο δίσκο σας. Με λίγα λόγια, αφήστε ελεύθερο τον χώρο από τον κύλινδρο 0, κεφαλή 0, τομέα 2 μέχρι και τον κύλινδροnbsp;0, κεφαλή 1, τομέα 1. Βασικά, όταν φτιάχνετε κατατμήσεις στην αρχή του δίσκου με το DOS, το DOS αφήνει αυτό τονν χώρο ελεύθερο (γι αυτό και πολλοί boot manager θεωρούν ότι θα είναι ελεύθερος). Αν φτιάξετε μια μικρή κατάτμηση DOS στην αρχή του δίσκου σας δεν θα συναντήσετε αυτό το πρόβλημα. Προσωπικά μ' αρέσει να δημιουργώ στην αρχή μια μικρή κατάτμηση DOS μεγέθους 1 MB, καθώς έτσι αποφεύγω και τις αλλαγές στα drive letter των κύριων DOS κατατμήσεών μου αργότερα αν αλλάξω τις κατατμήσεις του δίσκου.

Αναφορικά, οι παρακάτω boot managers χρησιμοποιούν το Master Boot Sector αποθηκεύσουν δικό τους κώδικα ή/και δεδομένα:

  • OS-BS 1.35

  • Boot Easy

  • LILO

Αυτοί οι boot managers χρησιμοποιούν και λίγους ακόμα τομείς μετά το Master Boot Sector:

  • OS-BS 2.0 Beta 8 (sectors 2-5)

  • OS/2's boot manager

7.3.3 Τι γίνεται αν ο υπολογιστής σας δεν ξεκινάει;

Κάποια στιγμή, καθώς στήνετε διάφορους boot managers, μπορεί να αφήσετε το MBR σε τέτοια κατάσταση που να μην είναι δυνατόν να ξεκινήσετε τον υπολογιστή σας. Αυτό είναι απίθανο, αλλά μπορεί να γίνει καθώς αλλάζετε κατατμήσεις μετά από την εγκατάσταση ενός boot manager.

Αν έχετε κάποια bootable DOS κατάτμηση στον δίσκο σας, μπορείτε να ξεκινήσετε με μια δισκέττα εκκίνησης DOS και να τρέξετε:

A:\> FDISK /MBR

για να επαναφέρετε τον αρχικό, απλό κώδικα εκκίνησης του DOS στο σύστημά σας. Μπορείτε τότε να ξεκινήσετε με το DOS (και μόνο με το DOS) από το σκληρό σας δίσκο. Εναλλακτικά, μπορείτε να ξανατρέξετε το πρόγραμμα εγκατάστασης του boot manager σας από μια δισκέττα εκκίνησης.

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.