Windows Troubleshooting או בעברית: איתור תקלות במערכת הפעלה חלונות

אבי ורטהיימר ינואר 2017

מערכת הפעלה Windows זו כנראה התוכנה הגדולה ביותר שנכתבה אי פעם. ובוודאות זו תוכנה שרצה על מגוון החומרות הגדול ביותר.

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

מערכת הפעלה חלונות היא אמנם תוכנה מסחרית ואינה בעלת רשיון קוד פתוח, אולם הארכיטקטורה שלה פתוחה ומערכת האירועים והרישומים מאוד מפותחת.

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

ישנם מספר ספרים זמינים בשוק ועשרות רבות של כלים חינמיים ובתשלום אשר באמצעותם ניתן יהיה לנתר ולאתר כל תקלה במערכת ההפעלה.

 

מבנה כללי של מערכת ההפעלה:

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

עם הדלקת המחשב, המעבד מתחיל להריץ תוכנה שנמצאת בכתובת מסויימת בזכרון.

אם המעבד לא ימצא פקודה לביצוע באותה הכתובת, לא יקרה דבר.

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

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

תפקידה של אותה תוכנה:

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

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

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

לתוכנה ראשונית זו, נוהגים לקרוא BIOS (מאז שנות השמונים, עת IBM  המציאו את המחשב האישי ואת המונח BIOS, שזו למעשה אותה תוכנה הצרובה על לוח האם)

בשנים האחרונות, אינטל ואחרות פיתחו דור המשך, או חלופה לBIOS והפעם כינו את זה בשם UEFI. בכל מקרה, המונח הכללי שמתייחס לתוכנה שצרובה על לוח מחשב לא קוראים באמת תוכנה (Software) אלא "קושחה" (Firmware)

אם כן, לסיכום ביניים;

התוכנה הראשונית שרצה על המחשב היא זו הצרובה בלוח האם וקרוייה קושחה.

קושחה זו היא בעצם זו תהיה התוכנה שתטען לזכרון את מערכת הפעלה ששמורה של ה"דיסק הקשיח"

ובכן, הדברים לא לגמרי מדוייקים, היות ומה שבאמת הקושחה תקרא מה"דיסק הקשיח" זה רק קטע קוד קצר שנקרא Boot Record.

היו וידוע לכולם, שהמחשבים של היום יודעים להריץ גם חלונות וגם לינוקס ואף מערכות הפעלה אחרות, לקושחה אין מושג איזו מערכת הפעלה היא הולכת לטעון ולכן כשמפרמטים את הדיסק הקשיח, טוענים ל"כתובת ה0" של הדיסק הקשיח את הBoot Record המתאים לאותו פורמט של דיסק או במילים אחרות של המערכת ההפעלה המיועדת.

הboot record זו תוכנה שיודעת לחפש את התוכנה הבאה שעוסקת ברמה גבוהה יותר בהטענת מערכת ההפעלה ובדור של ימנו היא נקראת BOOTMGR. פעם קראו לזה בשמות אחרים. לצד התוכנה BOOTMGR ישנו מבנה נתונים, שם מוגדר ונשמר מידע המתייחס לאיך ומאיזה קובץ במערכת הקבצים תטען מערכת ההפעלה. שם מבנה הנתונים הוא BCD Store. פעם קראו למבנה הנתונים הזה boot.ini. אז הוא היה בפורמט טקסט ומאוד פשוט. היום מדובר במבנה הרבה יותר מורכב.

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

 

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

כמובן שהרחבה והעמקה אל מעבר לכתוב בספרים ניתן למצא באינטרנט באתר של מיקרוסופט הקרוי MSDN. שם מדובר כבר להערכתי במאות אלפי דפים רלוונטים למערכות ההפעלה של דורינו. לאחר שקראתם לפחות את שני הספרים הנ"ל, יעמוד לרשותכם ספר נוסף הקרוי Troubleshooting with the windows sysinternals tools שמתאר בצורה מפורטת כיצד להשתמש בכ70 כלי תוכנה לבחינה והתבוננות לנבכי מערכת ההפעלה ומרכיביה כמו גם השימוש באותם כלים.

לאחר קריאת אותם ספרים, יעמוד לרשותכם, אוצר מילים ומונחים של מערכת ההפעלה כמו גם ההבנה כיצד הדברים עובדים ומי קשור למי.

כעת יהיה לכם נהיר יותר התוכן של הtask manager של מערכת ההפעלה או התוכן של הevent viewer שמגיע עם מערכת ההפעלה וכך גם המשמעות ואופן העבודה עם הכלים הנ"ל. כלים אלו קרויים Sysinternal suite וניתנים להורדה חינם מאתר מיקרוספט

בנוסף לכך, ישנן חבילות תוכנה, ממיקרוסופט, האחת קרויה ADW והשניה WDK ויש גם SDK למערכות ההפעלה השונות, הכוללות בין היתר כלים נוספים.

כלים נוספים כמו wireshark או usblyzer הם כלים שיתנו מבט אל מה שקורא

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

בעבר לכלים הנ"ל יש כלים רבים שתפקידת לבצע ניתוח דליפות זכרון וניתוח ביצועי יישומים שפותחו על ידייכם או על ידי אחרים וכלים אלו קרויים כלי profiling.

 

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

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

 

בברכה

אבי ורטהיימר