יום חמישי, 26 ביוני 2008

האקינטוש נתקע - מה לעשות?

הפוסט הזה הוא איתור וטיפול בבעיות (FAQ), וזאת עקב כל התגובות שקיבלתי ממשתמשים שמתמודדים עם הבעיה הזו ולא יודעים מה לעשות.

מצב: התקנתם לאחרונה Kext או עדכון למערכת OSX, אחרי אתחול המערכת לא נטענת
וה-"Gray Apple screen" נשאר הרבה זמן ("system Hangs at boot").
מצב נוסף הוא שקיבלתם הודעת Kernel Panic הידועה בכינוי SOD.

פתרון: הפתרון הוא קודם למצוא מה מונע מהמערכת לעלות ולתקן את זה, או לנטרל את זה באתחול. גישה אחרת היא להפוך (לשחזר אחורה) את ההתקנה שגרמה לבעיה (ה-Kext או חבילת העדכון).
גלו מה הבעיה (קבלת גישה למערכת שלכם בכדי שתוכלו לתקן אותה):
1. אתחלו את המחשב, לחצו F8 בלי הפסקה עד שתראו את שורת הפקודה של דארווין



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

3. בשלב הבא רישמו את הפקודה "v-" (ללא גרשיים), וזה יאתחל את המערכת ללא הצגת "Gray Apple Screen", ויציג הרבה שורות פקודה במקום (ידוע בשם "מצב verbose").

4. במצב הזה תוכלו לראות את כל הצעדים שהמערכת עושה כדי להטען. אתם תראו טעינה של Kext, טעינת של חבילות, שגיאות ואזהרות שיופיעו.
5. תצטרכו לחפש שורות שנראות כמו שגיאות, בדר"כ הן כוללות את המילים "error" או
"exception" בתוכן. בנוסף חפשו את המילה "Panic". זה אומר שהמערכת לא יכולה להטען יותר מנקודה זו. אם מצאתם שורה כזו, קיראו כמה שורות לפני וכמה שורות אחרי (אם ישנן כאלו), והן יתנו לנו יותר מידע על מה שקרה או מה חסר, או מה נכשל. ראו דוגמא לשגיאת Panic שתקבלו מושג.

6. רישמו את השורות שאתם חושדים בהן וחפשו אותן בגוגל, אלא אם אתם כבר יודעים שזה קשור לחבילת עדכון או ה-Kext שהתקנתם.

7. בשלב הבא אתחלו את המחשב אבל הפעם בשורת הפקודה רישמו "s -f -x -v-" (ללא גרשיים), זה ינסה לאתחל את המערכת לתוך "מצב בטוח" ול-single user. כדי לקבל יותר פרטים על התהליך ראו את הפוסט הזה.

8. אם הגעתם לשלב זה אז המערכת שלכם יכולה לעלות אבל בזמן עליית GUI (או טעינת Kext) היא נכשלת (לכו לשלב הבא). אם לא אז לכו לפוסט -"Access OS X files externally" ושחזרו את קבצי הגיבוי שלפני ההתקנה האחרונה. אם לא גיביתם את הקבצים, אז נסו לשנות את שמות הקבצים המותקנים (שכנראה גרמו ל-Panic) וזאת כדי שהמערכת לא תוכל לטעון אותם, ואז אתחלו (בכמה מקרים זה יעבוד).

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

תיקון מס' 1:
פתרון ראשון זה מנסה לתקן הרשאות unix לכל הקבצים שבדיסק.
בשורת הפקודה הקלידו:
diskutil repairPermissions diskXsY
(כאשר X זה המספר של הכונן של לאופרד מתחיל ב-0, ו-Y זה המספר של המחיצה של לאופרד מתחיל מ-1 , למשל RD=DISK0S1)
זה אמור לקחת קצת זמן. בהתחלה כדי שתהיה לכם אינדיקציה שהבדיקה מתחילה אתם תראו:
Started verify/repair permissions on disk disk0s2 Leopard
בשלב הבא תיראו טקסט בתהליך , שנראה כך:
[ 0%..10%..20%......................................... ]
אם יש תיקון הרשאות אתם תיראו זאת כך:
Group differs on "Applications/.DS_Store", should be 80, group is 501
User differs on "Library/Internet Plug-Ins/flashplayer.xpt", should be 0, user is 501
בסיום התהליך אתם תראו 100% , ותהיה אינדקציה לכך שנראית כך:
[ + 0%..10%..20%..30%..40%..50%..60%..70%..80%..90%..100% ]
Finished verify/repair permissions on disk disk0s2 Leopard

תיקון מס' 2:
תיקון זה מציע פשוט לשחזר את המערכת עם קבצי הגיבוי (אתם תמיד אמורים לשמור Kext שאתם אמורים להתקין. אני בדר"כ משנה את השם ל-kextName.old ובצורה כזו אני תמיד יכול לחזור אליו, אפילו אם עבר שבוע מאז התקנת ה-Kext החדש). בכדי לשחזר מתוך מצב single user, עבדו כך (החליפו ב-KextName t את שם ה-Kext שאתם עומדים לשחזר):
cd /System/Library/Extensions
mv KextName.kext KextName.bad
(זה ישנה את שם ה-Kext הפגום)
mv KextName.old KextName.kext
(זה ישנה את שם ה-Kext המגובה ויגדיר אותו כנוכחי)
chmod -R 755 KextName.kext
(זה יגדיר את ההרשאות הנכונות)
chown -R 0:0 KextName.kext
(זה יגדיר את הבעלים של הקבצים למשתמש מערכת (root))
rm /System/Library/Extensions.mkext
(זה יאפס את כל ה-kext caching שנעשו ע"י OSX)

תיקון מס' 3:
אם אין לכן גיבוי או שהשחזור לא עזר, אז התיקון הבא מציע להסיר את ה-kext/bundle/demon/application כדי שלא יעלה בכלל. שימו לב שזה יעבוד רק קבצים לא הכרחיים, למשל אם תסירו את GeForce.kext או ATIx1000.kext זה בסדר. אם יש לכם יותר קבצי kext (כמו ברירת מחדל דרייבר VESA) שדואגים להעלות דרייברים כלליים, או אם תסירו PS2 או בלוטות, זה בסדר מאחר שמקסימום הנזק שיגרם זה שלא יהיה לכם עכבר/מקלדת או שלא יהיה בלוטות, אבל המערכת עדיין תטען. אבל אם תנסו להסיר AppleSMBIOS.kext או AppleACPIPlatform.kext, אז המערכת כנראה אפילו לא תאותחל שוב למצב single user.
אז כדי לשנות את שם ה-kext, תפעלו כך:
cd /System/Library/Extensions
mv KextName.kext KextName.bad
rm /System/Library/Extensions.mkext
אתחלו.

תיקון מס' 4:
אם אין לכם גיבוי, תוכלו להוריד את קובץ ה-kext מהאינטרנט, או לחלץ אותו מתוך הקובץ תמונה (ISO) או DVD של ההתקנה תוך שימוש בתוכנת pacifist, או שתוכלו להתקין עותק נקי על כונן/מחיצה/מחשב אחר ולחלץ משם את ה-pacifist הנחוץ או אפילו את כל תיקיית ה-extensions.
תיקון מס' 5:
לפעמים המחשב נתקע כתוצאה מתוכנית או מתצורה שהתקנתם שמשנה את הברירות מחדל של המערכת. הדרך לאפס היא להסיר קבצי ההעדפות שהתוכנית התקינה, והמערכת תקרא את הערכים מתוך ברירת המחדל שלה.
כדי לעשות את זה, שנו את שמות הקבצים החשודים (תוך שימוש בפקודות mv כמו מקודם). הם יכולים להמצא בתיקיה הבאה:
/Library/Preferences/SystemConfiguration
(פתיחת קבצי תצורה)
/Library/Services
(שירותים שהותקנו)
/Library/StartupItems
(פריטים שנטענים עם המערכת)
/System/Library/LaunchDaemons
(תיקייה זו מכילה את כל ה-demons שנטענים בזמן האתחול)
/System/Library/LaunchAgents
(תיקייה זו מכילה את כל ה-agents שנטענים בזמן האתחול)
/Library/LaunchDaemons
(תיקייה זו מכילה את כל ה-demons שנטענים עבור משתמש מערכת root)
/Library/LaunchAgents
(תיקייה זו מכילה את כל ה-agents שנטענים עבור משתמש מערכת root)
/System/Library/SystemConfiguration
(פתיחת קבצי תצורה)
/Users/[some user name]/Library/Preferences
(העדפות משתמש ספציפי)

תיקון מס' 6:
התהליך הזה הוא שלב אחד לפני שתשקלו להתקין את OSX מחדש, אבל זה יכול להיות ארוך ותצטרכו מק נוסף.התיקון הוא להתקין מחדש את ה-kext/bundle/application. אולי ההעתק/ההתקנה לא הצליחה לגמרי. אם התקנתם חבילה עם סיומת mpkg/pkg אז ה-mpkg הוא ספרייה שמכילה ספרייה בשם Packages בתוכה, שכוללת את כל קבצי ה-pkg שאמורים להיות מותקנים. קובץ ה-pkg כולל בתוכו גם קובץ דחוס gzip, שמוגדר מתוך סקריפט שאומר לו מה לחלץ ולאיפה להעתיק את הקבצים (יכולים להיות הרבה מקומות, לא רק ספרייה אחת).
אם תרצו להתקין באופו ידני (או לבדוק אילו קבצים מועתקים בזמן ההתקנה ולהסיר אותם, או לוודא שהם הועתקו), אז תצטרכו לחלץ את כל הקובץ הדחוס, את רשימת הקבצים, למצוא אותם על הדיסק ולהעתיקם מחדש או להסירם.
התהליך מומלץ אך ורק אם יש לכם רשימה קטנה של קבצים. יכולה להיות אפילו טעות קטנה שיכולה לגרור שעות של עבודה. מה שאני כן ממליץ לעשות לפני התקנת חבילה שכזו זה למצוא את הקבצים שאמורים להיות מותקנים מחדש, ולגבות את הקבצים הקיימים. תוכלו להשתמש גם בתוכנת pacifist על קובץ "bom" (דומה לקובץ דחוס) ולראות את כל הקבצים והספריות בתוך החבילה.
דרך אחרת זה למצוא איזה חבילות כבר מותקנות על המערכת (ואולי להסיר את הבעייתית). זה יכול להעשות מתוך שורת הפקודה ע"י שימוש ב-"pkgutil". הקלידו את זה והקישו אנטר ואז תראו את מסך העזרה. תוכלו להתסכל גם בתוך תיקיה בשם "Receipts" ששומרת את החבילה שהותקנה בנפח המתאים. תיקיה זו יכולה להמצא ב:
/Library/Receipts
/Users/[some user name]/Receipts

הסבר נוסף:
אם מצב אתחול ה-verbose הראשון לא עזר בכדי להבין את הבעיה אז תוכלו לחפש רמז בתוך קובצי הרישום של המערכת. קבצים אלו יכולים להמצא כאן:
/Library/Logs
/var/log
/Users/[some user name]/Library/Logs

תהנו, מקווה שזה יעזור לכם.
תורגם ע"י מק-מן

2 comments:

zaher אמר/ה...
תגובה זו הוסרה על ידי המחבר.
zaher אמר/ה...

שלום, ותודה רבה לך..
בניסיון להתקין kalyway התקנתי את זה בפעם הראשונה, אבל שכחתי לעשות את הדרייב bootable.. ולכן קיבלתי את השגיאה b0 error.. עשיתי Boot למחשב בעזרת hiren`s boot, והצלחתי להחזיר את הboot לדרייב שמכיל את הווינדוס, אבל לא לזה שמכיל את המק.. לכן עשיתי פרמוט לדרייב שמכיל את המק.. כאשר ניסיתי לעשות התקנה מחדש, אני לא יכול, הוא נתקע על המסך הכחול.. ניסיתי cpus=1 וrd אבל גם לא עובד..
הרצתי ב v- וקיבלתי את שתי השגיאות הבאות:
1. error = firewur unable to determiune secure-mod: defaulting to full-secure
2. "startup items": no such file or directory..
אני מציין שאין אצלי אפשרות לשנות bios (אני על נייד hp)..
אגב, כאשר אני לוחץ על f8 הוא כותב leopard(hd31,0) x משהו כזה..