יום שבת, 31 במאי 2008

איך בודקים אם מותקן EFI


האקינטוש מגיע בשני תצורות של התקנה: אחד עם אמולציית EFI (הידוע בשם PC_EFI) והשני ללא EFI,

EFI זה ממשק של חברת אינטל ראשי תיבות של "Extensible Firmware Interface", זה ממשק שמסתיר את החומרה מהתוכנה, כך שלא משנה איזה רכיב חומרה מערכת ההפעלה צריכה, היא לא צריכה להכיר את הפרמטרים שלו, אלה פונה אל ממשק ה EFI והוא מספק לה את הנתונים.

EFI מספק למערכת ההפעלה שירותים שעד היום רק ה BIOS סיפק כגון (IO,IRQ,קצבי עבודה על לוח האם, גישה לזיכרון, שעון המכונה וכולי) מנגנון זה תואם להגדרות של אינטל ומשתתף בתהליך אתחול החומרה והטענת הדרייברים קראו אודות EFI יותר כאן ו כאן.

מקינטוש אמיתי מתקין קבצים התומכים במערכת ה EFI בספריה:
/System/Library/CoreServices/boot.efi

ועותק נוסף בספריה:

/usr/standalone/i386/boot.efi

להאקינטוש שלכם לא יהיו הקבצים האלה, לעתים השני ימצא אך לא יהיה בשימוש, מאחר ואין לנו במחשבי הפיסי חומרה שתומכת בממשק זה, מחשבי פיסי עדיין רצים על ממשק ישן של ביוס (למעט מספר מועט של שרתים).
ישנו מעקף, פריצה אשר נכתבה ע"י בחור בשם Netkas והרעיון של פריצה זו היא לחקות את התנהגות ה EFI ע"י טבלה בזיכרון, פריצה זו נקראת PC_EFI_PATCH,

הפריצה מחזיקה טבלה בזכרון של רכיבי חומרה וכאשר מערכת ההפעלה (הליבה שלה) פונה אל מערכת ה EFI ומבקשת לקרוא או לכתוב נתונים אז הפריצה (PC_EFI) מאפשרת לה, וכך הליבה הטבעית חושבת שהיא מותקנת על מק אמיתי, מה שמאפשר לנו כמשתמשים להנות מהתנהגות והתקנת רכיבים טבעיים של אפל כולל עדכונים אוטומטיים.

יש שלושה דרכים לבדוק האם מותקן לכם פריצת EFI:

1. אם במהלך ההתקנה בשלב התקנת ה "Darwin Boot" בחרתם להתקין PC_EFI אז יש לכם PC_EFI מותקן, בגרסאות חדשות של התקנה כל שצריך הוא לסמן התקנת ליבה טבעית (Vanilla Kernel) וזה יתקין אוטומטית את מערכת ה EFI הנחוצה, ולכן אם התקנתם ליבה טבעית אזיש לכם EFI.
מסך ההתקנה של PC_EFI נראה כך:





2. עוד בדיקה (שאם אין לכם EFI מותקן עלולה להרוס את המערכת, אז זה רק אם אתם יודעים שביצעתם עדכון) היא לבצע עדכון מתפריט התפוח ולבחור באופציה: "Software Update", אם העדכון עובר בהצלחה אז יש לכם EFI, למרות שאמרו לי שיש גם גרסאות פרוצות שיודעות לעדכן.

3. והשיטה האחרונה והכי בטוחה היא להקליד את הפקודה הבאה בטרמינל:
sudo ioreg -l -w0 -p IODeviceTree | grep efi

ולוודא שאתם מקבלים שורה הדומה לשורה הבאה:
+-o efi <class IOService, !registered, !matched, active, busy 0, retain 7>
| | "name" = <"efi">

דרך אגב אם אין לכם PC_EFI מותקן אז אתם יכולים להתקין אותו, פשוט עקבו אחר הצעדים בפוסט הזה.

תהנו.

אין תגובות: