מה שאתה צריך לדעת
אלא אם כן אתה חי מתחת לסלע, או גרוע מזה - לא אכפת לך הרבה איך לינוקס עובד, בטח שמעת על systemd, את מערכת ה- init החדשה (יחסית) החדשה שהחליפה את ה- SysV הישן והמיושן שאומץ לאחרונה על-ידי רוב לינוקס הגדולים הפצות.
מהי מערכת init?
כאשר מכונת לינוקס שלך מתחיל את זה יהיה הראשון להפעיל כמה "מובנית" קוד, טעון מ BIOS או UEFI הראשון, ואחריו את האתחול, אשר על פי התצורה שלו טוען ליבה של לינוקס. הקרנל טוען את הנהגים, וכמו העבודה הראשונה שלה מתחיל את תהליך init, אשר להיות הראשון מקבל PID (תהליך זיהוי) 1 שהוקצו לו.
מנקודת המבט של המשתמש זה נראה כמו הפעלת רשת ומסדי נתונים, וכו ', אבל במציאות יש תהליך מורכב למדי מתרחש מתחת למכסה המנוע. השירותים מופעלים, נעצרים מחדש, מקבילים לעתים קרובות זה לזה. חלקם פועלים תחת הרשאות שונות מאחרים, מצב שירות מדווחים ומתועדים, ומשימות רבות אחרות מבוצעות שיהפכו את החלק האחר של עבודת המערכת שלכם ויפעילו אינטראקציה עם המשתמשים והסביבה.
איך זה מיושם, עם זאת, הוא רחוק מלהיות אחיד, וזה באמת המקום שבו כל זה מפסיק להיות מוגדר היטב.
מערכת ההזנה הישנה
המערכת ההתחלתית המשמשת את רוב הזרם המרכזי של לינוקס עד לאחרונה הייתה ההתחלה של מערכת V (או SysV init), אשר נגזרה בצורתה UNIX System V (מערכת חמש "), מערכת UNIX המסחרית הראשונה. מערכת V OS יש לו דרך מסוימת כדי להפעיל את תהליך init, ו- SysV init יש שמר על נאמנות זה לאורך השנים.
וזה כבר שנים רבות. UNIX מערכת V שוחרר במקור בשנת 1983, מה שהופך את init sysv init מעל 30 שנה הגישה לקראת הפעלת מכונות לינוקס.
הצורך בשינוי
כפי שצוין, יוזם SysV כבר מיושן מזמן איחור כדי להיות מוחלף. חלק מהסיבות לכך כוללות:
- SysV init משתמש / sbin / init כדי להתחיל את תהליך init, אבל ל- init עצמו יש תפקיד מוגבל מאוד. init עושה קצת יותר מאשר מתחיל /etc/init.d/rc, על פי התצורה לקרוא מ / etc / inittab, אשר בתורו יפעיל סקריפטים לעשות את העבודה האמיתית של תהליך init. זה, אלא אם כן הפאנל בצורה מפורשת (כמו עם startar על דביאן), יקרה ברצף, סקריפט אחד מתחיל אחרי השני, מה שהופך את התהליך כולו איטי כמו כל סקריפט יש לחכות עד האחרון כדי לסיים.
- ל- SysV init אין גישה ל- PID או לתהליכים שלו (בעקיפין). זה רק קורא PIDs ומקשר אותם עם תהליכים בפועל באופן נסיבתי, מסובך.
- עבור מנהלי מערכת המבקשים לשנות את הסביבה שבה תהליך מסוים יתחיל, זה די קשה עם SysV init. (כדי להשיג זאת הם יצטרכו לשנות את strcipt init כי הוא אחראי כדי להתחיל את התהליך נתון.)
- יש פונקציונליות מסוימת המשותפת לכל שירות ש- SysV אינה מיישמת, אבל כל תהליך יצטרך ליישם את עצמו במקום, כגון "daemonising" עצמם (להפוך daemon מערכת), שהוא תהליך משוכלל וארוך. במקום לבצע צעדים אלה פעם אחת, SysV דורש שכל תהליך יעשה את העבודה בעצמם.
- SysV גם משאיר פונקציונליות מסוימת לתוכניות חיצוניות לא יודע כלום על השירותים נכתבו על ידי אלה.
כל האמור לעיל, ועוד פגמים רבים בעיצוב, או ליתר דיוק את מערכת התכנון המיושנת של SysV, הפכה את יצירתה של מערכת init המודרנית מזמן.
הזן systemd
היו ניסיונות רבים ליצור מערכת init חלופית, אשר systemd הוא רק אחד מהם. אובונטו נהגה להפעיל את מערכת ה- init שלה, שנקראת upstart. ג'נטו עדיין משתמשת ב- OpenRC. מערכות init אחרות כוללות initng, busybox-init, runit, ו- Mudur ואחרים.
הסיבה systemd הוא מנצח ברור הוא שזה אומץ על ידי רוב ההפצות הגדולות. RHL ו CentOS באופן טבעי הלך בדרך המערכת, כמו Fedora היה distro הראשון באופן רשמי לאמץ את systemd בשנת 2011. אבל Systemd הפך להיות באמת אחד init המערכת כדי לקבוע את כולם, כאשר דביאן 8 רשמית עבר systemd, להביא אובונטו נגזרים עם זה, להתגבר על קנוניקל (או ליתר דיוק מארק Shuttleworth) התנגדות ראשונית כלפי systemd.
איך זה שונה?
- סיסטד שואפת לספק דרך אחת ומרכזית לטפל בתהליך ההתחלה מתחילתו ועד סופו.
- זה מתחיל ולהפסיק תהליכים ושירותים תוך מעקב אחר התלות שלהם. זה אפילו יכול להתחיל תהליך כתגובה לתהליך אחר "תלות התלות.
- בנוסף להתחיל ולהפסיק תהליכים במהלך זמן האתחול, Systemd יכול גם להתחיל בכל עת, כאשר המערכת היא בתגובה לאירועים מסוימים להפעיל כגון כאשר המכשיר מחובר לחשמל.
- זה גם לא דורש תהליכים כדי daemonize עצמם. שלא כמו SysV init, המערכת יכולה לטפל בשירותים הפועלים מבלי לעבור את התהליך הארוך של הפיכת הדמונים.
- שלא כמו SysV init, systemd יודע ועוקב אחר כל התהליכים, כולל PIDs, וקבלת מידע על תהליכים היא הרבה יותר פשוטה עבור מנהלי מערכת תחת systemd.
- SystemD תומך במכולות שהן בעצם סביבות שירות מבודדות ללא צורך במכונות וירטואליות. זה פוטנציאל גדול לקראת עיצובים מערכת בטוחה יותר ופשוטה יותר בעתיד.
כמובן אלה הן רק חלק מן היתרונות העיקריים. לקבלת דיון מלא על היתרונות של המערכת, אתה צריך לקרוא דביאן 8 של "Systemd עמדת עמדה"
מַחֲלוֹקֶת
כמובן systemd לא היה בברכה על ידי כל. למעשה, רבים יש ועדיין לעשות זועף על זה, קורא לזה מונוליטי ומסורבל, כמה אפילו מאשים אותו הולך "דרך החלונות" של כל דבר ריכוזי. רבים טוענים כי זה לא "הדרך לינוקס", ובוודאי systemd לא נראה בהתאם לסטנדרטים POSIX, ואם ניקח בחשבון systemdit (מעבר רק בינארי), זה בהחלט hugae.
עם זאת, systemd הוא בבירור צעד קדימה, ובעוד זה לא מושלם, הרבה של הביקורת שהיא קיבלה כבר טופלו על ידי המחבר המקורי שלה ואת מפתחים לנארט Poettering. זה בהחלט הוא הרבה יותר צורך התקדמות צעד מ הישן init המערכת. לינוס טורבלדס, היוצר של לינוקס, לא נראה שלא אכפת לו יותר מדי, ומי אנחנו להתווכח עם "הבורא".
סיכום
לאחר שאומצו על ידי כל הפצות לינוקס הגדולות, systemd הוא כאן כדי להישאר. מה שמנהלי מערכת מסוימים אומרים מסיבה כלשהי, סיסטד הוא העתיד של לינוקס המיינסטרים, אם משתמשים בודדים אוהבים את זה או לא, אשר, מסתכל על היתרונות הייחודיים שלה, הוא לא בהכרח דבר רע.
עבור המשתמש הממוצע הוא מביא פעמים האתחול מהר יותר מערכות אמינות כנראה, בעוד הפצות בעתיד אימוץ זה יכול להיות יותר "תואם" אחד עם השני. על קצה המשתמש אנו בהחלט נהנים יותר מעודכן עיצוב עכשווי המערכת היא מביאה שולחנות העבודה שלנו.