תהליך האתחול של לינוקס מוסבר¶
לוחצים על כפתור ההפעלה, מחכים כמה שניות, ופתאום המחשב מוכן לעבודה. מאחורי הרגעים האלה מתרחשת שרשרת מסודרת של שלבים, שכל אחד מהם מעביר את השרביט לשלב הבא, עד שהמערכת כולה עומדת על רגליה. הבנת התהליך הזה עוזרת מאוד כשמנסים לאבחן מחשב שלא עולה כמו שצריך.
שלב ראשון - הקושחה - BIOS או UEFI¶
ברגע שנלחץ כפתור ההפעלה, עוד לפני שכל תוכנת מערכת הפעלה בכלל נטענת, הלוח האם מריץ תוכנה שיושבת בשבב מיוחד עליו, שנקראת קושחה. במחשבים ישנים יותר זו הייתה BIOS, ובמחשבים מודרניים זו UEFI, גרסה מתקדמת יותר. תפקידה בשלב הזה הוא לבצע בדיקה בסיסית של החומרה, שנקראת POST, ולמצוא איפה בכלל נמצאת מערכת הפעלה שאותה יש להפעיל.
שלב שני - טוען האתחול - Bootloader¶
אחרי שהקושחה מוצאת דיסק בר אתחול, היא מעבירה שליטה לתוכנית קטנה שיושבת בתחילת הדיסק, שנקראת bootloader. בלינוקס, טוען האתחול הנפוץ ביותר נקרא GRUB. תפקידו הוא לטעון את הקרנל של לינוקס לזיכרון, ואם יש כמה מערכות הפעלה מותקנות, להציג תפריט שמאפשר לבחור באיזו מהן להפעיל.
GRUB גם מאפשר להעביר פרמטרים לקרנל בזמן האתחול, למשל להיכנס למצב תיקון כשמשהו לא תקין, וזו הסיבה שאם אי פעם תראו מסך שחור עם רשימת אפשרויות אתחול, זה בדיוק המקום הזה.
שלב שלישי - טעינת הקרנל¶
ברגע שהקרנל נטען לזיכרון, הוא מתחיל לאתחל את עצמו - מזהה את החומרה המחוברת, טוען דרייברים, ומקים את מערכת הקבצים הראשונה שהוא צריך כדי להמשיך. שלב זה כולל שימוש במבנה זמני שנקרא initramfs, מערכת קבצים קטנה בזיכרון שמכילה בדיוק את הדרייברים הדרושים כדי להגיע לדיסק האמיתי ולטעון ממנו את מערכת הקבצים הסופית.
שלב רביעי - init - התהליך הראשון¶
ברגע שהקרנל סיים את האתחול שלו, הוא מריץ את התהליך הראשון במערכת, שמקבל תמיד את המזהה pid 1. במרבית הפצות הלינוקס המודרניות, התהליך הזה הוא systemd, ותפקידו הוא להפעיל את כל שאר השירותים והתהליכים שהמערכת צריכה - מרשת ועד שרתי אתרים ותהליכי רקע אחרים.
systemd עובד לפי מבנה של targets, שהם בעצם קבוצות של שירותים שצריכים לרוץ יחד למצב מסוים - למשל target שמריץ רק שירותים בסיסיים לצורך תחזוקה, ו-target אחר שמריץ את כל מה שנדרש למערכת גרפית מלאה.
שלב חמישי - כניסה למערכת¶
בסוף התהליך, systemd מפעיל את שירות ההתחברות - login manager - שמציג לכם את מסך ההתחברות, בין אם זה מסך גרפי או שורת פקודה. ברגע שהזנתם שם משתמש וסיסמה, נפתחת סשן משתמש חדש, ורק אז אתם באמת "בפנים".
למה חשוב להבין את זה¶
כשמחשב לינוקס לא עולה כרגיל, ההבנה של השלבים האלה עוזרת לצמצם היכן בדיוק הבעיה. תקלה שמופיעה מסך שחור לגמרי, לפני כל תפריט, קרוב לוודאי בקושחה או בדיסק עצמו. תקלה שמפילה את המערכת אחרי תפריט GRUB אבל לפני מסך התחברות, קרוב לוודאי קשורה לקרנל או לשירות שsystemd מנסה להפעיל ונכשל. הבנה כזו הופכת דיבוג של מחשב שלא עולה מניחוש אקראי לתהליך שיטתי.
לסיכום¶
תהליך האתחול של לינוקס הוא שרשרת מסודרת שמעבירה שליטה בין כמה שכבות - קושחה, טוען אתחול, קרנל, ולבסוף systemd שמפעיל את כל שאר המערכת. כל שלב תלוי בשלב שלפניו, וברגע שמבינים את הסדר הזה, אבחון תקלות אתחול הופך להרבה יותר ברור.
רוצים להבין עוד על איך לינוקס עובד מבפנים? יש לנו קורס לינוקס בסיסי מלא בחינם שבונה את הידע הזה שלב אחרי שלב.
יש לכם שאלה על אתחול לינוקס או תקלות עלייה של המערכת? בואו לדבר בדיסקורד.