مدل انتشار پایدار هسته Linux در سال ۲۰۰۵ شروع شد، زمانی که مشخص شد مدل توسعه هسته موجود (انتشار جدید هر ۲-۳ ماه) نیازهای اکثر کاربران را برآورده نمیکند. کاربران میخواستند اشکالهای نرمافزاری درطول آن ۲ تا ۳ ماه برطرف شود و توزیعهای Linux بدون بازخورد از انجمن هسته بهسختی میتوانستند هستهها را بهروز نگه دارند. بهطورکلی، تلاش برای حفظ امنیت هستههای مجزا و بهروز نگه داشتن آنها با جدیدترین اصلاحات اشکال، تلاشی بزرگ و گیجکننده از سوی افراد مختلف بود.
نسخههای پایدار هسته مستقیماً براساس نسخههای Linus Torvalds هستند و بسته به عوامل خارجی مختلف (زمان سال، وصلههای دردسترس، حجم کار نگهدارنده، و غیره) تقریباً هر هفته منتشر میشوند. شمارهگذاری نسخههای پایدار با شماره نسخه هسته شروع میشود و یک عدد دیگر به انتهای آن اضافه میشود. برای مثال، هسته ۴.۴ توسط لینوس منتشر میشود و سپس نسخههای پایدار هسته براساس این هسته با شمارههای ۴.۴.۱، ۴.۴.۲، ۴.۴.۳ و غیره منتشر میشوند. این توالی معمولاً با عدد ۴.۴.y هنگام اشاره به درخت انتشار هسته پایدار کوتاه میشود. هر درخت انتشار هسته پایدار توسط یک توسعهدهنده هسته نگهداری میشود که مسئول انتخاب وصلههای موردنیاز برای انتشار و مدیریت فرایند بازبینی/انتشار است.
هستههای پایدار برای طول چرخه توسعه فعلی حفظ میشوند. پساز اینکه لینوس هسته جدیدی را منتشر میکند، درخت انتشار هسته پایدار قبلی متوقف میشود و کاربران باید به هسته منتشرشده جدیدتر منتقل شوند.
هستههای پایدار بلندمدت
پساز یک سال از این فرایند جدید انتشار پایدار، مشخص شد که بسیاری از کاربران مختلف Linux میخواستند هسته برای مدتی طولانیتر از چند ماه پشتیبانی شود. در پاسخ، نسخه هسته «پشتیبانیشده بلندمدت» (LTS) ایجاد شد و اولین هسته LTS (۲.۶.۱۶) در سال ۲۰۰۶ منتشر شد. از آن زمان، یک هسته LTS جدید سالی یکبار انتخاب میشود و انجمن هسته آن هسته را حداقل ۲ سال حفظ میکند.
در زمان نوشتن این مطلب، هستههای LTS نسخههای 4.4.y، 4.9.y، 4.14.y، 4.19.y، 5.4.y، و 5.10.y هستند. هفتهای یک هسته جدید منتشر میشود. بهدلیل نیازهای برخیاز کاربران و توزیعها، چند هسته قدیمیتر دیگر توسط توسعهدهندگان هسته در چرخه انتشار کندتری نگهداری میشوند. اطلاعات مربوط به همه هستههای پایدار بلندمدت، مسئول آنها، و مدت نگهداری آنها را میتوانید در صفحه انتشارهای kernel.org پیدا کنید.
نسخههای هسته LTS بهطور میانگین ۶ تا ۸ وصله در روز میپذیرند، درحالیکه نسخههای هسته پایدار معمولی ۱۰ تا ۱۵ وصله در روز دارند. تعداد وصلهها در هر نسخه پخش با توجه به زمان فعلی نسخه پخش هسته توسعه مربوطه و سایر متغیرهای خارجی نوسان دارد. هرچه هسته LTS قدیمیتر باشد، وصلههای کمتری برای آن قابلاعمال است زیرا بسیاری از رفع اشکالات اخیر مربوط به هستههای قدیمیتر نیستند. بااینحال، هرچه هسته قدیمیتر باشد، بهدلیل تغییرات در پایگاه کد، انتقال تغییرات موردنیاز برای اعمال کردن به نسخههای قدیمیتر دشوارتر است. بنابراین، درحالیکه ممکن است تعداد وصلههای کلی اعمالشده کمتر باشد، تلاش لازم برای حفظ هسته LTS بیشتر از حفظ هسته پایدار معمولی است.
قوانین وصله هسته پایدار
قوانین مربوط به آنچه که میتواند به نسخه پایدار هسته اضافه شود، از زمان معرفی آن تقریباً یکسان باقی مانده است و در زیر خلاصه شده است:
- باید آشکارا درست و آزمایششده باشد.
- نباید بیشتر از ۱۰۰ خط باشد.
- فقط یک چیز باید اصلاح شود.
- باید چیزی را که بهعنوان مشکل گزارش شده است برطرف کنید.
- میتواند شناسه دستگاه جدید یا ویژگی غیرعادی برای سختافزار باشد، اما نباید کارایی جدید عمدهای اضافه کند.
- باید ازقبل در درخت لینوس توروالدز ادغام شده باشد.
قانون آخر، «باید ازقبل در درخت Linus Torvalds ادغام شده باشد»، از جامعه هسته در ازدست دادن اصلاحات جلوگیری میکند. انجمن هرگز نمیخواهد اصلاحیهای در نسخه هسته پایدار قرار بگیرد که قبلاً در درخت لینوس توروالدز نبوده است، تا هرکسی که ارتقا میدهد هرگز با پسرفت مواجه نشود. این کار از بروز بسیاری از مشکلاتی که پروژههای دیگر با حفظ شاخه پایدار و توسعهای ممکن است داشته باشند جلوگیری میکند.
بهروزرسانیهای هسته
انجمن هسته Linux به پایگاه کاربری خود قول داده است که هیچ ارتقایی هرگز چیزی را که در نسخه قبلی کار میکند خراب نمیکند. آن وعده هنوز هم امروز صادق است. پسرفت اتفاق میافتد، اما اینها اشکالاتی با بالاترین اولویت هستند و یا بهسرعت برطرف میشوند یا تغییری که باعث پسرفت شده است بهسرعت از درخت هسته Linux برگردانده میشود.
این وعده هم برای بهروزرسانیهای افزایشی هسته پایدار و هم برای بهروزرسانیهای عمده بزرگتر که هر سه ماه یکبار اتفاق میافتد صادق است. بااینحال، انجمن هسته فقط میتواند این قول را برای کدی بدهد که در درخت هسته Linux ادغام شده است. هر کدی که در هسته دستگاه ادغام شود و در نسخههای منتشرشده kernel.org نباشد ناشناخته است و تعامل با آن هرگز قابل برنامهریزی یا حتی قابلتصور نیست.
دستگاههای مبتنی بر Linux که مجموعههای وصله بزرگ دارند، هنگام بهروزرسانی به هستههای جدیدتر ممکن است با مشکلات جدی مواجه شوند، زیرا تعداد تغییرات بین هر نسخه زیاد است (۱۰ تا ۱۴ هزار تغییر در هر نسخه). مجموعههای وصله SoC بهویژه بهدلیل اندازه بزرگ و تغییرات سنگین در معماری خاص و گاهی اوقات در کد هسته، با بهروزرسانی به هستههای جدیدتر مشکل دارند. درنتیجه، اکثر فروشندگان SoC درحال استانداردسازی استفاده از نسخههای LTS برای دستگاههایشان هستند، که این امر به این دستگاهها امکان میدهد بهروزرسانیهای امنیتی و رفع اشکال را مستقیماً از انجمن هسته Linux دریافت کنند.
امنیت
هنگام انتشار هسته، انجمن هسته Linux تقریباً هرگز تغییرات خاصی را بهعنوان اصلاحات امنیتی اعلام نمیکند. این امر بهدلیل مشکل اساسی در تعیین اینکه آیا یک اصلاح اشکال در زمان ایجاد یک اصلاح امنیتی است یا خیر، رخ میدهد. همچنین، بسیاری از رفع اشکالها تنها پساز گذشت زمان زیادی بهعنوان مرتبط با امنیت تعیین میشوند، بنابراین انجمن هسته بهشدت توصیه میکند که همیشه همه رفع اشکالهای منتشرشده را دریافت کنید.
وقتی مشکلات امنیتی به انجمن هسته گزارش میشود، این مشکلات در اسرع وقت برطرف میشوند و بهصورت عمومی در درخت توسعه و نسخههای پایدار منتشر میشوند. همانطور که در بالا توضیح داده شد، تغییرات تقریباً هیچگاه بهعنوان «اصلاح امنیتی» توصیف نمیشوند، بلکه بیشتر شبیه به هر اصلاح اشکال دیگری برای هسته بهنظر میرسند. این کار برای این انجام میشود که طرفهای تحتتأثیر قرارگرفته بتوانند سیستمهایشان را قبلاز اینکه گزارشدهنده مشکل آن را اعلام کند بهروز کنند.
برای جزئیات گزارش کردن اشکالات امنیتی به انجمن هسته برای برطرف و رفع کردن آنها در اسرع وقت، به اشکالات امنیتی در راهنمای کاربر و سرپرست هسته Linux در www.kernel.org مراجعه کنید.
ازآنجاییکه اشکالات امنیتی توسط تیم هسته به عموم اعلام نمیشود، شمارههای CVE برای مشکلات مربوط به هسته Linux معمولاً هفتهها، ماهها، و گاهی سالها پساز ادغام اصلاح در شاخههای پایدار و توسعه منتشر میشوند.
سیستم ایمنی را حفظ کنید
هنگام استقرار دستگاهی که از Linux استفاده میکند، قویاً توصیه میکنیم که همه بهروزرسانیهای هسته LTS توسط سازنده انجام شود و پساز آزمایشهای مناسب که نشان دهد بهروزرسانی بهخوبی کار میکند، برای کاربران ارسال شود. این کار چند مزیت دارد:
- نسخههای پخششده توسط توسعهدهندگان هسته بهطور کلی بازبینی شدهاند، نه بهصورت بخشهای جداگانه.
- تعیین اینکه کدام وصلهها مشکلات «امنیتی» را برطرف میکنند و کدام نمیکنند دشوار است. تقریباً هر نسخه LTS حداقل یک اصلاح امنیتی شناختهشده دارد و بسیاری از آنها هنوز «ناشناخته» هستند.
- اگر آزمایش مشکلی را نشان دهد، انجمن توسعهدهندگان هسته بهسرعت برای حل مشکل اقدام میکنند.
- تلاش برای فیلتر کردن فقط تغییراتی که اجرا میکنید منجر به درخت هستهای میشود که ادغام صحیح آن با نسخههای بالادستی آینده غیرممکن است.