Chapter 15: מתודולוגיות אבחון (Advanced Troubleshooting) - Asset A (Instructor Reference)¶
1. עיקרון הבידוד (Isolation)¶
1. High-Level Theory & History¶
הגישה המסורתית של אפל לפתרון תקלות נקראת Systematic Troubleshooting, אשר שמה דגש על עיקרון הבידוד (Isolation) במקום פתרון מבוסס ניסוי וטעייה. ההיסטוריה של פתרון תקלות ב-macOS עברה מאנרכיה של ניסיונות תיקון הרשאות, למתודולוגיה מסודרת שבה מחלקים את "מרחב הבעיה" לחצי שוב ושוב. האם הבעיה קשורה למשתמש הספציפי או לכלל המערכת? האם מדובר בבעיית חומרה או תוכנה? האם הבעיה קורית רק ברשת ספציפית? כלי ניטור כמו Activity Monitor, יחד עם ה-Console ו-Wi-Fi Diagnostics, מהווים את הבסיס להבנת הבעיה ולצמצומה לרכיב הבודד שכשל, לפני שמתחילים לבצע שינויים או תיקונים.
2. Deep Technical Architecture¶
ארכיטקטורת ה-macOS מגבילה באופן טבעי את רדיוס הפגיעה של תקלות באמצעות מנגנון Sandbox (Sandboxing) והפרדת תהליכים ברמת משתמש למול תהליכי מערכת (User Space vs. System Space). כאשר נצפית צריכת משאבים חריגה ב-Activity Monitor, עיקרון הבידוד מתחיל בניתוח של מי הבעלים של התהליך: האם זהו LaunchAgent (הרץ בסביבת המשתמש בלבד) או LaunchDaemon (הרץ ברמת ה-root כחלק מה-System Space)? בנוסף, אדריכלות ה-Unified Logging System אוספת נתונים בזמן אמת לתוך חוצצי זיכרון (Memory Buffers) ולדיסק, ומאפשרת בחינה מדוקדקת ב-Console. בהקשר הרשתי, ארכיטקטורת ה-Wi-Fi מפרידה את שכבת החומרה משכבת התוכנה, כשאת רוב התעבורה מנהל Background Process בשם airportd, מה שמאפשר לבודד בעיות קישוריות על ידי איסוף דיאגנוסטיקה אלחוטית.
3. Terminal Commands, Plists & Logs¶
-
ניתוח תהליכים ב-Activity Monitor דרך CLI: פקודת הדגימה מאפשרת לחלץ את מצב התהליך.
sample <pid> 10 10 -file /tmp/process_sample.txt -
סינון לוגים במערכת: שימוש ממוקד לאיתור שגיאות כדי לבודד את מוקד הקריסה.
log show --predicate 'eventMessage contains "error"' --last 5m -
הפעלת דיאגנוסטיקה אלחוטית מוסתרת: בעוד שממשק ה-GUI מתקבל בלחיצה על מקש ה-Option + סמל ה-Wi-Fi בשורת התפריטים (וכניסה ל-Wireless Diagnostics), ניתן לאסוף מידע אלחוטי מפורט בטרמינל.
- נתיבי דיאגנוסטיקה: לאחר סיום תהליך האבחון האלחוטי, מיוצר קובץ אוסף בנתיב:
/var/tmp/(או על ה-Desktop) בפורמט.tar.gz.
4. Edge Cases & Troubleshooting¶
מקרי קצה הקשורים לבידוד מתרחשים כאשר תקלה פוגעת בכל המשתמשים, אך לא ניתן לשחזר אותה במצב בטוח (Safe Mode), מה שמצביע על כך שהבעיה נובעת מהרחבת מערכת צד-שלישי עמוקה (כמו אנטי-וירוס או כלי MDM שמשפיע מערכתית). מקרה קצה נוסף הוא קריסה פתאומית (Kernel Panic) בה מרחב המשתמש אינו רלוונטי כלל, ויש לבודד אם מדובר ברכיב חומרה פגום או דרייבר בעייתי. כמו כן, בעת בידוד בעיות קישוריות (כמו נפילות Wi-Fi), הבעיה לרוב נמצאת ברשת (למשל, Captive Portal שלא נטען כראוי) ולא במק עצמו.
2. כוחו של ה-Safe Mode¶
1. High-Level Theory & History¶
Safe Mode (Safe Mode) הוא אחד מכלי האבחון הוותיקים והחשובים ביותר, הקיים עוד מימי Mac OS X המוקדמים. היסטורית, תפקידו היה להעלות את המערכת בסביבה מינימלית, תוך נטרול הרחבות קרנל (Kexts) חיצוניות ומטמוני גופנים (Font Caches) שהיו נוטים להשחית את המערכת. במחשבי Apple Silicon המודרניים, ה-Safe Mode משמש לא רק כסביבת בידוד מוחלטת להפרדה בין רכיבי תוכנה של אפל לרכיבי צד-שלישי, אלא גם כפעולת תחזוקה אקטיבית, אשר מתקנת תקלות מערכת בעצם תהליך ההפעלה שלה.
2. Deep Technical Architecture¶
מבחינה טכנית נמוכה, בעת אתחול למצב בטוח (Safe Boot), המערכת מבצעת בדיקה עצמית לוגית ותיקון שגיאות ב-Volume האתחול באמצעות הפעלת מנוע ה-fsck_apfs ברקע (על ה-Data Volume, שכן ה-Sealed System Volume חתום). לאחר מכן, ה-OS עולה כאשר הוא מדלג במכוון על טעינת כלל הרחבות הקרנל החיצוניות, ומונע הפעלה של כל ה-LaunchDaemons ו-LaunchAgents שאינם מבית אפל. בנוסף, רכיבי הלוגין של המשתמש (Login Items) אינם נטענים. ברמת הליבה, המערכת משליכה את המטמונים הדינמיים של הקרנל (Kernel Caches), מטמוני גופנים, ומטמונים של ה-Dynamic Loader (dyld), ומאלצת את המערכת לבנות אותם מחדש. כמו כן, האצת חומרה (Metal Hardware Acceleration) לרוב מנוטרלת, ולכן תהליך ה-WindowServer רץ במצב תצוגה בסיסי שגורם לחוויית שימוש "איטית" ו"מקרטעת".
3. Terminal Commands, Plists & Logs¶
-
בדיקת מצב Safe Mode מתוך הטרמינל:
sysctl kern.safeboot(יחזיר ערך 1 אם המחשב נמצא כעת ב-Safe Mode, ו-0 אם במצב רגיל). -
כניסה למצב בטוח במחשבי Apple Silicon: בניגוד לעבר בו הוחזק מקש ה-Shift בעת ההדלקה, כיום יש ללחוץ ולהחזיק את כפתור ההפעלה עד להגעת למסך ה-Startup Options, לבחור את ה-Volume הרצוי, להחזיק מקש Shift רצוף וללחוץ על "Continue in Safe Mode".
- פקודת NVRAM (למחשבי אינטל בלבד - כהערה סביבתית): בעבר ניתן היה לכפות עלייה ב-Safe Mode על ידי כתיבה ל-NVRAM. במחשבי Apple Silicon זה מנוהל על ידי ה-Startup Security Utility.
sudo nvram boot-args="-x"(רלוונטי היסטורית / אינטל).
4. Edge Cases & Troubleshooting¶
תופעות נלוות נפוצות בזמן שהייה במצב בטוח הן הבהובי מסך חריגים, איטיות קשה בממשק הגרפי, ואובדן זמני של קישוריות Wi-Fi או Bluetooth, משום שחלק ממנהלי ההתקן המתקדמים אינם נטענים. מקרה קצה מעניין בפתרון תקלות: אם המחשב סובל מקפיאות (Freezes) חוזרות במצב רגיל, אך פועל ביציבות מושלמת במצב בטוח (Safe Mode), הוכח בבידוד מוחלט שהבעיה טמונה בתוכנת צד-שלישי (למשל סוכן ארגוני סורר או דרייבר תקול), ולא בחומרה או בקבצי מערכת הליבה. פעמים רבות, עצם העלייה ל-Safe Mode וביצוע ה-Restart חזרה למצב רגיל, פותרים תקלות תצוגה וביצועים בזכות ניקוי ה-Caches האגרסיבי.
3. שימוש בכלי CLI לחקירה¶
1. High-Level Theory & History¶
למרות הגישה הגרפית והנקייה של macOS ב-System Settings ו-System Information, ה-Command Line Interface (CLI) מציע יכולות סקירה וחקירה מקיפות שאינן מושפעות מתקלות ברמת הממשק הגרפי. פקודת system_profiler הייתה מאז ומתמיד כלי הנשק הסודי של תומכי IT. היא מאפשרת לייצר דוחות עמוקים על מצב החומרה, התוכנה והרשת דרך הטרמינל (או מרחוק באמצעות SSH), מבלי להסתמך על חוויית המשתמש המקומית. כלי הטרמינל השונים חותכים את רעשי הרקע ומאפשרים למנהל המערכת לנתח אדריכלות רשת, אבחון אלחוטי, וזיהוי חומרה ישירות מהשורש.
2. Deep Technical Architecture¶
פקודות כמו system_profiler הן למעשה ממשק (Wrapper) טקסטואלי שניגש לאובייקטי ה-I/O Kit (עץ ה-Registry של כלל החומרה והדרייברים ב-macOS, שניתן לעיין בו בצורה גולמית בעזרת ioreg). כאשר מריצים את הפקודה, היא מבצעת משיכה של מידע משכבות ליבה שונות: סוגי זיכרון, ממשקי רשת אקטיביים, ופרופילי חומרה. במקביל, כלי כמו wdutil מסוגל לדבר ישירות עם ה-CoreWLAN Framework כדי למשוך סטטיסטיקות קישוריות בזמן אמת, ולהציג עוצמת אות (RSSI) ורמות רעש מבלי לעבור דרך שורת התפריטים. הכלים פולטים מידע בפורמטים סטנדרטיים, המאפשרים למנגנוני ניהול לשלוף ולהעביר את הנתונים ל-MDM.
3. Terminal Commands, Plists & Logs¶
-
שליפת נתוני חומרה ותוכנה בסיסיים:
system_profiler SPHardwareDataType SPSoftwareDataType -
שליפת נתוני רשת וסדר עדיפויות ללא העמסת פלט:
system_profiler SPNetworkDataType -detailLevel mini -
ניתוח רשתות Wi-Fi מתקדם ישירות מה-CLI:
wdutil info -
זיהוי מזהי החומרה של ממשקי הרשת (en0, en1):
networksetup -listallhardwareports -
זרימת לוגים חיה לדיבאג אלחוטי:
log stream --info --debug --predicate 'subsystem == "com.apple.wifi"'
4. Edge Cases & Troubleshooting¶
יש לקחת בחשבון שהרצה של system_profiler ללא ציון "DataType" תחזיר את כל הנתונים של המחשב, מה שיכול לקחת דקות ארוכות ולגרום לטרמינל להיראות תקוע (Hung), במיוחד אם הוא סורק כונני רשת כבדים. קשיי אבחון ב-CLI יכולים להיווצר כשיש תקלות התקני I/O פגומים שמכניסים את החקירה ללולאה אין-סופית. אם ה- system_profiler נתקע, זהו סמן מובהק לכך שדרייבר חומרה תקוע. לחלופין, הדרך העדכנית לחקור דרייברים ברמה העמוקה ביותר היא באמצעות שימוש בפקודת ioreg -l אשר חושפת את עץ ה-I/O Kit הגולמי.
4. תיבול ארגוני¶
1. High-Level Theory & History¶
בסביבה ארגונית מנוהלת (MDM / Enterprise), פתרון תקלות הופך לאתגר מורכב יותר, משום שלכל בעיה מתווספת השאלה: "האם מדובר בתקלת תוכנה/חומרה מקורית, או בפרופיל תצורה (Configuration Profile) שמגביל את המשתמש בכוונה?". תמיכת IT חייבת לדעת כיצד לבודד בעיה בין מערכת ההפעלה הבסיסית לבין Payload (Payload) ארגוני ספציפי. סוגיה נפוצה במיוחד בסביבות Enterprise היא אבחון ותיקון של תקלות מול מערכות Single Sign-On (SSO) (Single Sign-On - SSO) ומנגנון ה-Kerberos, המשמשים כדי להעניק למשתמשים גישה חלקה לשירותי הארגון (כגון שרתי קבצים ואינטרא-נט) ללא הזנת סיסמה חוזרת.
2. Deep Technical Architecture¶
הניהול המוסדי ב-macOS מבוסס על תהליך ה-mdmclient שמחיל Configuration Profiles ישירות להגדרות ברמת המערכת. במקרים של מנגנון הזדהות, ארכיטקטורת ה-Extensible Single Sign-On של אפל מאפשרת לאפליקציית הרחבה (App Extension) ליירט בקשות אימות רשת, ליצור קשר עם ה-Identity Provider הארגוני (או Active Directory מקומי), ולשלוף תעודת Kerberos מסוג TGT (Ticket Granting Ticket) התקפה לזמן מוקצב. כאשר תהליך זה כושל, כל הגישה הארגונית קורסת גם אם ה-Wi-Fi מחובר ויציב במאת האחוזים. הסיבה לרוב קשורה לפורטים חסומים בחומת האש הארגונית (כגון פורט 88 ו-464 הייעודיים ל-Kerberos) או סנכרון שעונים שגוי.
3. Terminal Commands, Plists & Logs¶
-
סקירה של כל פרופילי ה-MDM המותקנים על המחשב:
profiles list -
בחינת התצורה הפנימית של הפרופילים כדי למצוא מגבלות נסתרות:
profiles show -type configuration -
אבחון Single Sign-On (SSO) - רשימת כרטיסי ה-Kerberos הפעילים (TGT):
klist -
משיכה ידנית של כרטיס Kerberos לבדיקת חיבוריות (SSO Troubleshooting):
kinit <username>(ידרוש הזנת סיסמת חשבון ארגוני כדי לראות אם יש תקשורת לשרת). -
מעקב לוגים חי למנגנון ה-Enterprise SSO:
log show --predicate 'subsystem == "com.apple.ExtensibleEnterpriseSSO"'
4. Edge Cases & Troubleshooting¶
בפתרון תקלות Kerberos ו-SSO, האויב הגדול ביותר של ה-IT הוא חוסר סנכרון בשעון (Clock Skew). ארכיטקטורת Kerberos בנויה כך שאם יש פער של יותר מחמש דקות בין השעון המקומי של המק לבין שרת ה-Domain Controller, כל ניסיון חיבור (SSO) יידחה אוטומטית ויציג שגיאה גנרית, ללא הסבר ברור על פער הזמנים. בנוסף, בניסיון לבודד תקלות פרופילים, קיימים מצבים בהם ה-MDM אוסר לחלוטין על הסרת הפרופיל על ידי המשתמש (Zero-Touch Deployment restriction). הדרך היחידה לבצע בידוד (Isolation) יעיל במקרה כזה היא שהאדמין יעביר זמנית את המחשב לקבוצת החרגה (Exclusion Group) בקונסולת ה-MDM, ידחוף פקודת הסרה לפרופיל ספציפי, ויבחן האם התקלה נפתרה. גישה אחרת לעקיפת מדיניות היא פתיחת Local Account זמני חדש (במידה ויש הרשאות), משום שפרופילים מסוימים חלים רק ברמת המשתמש ולא ברמת מערכת (User Channel vs. Device Channel).