Πέμπτη, Αυγούστου 02, 2007

EFI vs BIOS

Στις κλασικές διαμάχες Windows vs Linux vs MacOSX vs CP/M vs τετράδιο και στυλό, ένα σημείο το οποίο συχνά δεν ασχολείται κανένας είναι το θέμα BIOS vs EFI.

[ ακολουθεί συνοπτική παρουσίαση με αρκετά -υποθέτω- λάθη, παρακαλώ διορθώστε ]

Το EFI αποτελεί τον αντικαταστάτη του BIOS, και σαν ιδέα ξεκίνησε από τα εργαστήρια της Intel στα τέλη του '90, όπου βαρέθηκαν τους περιορισμούς που τους έθετε το BIOS. Ως παράδειγμα περιορισμών το Wikipedia αναφέρει "16-bit processor mode, 1 MB addressable space, PC AT hardware dependencies". Το ζουμί είναι ότι το BIOS ως τεχνολογία είναι ότι πιο αρχαίο υπάρχει στο κάθε PC - βασίζεται στις ίδιες αρχές που βασιζόνταν και πριν 20 περίπου χρόνια, όταν πρωτοεμφανίστηκε. Κάνει ωραία αντίθεση με την καινούρια κάρτα γραφικών που αλλάζει κάθε 4-6 μήνες :)

Η Intel εκείνη την περίοδο ήταν στην φάση σχεδιασμού της σειράς Itanium, των server CPUs, και το BIOS έθετε πολλά τεχνολογικά όρια στην εξέλιξή τους. Κατά το σωτήριο έτος 2000 έσκασαν μύτη τα specifications του EFI, ενώ αυτή την στιγμή την εξέλιξή του έχει αναλάβει το UEFI forum (για αυτό και πλέον ονομάζεται UEFI).

Αποφεύγω τις τεχνικές λεπτομέρειες και specifications του EFI - ας τα πει κάποιος που ξέρει δυο πράγματα παραπάνω, εγώ θα τα κάνω χάλια - αλλά μερικά πράγματα είναι πολύ εντυπωσιακά και πραγματικά αξίζουν να αναφερθούν.

Το σημαντικό είναι ότι τώρα το EFI μπορεί να "φιλοξενήσει" drivers συσκευών. Παράδειγμα:

Έστω Intel motherboard με EFI, onboard LAN+audio. Αντί να κάθεται να γράψει η Intel για το LAN adapter έναν driver για Windows, έναν για Linux, έναν για MacOSX, έναν για CP/M, έναν για Solaris, έναν για τετράδιο+στυλό, μπορεί να γράψει έναν μόνο driver για EFI. O driver φορτώνεται στο EFI και το οποίο, κατά το boot, θα κάνει initialize την κάρτα δικτύου ΠΡΙΝ φορτώσει το OS. Το λειτουργικό σύστημα ΔΕΝ θα χρειάζεται driver για την κάρτα δικτύου, αρκεί να υποστηρίζει EFI. Τα ίδια ισχύουν και για την κάρτα ήχου. Καλό;

Τι κερδίζεις έτσι;
  • Ταχύτητα - το EFI κάνει πολύ πιο γρήγορα αρχικοποίηση της συσκευής από το OS.
  • Modularity - ένας driver για όλα τα OSes που υποστηρίζουν EFI.
  • Αλλάζεις OS ή κάνεις format; Δεν χρειάζεται να ψάξεις για driver, είναι ήδη εκεί.

Τι άλλο προσφέρει το EFI;
  • Δικό του boot manager, δεν χρειάζεται να παιδεύεσαι με LILO, GRUB κλπ.
  • Extensions. Μπορούν να γραφτούν μικρές EFI-specific εφαρμογές οι οποίες θα τρέχουν χωρίς να φορτώσεις ολόκληρο λειτουργικό σύστημα. Κλασικό παράδειγμα ένας mini browser για να βρεις και να κατεβάσεις drivers πριν το setup του OS ή ένας CD/MP3 player.
  • Expandability. Όταν γεμίσει η μνήμη του EFI, μπορείς να δεσμεύσεις ένα μικρό partition του δίσκου για επέκταση.
  • command shell για την εκτέλεση εργασιών όπως συντήρηση, OS setup, diagnostics κλπ.
Ποια λειτουργικά συστήματα υποστηρίζουν EFI;

Πρώτο-πρώτο το Linux. Υπήρχε περίπτωση να μην το υποστηρίζει το OS που τρέχει ακόμα και σε καρφίτσα; Επίσης MacOSX, HP-UX και κάποια BSD. Από Windows, μόνο εκδόσεις σχεδιασμένες για Intel Itanium (2000-2003 Server και XP-64bit). Vista γιοκ προς το παρόν, ίσως σε κάποιο service pack.

Που μπορώ να βρώ EFI-motherboard;

Get a mac! Εδώ παίζεται μια παρτίδα ping-pong, καθώς η MS δηλώνει ότι δεν υποστηρίζει EFI γιατί δεν υπάρχουν motherboards και οι κατασκευαστές δηλώνουν ότι δεν φτιάχνουν motherboards γιατί δεν μπορούν να πουλήσουν κάτι που δεν υποστηρίζεται από την MS.

Προσωπικά, τείνω με την άποψη των κατασκευαστών. Ποια εταιρεία θα φτιάξει EFI-motherboard που δεν υποστηρίζεται από τα Windows; Δεν είναι κερδοσκοπικοί οργανισμοί, κοιτάζουν να κατευθυνθούν στα μεγάλα target groups. Υπάρχουν βέβαια μια-δυο εταιρείες που κάτι βγάζουν, αλλά δεν είδα κάποια γνωστή. Έτσι, η αγορά ενός mac παραμένει η πιο ανώδυνη λύση - η Apple χρησιμοποιεί EFI σε όλα τα Intelomac.

Επ! Πως τρέχουν τα Windows σε mac; Αφού δεν υποστηρίζουν EFI!

Απ' ότι φαίνεται, το Boot Camp δεν είναι τίποτα παραπάνω από έναν έξυπνο BIOS emulator :)

Αρνητικά δεν έχει αυτό το πράγμα;

Η γενική εικόνα είναι ότι θα χρησιμοποιηθεί για υλοποίηση DRM restrictions σε επίπεδο firmware, αλλά 1) τον ίδιο λόγο ύπαρξης έχει και το HDMI αλλά όλοι το αγοράζουν και 2) δεν έχω δει ακόμα DRM-protection που έμεινε κλειδωμένο ;) Γενικά, δεν ανησυχώ και πολύ...

Αυτά.

Είμαι σίγουρος ότι έχω κάποια λάθη, αυτά είναι οι εντυπώσεις που έχω μαζέψει από τις τελευταίες μέρες που ψιλοψάχνω το θέμα - οι διορθώσεις δεν είναι απλά ευπρόσδεκτες αλλά αναγκαίες! Ελπίζω πάντως να αποκτήσατε μια ιδέα για το τι είναι το EFI.

EDIT: κάποιος φίλος (γιατί ανώνυμος; δεν τρέχει τίποτα, συζήτηση κάνουμε) μου έστειλε mail και διόρθωσε αρκετά από τα λάθη της ημι-άγνοιάς μου. Ευχαριστώ, ελπίζω να μην σε πειράζει που θα τα κάνω c/p αυτολεξί.


Το EFI 1.0 βγήκε μόνο για κάποιους dedicated servers και υπερυπολογιστές της intel. Ο λόγος είναι ότι ο Itanium για τον οποίο είχε δημιουργηθεί η αρχιτεκτονική firmware καθυστέρησε υπερβολικά να βγει στην παραγωγή -- κυρίως γιατί η AMD νοίκιασε το FAB στο οποίο επρόκειτο να τον κατασκευάσουν.

Στο μεταξύ κάθε κατασκευαστής (AMD, Via, Sis, nVidia για τα nForce 2 ) πήγε και τοποθέτησε δικά του extensions. Προκειμένου να συμφιλιώσουν το χάσμα συμφώνησαν στο UEFI ή EFI 2.0 το οποίο συμφωνεί σε ένα κοινό εξωτερικό interface και στο ότι η κάθε υλοποίηση μπορεί όντως να είναι διαφορετική. Η υλοποίηση EFI 1 πχ είχε ένα γραφικό περιβάλλον παραγωγή της MS. Η της nVidia και sys ήταν βασισμένες σε OSS προϊόντα, της AMD ήταν το MiniNT κ.ο.κ. .

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

Επίσης όταν λέμε οδηγούς αυτό δεν έχει ιδιαίτερη σχέση με αυτό που εννοούμε όταν λέμε οδηγούς ενός ΛΣ. Μιλάμε για προγράμματα που παίρνουν μπλόκ μνήμης από τη συσκευή και τα αντιγράφουν στην κεντρική. Ένας οδηγός ΛΣ κάνει όχι μόνο αυτό αλλά και την μετάφραση και ερμηνεία του περιεχομένου της μνήμης για το τρέχον σύστημα. Αυτό που λύνουν ουσιαστικά δεν είναι σημαντικό γιατί η μνήμη που γράφει η εκάστοτε συσκευή μέσα της είναι έτσι και αλλιώς προσβάσιμη με το λογισμικό που παρέχει ο κατασκευαστή του προγραμματίσιμου ελεγκτή στον οποίο στηρίζεται.

Μια παρενέργεια των οδηγών EFI που δεν αρέσει σε αρκετούς είναι ότι αυτοί οι οδηγοί πρέπει να γραφτούν σε μια γλώσσα script και να διανεμηθούν με αυτή. Σχεδόν open source δλδ. Γίνονται compile κατά την εγκατάσταση για την ακριβή αρχιτεκτονική του συστήματος. Αυτό το 'πρόβλημα' λύνουν οι ATI και nVidia με διαφορετικό τρόπο η καθεμιά, αλλά βέβαια εμπλέκει binary interfaces.

EFI κάθε έκδοσης υποστηρίζουν όλα τα BSD Unix αφού αποτελεί μέρος του πρότυπου SDK. Η Apple χρησιμοποιεί EFI 1.0, ομοίως και η MS για τα Windows 03 αλλά μόνο για IA64 . Τα Windows 5.1 και 6 (XPSP2 και Vista) υποστηρίζουν EFI 1.0 αλλά μόνο για IA64 bit συστήματα. Tα 6.1 (βγαίνουν στο τέλος του χρόνου) προσθέτουν UEFI για x64 bit. Είναι ασαφές αν το OSX 10.5 έχει υποστήριξη για UEFI αν και δεν είναι ιδιαίτερα σημαντικό έτσι και αλλιώς. Θεωρείται έυκολο πάντως αφού έτσι και αλλιώς χρησιμοποιούν σαν βάση το BSD 4.

Το Bootcamp χρησιμοποιεί τον πρότυπο mapper από IA64 σε x64 της Intel. Τον εγκαθιστά σαν οδηγό EFI συγκεκριμένα.

Τέλος για DRM έχε υπόψη το εξής, ποτέ κανένας δεν κατάφερε να προσπεράσει TPM. Το TPM είναι μέρος του οργουελιανού system wide DRM που αρχικά η ms στην υλοποίησή της έλεγε Palladium, και αποτελεί μέρος του UEFI spec. Σημαίνει ότι κάθε δράση (σε επίπεδο function call ούτε καν αρχείου κάπου FS) πρέπει να καλείται με ένα μοναδικό συμμετρικό κλειδί που ξέρει μόνο το υλικό και το οποίο δεν βγαίνει ποτέ από αυτό.

Ένας δίσκος με TPM πχ το bitlocker στα Vista ή κάποιο BSD εργαλείο, χωρίς την μητρική που τον έφτιαξε, είναι 100% μη ανακτήσιμος.

3 σχόλια:

Alex είπε...

Ποιός κρύβεται πίσω απο την ΕΞΑΙΡΕΤΙΚΗ ανάλυση του EFI;
Μάστορα, μας έστειλες για τσαϊ στο βουνό! Μπράβο για την ενημέρωση σου...

Paris Apostolopoulos είπε...

εν αναμονή της 7η Αυγουστου παρατηρώ μια οργανωμένη συσπείρωση στις Apple Bitches!

Fuck yeah!

Ανώνυμος είπε...

Πολύ καλή περιγραφή!
Στο παρακάτω link μπορείτε να δείτε πως συνδιάζοντε όλα τα παραπάνω για να δημιουργήσετε ένα Triple boot μηχάνημα (Mac OS X, Linux 64bit, XP 64bit) σε έναν Mac Pro.
http://forum.onmac.net//showthread.php?t=2705