מהדורות ליבה יציבה & עדכונים

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

מהדורות ליבה יציבות מבוססות ישירות על מהדורות של Linus Torvalds, ומשתחררות מדי שבוע בערך, בהתאם לגורמים חיצוניים שונים (זמן בשנה, תיקונים זמינים, עומס עבודה של מתחזק וכו'). המספור של המהדורות היציבות מתחיל במספר מהדורת הליבה, ומספר נוסף מתווסף בסוף שלה. לדוגמה, ליבת 4.4 משוחררת על ידי Linus, ולאחר מכן גרסאות הליבה היציבות המבוססות על ליבה זו ממוספרות 4.4.1, 4.4.2, 4.4.3 וכן הלאה. רצף זה מתקצר בדרך כלל עם המספר 4.4.y כאשר מתייחסים לעץ שחרור ליבה יציב. כל עץ שחרור ליבה יציב מתוחזק על ידי מפתח ליבה בודד, שאחראי על בחירת התיקונים הדרושים לשחרור וניהול תהליך הסקירה/הפצה.

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

גרעינים יציבים לטווח ארוך

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

בזמן כתיבת שורות אלה, גרעיני ה-LTS הם מהדורות 4.4.y, 4.9.y, 4.14.y, 4.19.y, 5.4.y ו-5.10.y. קרנל חדש יוצא מדי שבוע. בשל הצרכים של חלק מהמשתמשים וההפצות, כמה גרעינים ישנים נוספים מתוחזקים על ידי מפתחי ליבה במחזור שחרור איטי יותר. מידע על כל הגרעינים היציבים לטווח ארוך, מי אחראי עליהם, וכמה זמן הם יישמרו, ניתן למצוא בעמוד הגרסאות של kernel.org .

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

חוקי תיקון ליבה יציבים

הכללים לגבי מה שניתן להוסיף לגרסת ליבה יציבה נשארו כמעט זהים מאז הצגתה ומתמצים להלן:

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

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

עדכוני ליבה

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

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

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

בִּטָחוֹן

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

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

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

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

שמירה על מערכת מאובטחת

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

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