Σε ένα προηγούμενο post αναλύσαμε πως θα μπορούσαμε να ξεκινήσουμε ένα μηχάνημα που έχει 64bit επεξεργαστή και 64bit EFI με πυρήνα και kernel extensions 64bit. Αρκετοί ήταν αυτοί που παρατήρησαν λοιπόν ότι τα MacBook τους, ή τα MacMini, παρόλο που άλλαζαν τις ρυθμίσεις στο SystemSetup, δε φόρτωσαν ποτέ τον 64μπιτο πυρήνα. Ο λόγος που γίνεται αυτό είναι επειδή :
1) Το chipset της Intel δεν υποστηρίζει 64bit αρα ούτε και ο memory controller, οπότε δεν υπάρχει κανένας λόγος...
2) Δεν υπάρχουν 64bit kernel extensions για τα chip γραφικών GMA 950 και x3100, δηλαδή με απλά λόγια, δεν υπάρχουν 64bit drivers για αυτά τα chip.
Αυτό δεν ισχύει για τα μηχανήματα με το nVidia 9400, το οποίο έχει υποστήριξη 64bit.
Το ερώτημα είναι μπορούμε να κάνουμε boot με 64bit πυρήνα σε τέτοια μηχανήματα ? Η απάντηση είναι ναι, μπορούμε, αλλά θα δούμε δραματική μείωση της απόδοσης του μηχανήματος.
Δείτε παρακάτω, αναλυτικά, και με screenshots, τι θα γίνει αν κάνουμε κάτι τέτοιο σε ένα MacBook με το x3100.
Καταρχήν πρέπει να πούμε οτι το boot.efi έχει μια blacklist των μηχανημάτων που δε πρέπει να φορτώσουν 64bit Kernel και extensions. Το πρώτο πράγμα λοιπόν, είναι να πειράξουμε αυτή τη λίστα. Κατεβάζουμε ένα hex editor, μερικά καλά τέτοια προγράμματα είναι τα 0xED και HexEditor, εμένα προσωπικά με βόλεψε πολύ το 0xED. Βρίσκουμε το boot.efi που βρίσκεται στο "/System/Library/CoreServices/" και το ανοίγουμε με τον hex editor της επιλογής μας. Η διεύθυνση της blacklist για το MacBook είναι η "0x266E0" ενω για το MacMini "0x266D0". Ρυθμίζουμε το write mode σε overwrite.
Έπειτα αλλάζουμε τα bit στην τρίτη τετράδα, απο "00 00 00 00" σε "04 00 00 00" όπως στη παρακάτω εικόνα.
Έπειτα αποθηκεύουμε το αρχείο με ένα άλλο όνομα όπως boot64.efi Δε θα αφήσει όμως να κάνουμε κάτι τέτοιο στο φάκελο CoreServices οπότε πρέπει να το σώσουμε κάπου αλλού, όπως στο Desktop, και το αντιγράφουμε αργότερα στο CoreServices χρησιμοποιώντας το Finder ώστε να μας ζητήσει authentication.
Στη συνέχεια θα πρέπει να φτιάξουμε τα permissions, τα flags, καθώς και να το κάνουμε bootable δίνοντας στο Terminal τις παρακάτω εντολές.
Για να μπούμε στο φάκελο CoreServices δίνουμε:
Στο screenshot για να μη γράφω κάθε φορά sudo έδωσα την πρώτη φορά su και συνδέθηκα ως root. Στην ουσία είναι το ίδιο πράγμα.
Μετά απο αυτό ακολουθούμε τις οδηγίες από το προηγούμενο post, και πιο συγκεκριμένα δίνουμε την εντολή:
1) Έχει φορτώσει 64bit πυρήνα και τα περισσότερα extensions.
2) Οτιδήποτε χρησιμοποιεί quartz extreme πάει πάρα πολύ αργά, αυτό συμβαίνει επειδή δεν υπάρχει hardware acceleration για τα γραφικά, και αν δούμε στα logs θα προσέξουμε ότι προσπάθησε μερικές φορές να φορτώσει το kext του chip γραφικών αλλά δε τα κατάφερε...
Για να επαναφέρουμε το σύστημα στην αρχική του κατάσταση απλά αλλάζουμε το bless, σβήνουμε το boot64.efi και λέμε στο SystemSetup να φορτώσει 32bit kernel & extensions, δίνοντας τις εντολές:
1) Το chipset της Intel δεν υποστηρίζει 64bit αρα ούτε και ο memory controller, οπότε δεν υπάρχει κανένας λόγος...
2) Δεν υπάρχουν 64bit kernel extensions για τα chip γραφικών GMA 950 και x3100, δηλαδή με απλά λόγια, δεν υπάρχουν 64bit drivers για αυτά τα chip.
Αυτό δεν ισχύει για τα μηχανήματα με το nVidia 9400, το οποίο έχει υποστήριξη 64bit.
Το ερώτημα είναι μπορούμε να κάνουμε boot με 64bit πυρήνα σε τέτοια μηχανήματα ? Η απάντηση είναι ναι, μπορούμε, αλλά θα δούμε δραματική μείωση της απόδοσης του μηχανήματος.
Δείτε παρακάτω, αναλυτικά, και με screenshots, τι θα γίνει αν κάνουμε κάτι τέτοιο σε ένα MacBook με το x3100.
Καταρχήν πρέπει να πούμε οτι το boot.efi έχει μια blacklist των μηχανημάτων που δε πρέπει να φορτώσουν 64bit Kernel και extensions. Το πρώτο πράγμα λοιπόν, είναι να πειράξουμε αυτή τη λίστα. Κατεβάζουμε ένα hex editor, μερικά καλά τέτοια προγράμματα είναι τα 0xED και HexEditor, εμένα προσωπικά με βόλεψε πολύ το 0xED. Βρίσκουμε το boot.efi που βρίσκεται στο "/System/Library/CoreServices/" και το ανοίγουμε με τον hex editor της επιλογής μας. Η διεύθυνση της blacklist για το MacBook είναι η "0x266E0" ενω για το MacMini "0x266D0". Ρυθμίζουμε το write mode σε overwrite.
Έπειτα αλλάζουμε τα bit στην τρίτη τετράδα, απο "00 00 00 00" σε "04 00 00 00" όπως στη παρακάτω εικόνα.
Έπειτα αποθηκεύουμε το αρχείο με ένα άλλο όνομα όπως boot64.efi Δε θα αφήσει όμως να κάνουμε κάτι τέτοιο στο φάκελο CoreServices οπότε πρέπει να το σώσουμε κάπου αλλού, όπως στο Desktop, και το αντιγράφουμε αργότερα στο CoreServices χρησιμοποιώντας το Finder ώστε να μας ζητήσει authentication.
Στη συνέχεια θα πρέπει να φτιάξουμε τα permissions, τα flags, καθώς και να το κάνουμε bootable δίνοντας στο Terminal τις παρακάτω εντολές.
Για να μπούμε στο φάκελο CoreServices δίνουμε:
cd /System/Library/CoreServices/Για να ρυθμίσουμε τα permissions δίνουμε:
sudo chown root:wheel boot64.efiΓια να ρυθμίσουμε τα flags δίνουμε:
sudo chflags uchg boot64.efiΚαι τέλος για να το κάνουμε bootable δίνουμε:
sudo bless --folder "/System/Library/CoreServices" --file "/Volumes/BrokenMac/System/Library/CoreServices/boot64.efi"
Στο screenshot για να μη γράφω κάθε φορά sudo έδωσα την πρώτη φορά su και συνδέθηκα ως root. Στην ουσία είναι το ίδιο πράγμα.
Μετά απο αυτό ακολουθούμε τις οδηγίες από το προηγούμενο post, και πιο συγκεκριμένα δίνουμε την εντολή:
sudo systemsetup -setkernelbootarchitecture x86_64Κάνοντας restart θα δούμε ότι το μηχάνημα αργεί πάρα πολύ να κάνει boot. Τέλος όταν θα κάνει boot θα δούμε ότι :
1) Έχει φορτώσει 64bit πυρήνα και τα περισσότερα extensions.
2) Οτιδήποτε χρησιμοποιεί quartz extreme πάει πάρα πολύ αργά, αυτό συμβαίνει επειδή δεν υπάρχει hardware acceleration για τα γραφικά, και αν δούμε στα logs θα προσέξουμε ότι προσπάθησε μερικές φορές να φορτώσει το kext του chip γραφικών αλλά δε τα κατάφερε...
Για να επαναφέρουμε το σύστημα στην αρχική του κατάσταση απλά αλλάζουμε το bless, σβήνουμε το boot64.efi και λέμε στο SystemSetup να φορτώσει 32bit kernel & extensions, δίνοντας τις εντολές:
sudo bless --folder "/System/Library/CoreServices" --file /Volumes/BrokenMac/System/Library/CoreServices/boot.efi
sudo rm /System/Library/CoreServices/boot64.efi
sudo systemsetup -setkernelbootarchitecture i386