Next Previous Contents

11. Το όριο του Linux ΙDE των 8 GiB

O Linux IDE οδηγός παίρνει τη γεωμετρία και χωρητικότητα του δίσκου (και άλλα πολλά) χρησιμοποιώντας την κλήση ATA IDENTIFY. Μέχρι πρόσφατα, ο οδηγός δε θα πίστευε την επιστρεφόμενη τιμή της lba χωρητικότητας (lba_capacity), αν ήταν πάνω από 10% από την υπολογιζόμενη με C*H*S. Παρόλα αυτά, οι κατασκευαστές, σε μεγάλους IDE δίσκους (με περισσότερους από 16514064 τομείς) επιστρέφουν τα C=16383, H=16, S=63, για ένα σύνολο 16514064 τομέων (7.8 GB), ανεξαρτήτως του πραγματικού τους μεγέθους, αλλά δίνουν την πραγματική χωρητικότητα ως lba.

Οι πρόσφατοι πυρήνες (2.0.34, 2.1.90) το ξέρουν αυτό και το διορθώνουν. Αν έχετε παλαιότερο πυρήνα και δε θέλετε να αναβαθμιστείτε, και ο πυρήνας βλέπει μόνο 8 GiB σε έναν πολύ μεγαλύτερο δίσκο, δοκιμάστε να αλλάξετε τη ρουτίνα lba_capacity_is_ok στο /usr/src/linux/drivers/block/ide.c σε κάτι σαν

static int lba_capacity_is_ok (struct hd_driveid *id) {
        id->cyls = id->lba_capacity / (id->heads * id->sectors);
        return 1;
}
Για μια πιο προσεκτική διόρθωση δείτε το 2.1.90.

11.1 BIOS επιπλοκές

Όπως μόλις ανέφερα, οι μεγάλοι δίσκοι επιστρέφουν C=16383, H=16, S=63 ανεξάρτητα από το πραγματικό τους μέγεθος, ενώ το πραγματικό μέγεθος επιστρέφεται ως LBAcapacity. Μερικά BIOS δεν το αναγνωρίζουν αυτό και μεταφράζουν το 16383/16/63 σε κάτι με λιγότερους κυλίνδρους και περισσότερες κεφαλές, π.χ. 1024/255/63 ή 1027/255/63. Έτσι, ο πυρήνας δε μπορεί να αναγνωρίσει τη γεωμετρία 16383/16/63, αλλά και τις μπερδεμένες εκδόσεις της του BIOS. Από τον πυρήνα 2.2.2 όλα αυτά διορθώθηκαν (χρησιμοποιώντας τα Η και S του BIOS και υπολογίζοντας το C = χωρητικότητα/(H*S)). Συνήθως το πρόβλημα λύνεται με το να ρυθμιστεί ο δίσκος ως Normal στο BIOS (ή ακόμη καλύτερο ως None, χωρίς να αναφερθεί καθόλου στο BIOS). Αν αυτό δεν είναι δυνατό επειδή πρέπει να εκκινήσετε από αυτόν ή χρησιμοποιείτε DOS/Windows και η αναβάθμιση σε 2.2.2 ή μεγαλύτερη έκδοση δε γίνεται, χρησιμοποιήστε παραμέτρους εκκίνησης στον πυρήνα.

Εάν το BIOS αναφέρει 16320/16/63, τότε αυτό γίνεται συνή8ως για να έχουμε 1024/255/63 μετά τη μετάφραση.

Υπάρχει ένα ακόμα πρόβλημα. Αν ο δίσκος είχε χωριστεί σε κατατμήσεις πριν την μετάφραση, τότε ο πυρήνας μπορεί κατά την εκκίνηση να δει τη γεωμετρία που χρησιμοποιείται στον πίνακα κατατμήσεων και να αναφέρει hda: [PTBL] [1027/255/63]. Αυτό είναι κακό καθότι ο δίσκος είναι τώρα μόνο 8.4GB. Αυτό διορθώθηκε στον 2.3.21. Ξανά, παράμετροι εκκίνησης στον πυρήνα θα βοηθήσουν.

11.2 Βραχυκυκλωτήρες για επιλογή αριθμού κεφαλών

Πολλοί δίσκοι έχουν βραχυκυκλωτήρες (jumpers) που επιτρέπουν να επιλέξετε μεταξύ γεωμετρία 15 ή 16 κεφαλών. Οι συνήθεις ρυθμίσεις θα σας δώσουν 16 κεφαλές. Μερικές φορές και οι δυο γεωμετρίες δίνουν τον ίδιο αριθμό τομέων, μερικές φορές με 15 κεφαλές δίνονται λιγότεροι τομείς. Υπάρχει ένας καλός λόγος για αυτή την επιλογή: ο Petri Kaukasoina γράφει: `Ένας 10.1 Gig IBM Deskstar 16 GP (IBM-DTTA-351010) ήταν ρυθμισμένος για 16 κεφαλές αλλά στο παλιό PC (με AMI BIOS) δεν εκκινούσε και έπρεπε να το ρυθμίσω σε 15 κεφαλές. Το hdparm -i λέει ότι RawCHS=16383/15/63 και LBAsects=19807200. Χρησιμοποιώ 20960/15/63 για να έχω τη μέγιστη χωρητικότητα.' Η γεωμετρία 16383/15/63 δεν αναγνωρίζεται από τον πυρήνα, οπότε χρειάζονται παράμετροι εκκίνησης. Για τις ρυθμίσεις δείτε http://www.storage.ibm.com/techsup/hddtech/hddtech.htm.

11.3 Βραχυκυκλωτήρες που μειώνουν τη συνολική χωρητικότητα

Πολλοί δίσκοι έχουν βραχυκυκλωτήρες που κάνουν τον δίσκο να φαίνεται μικρότερος. Αρκετά ανόητο, και μάλλον κανένας χρήστης του Linux δε θα θέλει να το χρησιμοποιήσει, αλλά μερικά BIOS κολλάνε με μεγάλους δίσκους. Η συνήθης λύση είναι να κρατήσετε τον δίσκο έξω από το BIOS. Αλλά αυτό γίνεται μόνο αν δεν είναι ο δίσκος εκκίνησης.

Το πρώτο σοβαρό όριο ήταν των 4096 κυλίνδρων (δηλαδή, 16 κεφαλές και 63τομείς/ίχνος, 2.11GB). Για παράδειγμα, ένας Fujitsu MPB3032ATU 3.24 GB δίσκος έχει γεωμετρία 6704/15/63, αλλά μπορεί να εμφανιστεί ως 4092/16/63, και μετά αναφέρει LBA χωρητικότητα 4124736 τομείς, ώστε το λειτουργικό σύστημα να μπορεί να μαντέψει ότι στην πραγματικότητα είναι μεγαλύτερος. Σε αυτή την περίπτωση (με ένα BIOS που κολλάει όταν δει πόσο μεγάλος είναι ο δίσκος στην πραγματικότητα ώστε να χρειάζεται ο περιορισμός) χρειάζονται παράμετροι εκκίνησης για να πείτε στο Linux το μέγεθος του δίσκου.

Οι περισσότεροι δίσκοι μπορούν να εμφανιστούν ως δίσκοι 2GB και μετά να αναφέρουν την κομμένη γεωμετρία ως 4092/16/63 ή 4096/16/63, αλλά ακόμα αναφέρουν την πλήρη LBA χωρητικότητα. Τέτοιοι δίσκοι δουλεύουν σωστά και αναφέρουν την πλήρη χωρητικότητα στο Linux, άσχετα με τις θέσεις των βραχυκυκλωτήρων.

Ένα πιο πρόσφατο όριο είναι το όριο των 33.8 GB. Πυρήνες παλαιότεροι από τον 2.3.21 χρειάζονται patch για να μπορέσουν να χρησιμοποιήσουν μεγαλύτερους IDE δίσκους από 33.8GB. Μερικοί μεγαλύτεροι δίσκοι μπορούν να ρυθμιστούν με βραχυκυκλωτήρες ώστε να εμφανίζονται ως 33.8 GB. Για παράδειγμα, ο IBM Deskstar 37.5 GB (DPTA-353750) μπορεί να ρυθμιστεί ώστε να εμφανίζεται ως 33.8 GB, και μετά αναφέρει γεωμετρία 16383/16/63 όπως όλοι οι μεγάλοι δίσκοι, αλλά LBA χωρητικότητα 66055248 (αντίστοιχα με 65531/16/63 ή 4111/255/63)). Αυτοί, όταν ρυθμιστούν ως 33.8GB, χρειάζονται παραμέτρους για πλήρη χωρητικότητα στο Linux. Δείτε το the BIOS 33.8 GB limit.


Next Previous Contents