FlexNet error (grub-setup:sector already in use) και λύσεις

...το μέρος για να ξεκινήσετε!

Συντονιστής: adem1

Κανόνες Δ. Συζήτησης
Παρακαλώ να επιλέξετε, με προσοχή, την άδεια που θέλετε να έχουν οι οδηγοί που συγγράφετε.
Πληροφορίες για τις άδειες μπορείτε να βρείτε εδώ.
Άμα επιθυμείτε κάποια άλλη άδεια επικοινωνήστε με κάποιο Διαχειριστή είτε Συντονιστή.

Σημαντικό είναι να χρησιμοποιήσετε την υπηρεσία http://imagebin.ubuntu-gr.org για τις εικόνες.

FlexNet error (grub-setup:sector already in use) και λύσεις

Δημοσίευσηαπό fkol k4 » 21 Δεκ 2011, 11:29

Υπάρχει περίπτωση για όσους έχουν ή θέλουν να κάνουν μία εγκατάσταση Dual-boot με Windows και κάποια στιγμή χρειαστεί να επαναφέρουν ή να εγκαταστήσουν από την αρχή τον Grub2, να αντιμετωπίσουν ένα σφάλμα του τύπου /usr/sbin/grub-setup: warn: Sector xx is already in use όπου xx ένας αριθμός (πολλές φορές το 32). Αυτό μπορεί να δημιουργήσει πολλά προβλήματα σχετικά με την εκκίνηση.


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

Ένας σκληρός δίσκος αποτελείται από sectors (τομείς). Κάθε sector (τομέας) σε έναν σύγχρονο σκληρό δίσκο έχει μέγεθος 512 bytes. Ο πρώτος τομέας ονομάζεται sector 0 (μηδέν) και είναι το σημείο όπου βρίσκεται το MBR (Master Boot Record). Το MBR αποτελείται από τα εξής:
- 440 bytes εκκινήσιμου κώδικα (όπως ο Grub ή άλλος bootloader)
- 4 bytes για την ψηφιακή υπογραφή του δίσκου
- 2 bytes με μηδενικό περιεχόμενο
- 64 bytes για τον πίνακα κατατμήσεων
- 2 bytes για την ψηφιακή υπογραφή του MBR

Ο πίνακας κατατμήσεων περιέχει τη λίστα με τις κατατμήσεις, υποδεικνύοντας σε ποιόν τομέα ξεκινούν και σε ποιόν τομέα τελειώνουν.

Θα ήταν λογικό να περιμένουμε πως η πρώτη κατάτμηση του δίσκου ξεκινά στον sector 1 (μετά από αυτόν του MBR δηλαδή), στην πράξη όμως σε πολλούς υπολογιστές τείνει να ξεκινά στον sector 63. Αυτό συμβαίνει γιατί ο κάθε κύλινδρος του δίσκου περιέχει 63 τομείς και το MS-DOS απαιτεί κάθε κατάτμηση να ξεκινά στο όριο ενός κυλίνδρου του δίσκου.
Αυτό σημαίνει πως υπάρχουν 62 ακόμα κενοί τομείς ανάμεσα στο MBR και στην πρώτη κατάτμηση του δίσκου.

Για να διαπιστώσουμε σε ποιο ακριβώς σημείο ξεκινά το δικό μας πρώτο διαμέρισμα, μπορούμε να δώσουμε την εντολή
Κώδικας: Επιλογή όλων
sudo fdisk -lu /dev/sda

Για παράδειγμα, παραθέτω το αποτέλεσμα της εντολής στον δικό μου δίσκο:

Κώδικας: Επιλογή όλων
sudo fdisk -lu /dev/sda
[sudo] password for fkol-k4:

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6cf105d9

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63   209717247   104858592+   7  HPFS/NTFS/exFAT
/dev/sda2       209717248   230688767    10485760    7  HPFS/NTFS/exFAT
/dev/sda3       230688768   859834367   314572800    7  HPFS/NTFS/exFAT
/dev/sda4       859836414  1953523711   546843649    5  Extended
/dev/sda5       859836416   868225023     4194304   82  Linux swap / Solaris
/dev/sda6       868227072   916461567    24117248   83  Linux
/dev/sda7       916463616   964698111    24117248   83  Linux
/dev/sda8       964700160  1012934655    24117248   83  Linux
/dev/sda9      1012936704  1054879743    20971520   83  Linux
/dev/sda10     1054881792  1953523711   449320960   83  Linux

Όπως βλέπετε, το /dev/sda1 (το windows partition) όντως ξεκινά στον τομέα 63, ενώ και κάθε τομέας περιέχει 512 bytes.
Σε κάποιους υπολογιστές αυτό μπορεί να διαφέρει, καθώς διαφέρει και η διάταξη των recovery partitions των προεγκαταστημένων windows ανά κατασκευαστή.

Αυτό που συμβαίνει, είναι ότι κάποιες εφαρμογές εκμεταλλεύονται αυτόν τον κενό χώρο ανάμεσα στο MBR και την πρώτη κατάτμηση.
Ο Grub για παράδειγμα, έχει διαθέσιμα 440 bytes στο MBR για τον εκτελέσιμο κώδικά του, ο χώρος αυτός όμως δεν επαρκεί. Οπότε, χρησιμοποιείται ο κενός χώρος ανάμεσα στο MBR και την πρώτη κατάτμηση.
Ο Grub όμως δεν είναι η μόνη εφαρμογή που χρησιμοποιεί αυτό το κενό, υπάρχει για παράδειγμα μία εφαρμογή των windows που ονομάζεται FlexNet και κάνει ακριβώς το ίδιο. Το FlexNet σύμφωνα με το μήνυμα σφάλματος του Grub, αποθηκεύει δεδομένα στον τομέα 32.

Όταν προσπαθούμε να εγκαταστήσουμε τον Grub πάνω από το FlexNet, ο Grub διαπιστώνει πως ο τομέας 32 δεν είναι κενός αλλά περιέχει δεδομένα από το FlexNet και αρνείται να τα διαγράψει και να γράψει τα δικά του από επάνω. Μία εύκολη λύση θα ήταν να εξαναγκαστεί ο Grub σε αυτή την ενέργεια, αλλά δεν παρέχεται αυτή η λειτουργία.
Αυτό έχει σαν αποτέλεσμα ένα μήνυμα λάθους κατά την εγκατάστασή του σαν το:
Κώδικας: Επιλογή όλων
sudo grub-install --root-directory=/media/sda6 /dev/sda
/usr/sbin/grub-setup: warn: Sector 32 is already in use by FlexNet; avoiding it.  This software may cause boot or other problems in future.  Please ask its authors not to store data in the boot track.
Installation finished. No error reported.

που αναφέρθηκε εδώ.


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

ΣΕ ΑΥΤΟ ΤΟ ΒΗΜΑ ΑΠΑΙΤΕΙΤΑΙ ΕΞΑΙΡΕΤΙΚΑ ΜΕΓΑΛΗ ΠΡΟΣΟΧΗ. Η επεξεργασία του συγκεκριμένου χώρου αποθήκευσης είναι εξαιρετικά επικίνδυνη διεργασία. Οι εφαρμογές που χρησιμοποιούν τον συγκεκριμένο χώρο (όπως το FlexNet) μπορεί να καταστούν πλέον μη λειτουργικές. Εάν προχωρήσετε σε αυτή την ενέργεια, θα πρέπει να αποδεχθείτε την ευθύνη και το ρίσκο που αυτή περιέχει. Ακόμα, αν κάτι πάει στραβά, μπορεί να καταλήξετε με ένα μη εκκινήσιμο σύστημα ή και την κακή λειτουργία κάποιων εφαρμογών των windows που χρησιμοποιούν τον συγκεκριμένο χώρο. Σε κάθε περίπτωση καλό θα ήταν να έχετε εξασφαλίσει την ύπαρξη αντιγράφου ασφαλείας των σημαντικών σας δεδομένων.




Λύση με το Boot-repair

Το boot-repair είναι μία πολύ χρήσιμη εφαρμογή για τέτοιου είδους επεμβάσεις. Ενσωματώνει μεταξύ άλλων και την επιλογή Reset exrta space after MBR (solves the [FlexNet] error), όπως φαίνεται και στην φωτογραφία παρακάτω. Αυτή η λειτουργία κάνει ακριβώς αυτο, σβήνει τον κενό χώρο μετά το MBR και πριν το πρώτο διαμέρισμα.
Εικόνα

Το Boot-repair δεν βρίσκεται στα αποθετήρια του Ubuntu. Θα πρέπει πρώτα να προσθέσουμε το αποθετήριό του και μετά να το εγκαταστήσουμε.
Αυτό μπορούμε μέσω τερματικού να το κάνουμε με τις παρακάτω εντολές;
Κώδικας: Επιλογή όλων
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair

Βέβαια, αν αντιμετωπίζουμε προβλήματα εκκίνησης με το Ubuntu, δεν έχει και πολύ νόημα η εγκατάσταση του Boot-repair. Είναι πολύ πιο βολικό να το έχουμε ως ένα εκκινήσιμο Live CD ή Live USB.
Μπορούμε να κατεβάσουμε από εδώ την .iso εικόνα του για να φτιάξουμε το Live μέσο.
Μπορούμε επίσης να εκκινήσουμε με ένα Live CD ή Live USB του Ubuntu και να εγκαταστήσουμε εκεί το Boot-repair δίνοντας τις τρεις παραπάνω εντολές.

Λύση μέσω τερματικού-γραμμής εντολών

Αυτό προϋποθέτει πως μπορούμε να εκκινήσουμε την εγκατάσταση Ubuntu. Αν κάνουμε αυτή την διαδικασία από περιβάλλον Live CD ή Live USB, θα πρέπει να προσέξουμε πολύ σε ποιο σημείο θα αποθηκεύσουμε το αντίγραφο που περιγράφεται παρακάτω και από πού θα το επανακτήσουμε, καθώς το Live cd δεν είναι μόνιμος αποθηκευτικός χώρος.
Για αρχή, θα πάρουμε ένα αντίγραφο των 63 πρώτων τομέων του δίσκου μας (δηλαδή του MBR και των 62 υπόλοιπων ελευθέρων τομέων μέχρι την πρώτη κατάτμηση):
Αυτό το κάνουμε με την εντολή
Κώδικας: Επιλογή όλων
sudo dd if=/dev/sda of=~/<filename> bs=512 count=63

Όπου <filename> ένα όνομα αρχείου που ορίζουμε εμείς.

Είναι εξαιρετικά σημαντικό να πάρουμε ένα αντίγραφο των 63 πρώτων τομέων του δίσκου μας, καθώς δεν θέλουμε σε καμία περίπτωση να χαθεί το MBR του δίσκου. Υπάρχει ακόμα και το ενδεχόμενο να χρειαστούμε τα δεδομένα των υπολοίπων εφαρμογών σε αυτό το χώρο για οποιονδήποτε λόγο. Είναι καλό να μην παραληφθεί αυτό το βήμα.



Έπειτα, μπορούμε να σβήσουμε τα δεδομένα των τομέων 1 εώς και 62. Αυτό το κάνουμε με την εντολή
Κώδικας: Επιλογή όλων
sudo dd if=/dev/zero of=/dev/sda bs=512 count=62 seek=1

Αυτή η εντολή θα γεμίσει τον συγκεκριμένο χώρο με μηδενικά
Τώρα, μπορούμε να επαναφέρουμε τον Grub με κάποια από τις μεθόδους του forum που βρίσκονται εδώ.
Αν αυτό που θέλουμε είναι να διαγράψουμε μόνο τα δεδομένα του τομέα που παρουσιάζεται το σφάλμα (στην συγκεκριμένη περίπτωση του τομέα 32), η εντολή θα πρέπει να γίνει:
Κώδικας: Επιλογή όλων
sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=32

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

Για να επαναφέρουμε τα δεδομένα των 63 πρώτωv τομέων, η εντολή είναι:
Κώδικας: Επιλογή όλων
sudo dd if=~/<filename> of=/dev/sda bs=512 count=63



Υπάρχουν και άλλες εφαρμογές των Windows που κάνουν εγγραφές στον συγκεκριμένο χώρο, ωστόσο το FlexNet είναι το πιο συνηθισμένο.
Ένα θέμα είναι πως αν αντιμετωπίσετε αυτό το πρόβλημα μία φορά, τότε μάλλον θα το αντιμετωπίσετε ξανά. Ο λόγος είναι πως είναι πιθανό κατά τη διάρκεια κάποιου data recovery ή και ενημερώσεων από τα Windows, η εφαρμογή να ξαναγράψει πάνω στον συγκεκριμένο χώρο, έτσι να υπάρξει ξανά πρόβλημα με τον Grub.
Κάποιες πληροφορίες για το θέμα βρίσκονται και εδώ από τον Colin Watson του Grub2 team.

Μία μόνιμη λύση θα ήταν η διαγραφή της εφαρμογής που δημιουργεί πρόβλημα. Πολλές φορές όμως αυτό δεν είναι δυνατό καθώς οι εφαρμογές αυτες χρησιμοποιούνται από άλλες πολύ σημαντικές (και ακριβές) εφαρμογές των Windows.
Μερικές από αυτές είναι οι Adobe Photoshop, CAD/CAM, Rosetta Stone, Matlab και άλλες.

Πηγές που χρησιμοποιήθηκαν:
1) http://ubuntuforums.org/showthread.php?t=1661254
2) http://en.wikipedia.org/wiki/Disk_sector
3) https://help.ubuntu.com/community/Boot-Repair
4) http://www.chiark.greenend.org.uk/ucgi/ ... table.html
Creative Commons License
Η εργασία υπάγεται στην άδεια Creative Commons Αναφορά-Μη εμπορική χρήση-Παρόμοια διανομή 3.0 Ελλάδα
Γνώσεις: Linux: ★★★☆☆ Προγραμματισμός: ★☆☆☆☆ Αγγλικά: ★★★★★
Η υπογραφή μου
Οδηγίες για αρχάριους στο Ubuntu (12.04 LTS)Οδηγοί του forum
Άβαταρ μέλους
fkol k4
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4829
Εγγραφή: 28 Φεβ 2011, 22:56
Τοποθεσία: Αθήνα
Launchpad: fkol-k4
IRC: fkol_k4
Εκτύπωση

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Οδηγοί - How to - Tutorials