الدرس 4 من 7 · التاريخ
سنة 1991 — لينوس تورفالدس ونواة Linux
الهدف
أن تعرف كيف كتب طالب، كأنه يلعب تقريبًا، النواة التي تشغّل اليوم أغلب خوادم العالم، وأن تفهم كيف تُطوَّر هذه النواة وكيف تُرقَّم إصداراتها. وستصبح قادرًا على قراءة إصدار مثل 5.14.0-427.el9.x86_64.
الخلاصة
- في سنة 1991 كتب لينوس تورفالدس (Linus Torvalds)، الطالب في جامعة هلسنكي (Helsinki)، نواةً لحاسوبه الشخصي، مستلهمًا نظام Minix.
- أعلن عنها في 25 أغسطس 1991؛ وصدر الإصدار 0.01 في سبتمبر 1991.
- في سنة 1992 انتقل Linux إلى رخصة GPL: ومع أدوات GNU، أصبح أخيرًا نظام حر بالكامل موجودًا.
- صدر Linux 1.0 في مارس 1994. واليوم يساهم فيه آلاف المطوّرين، العاملين في مئات الشركات.
- يصدر إصدار جديد تقريبًا كل 9 إلى 10 أسابيع؛ وبعض الإصدارات تُصان مدة طويلة: إنها إصدارات LTS (الدعم الطويل الأمد).
1. ما هي النواة؟
النواة (kernel) هي البرنامج المركزي للنظام. تنطلق أولًا ولا تتوقف إلا عند إطفاء الجهاز. وهي حلقة الوصل بين البرامج والعتاد:
أنت ──► bash, ls, nginx, mysql… (البرامج)
│ « استدعاءات النظام »: القراءة، الكتابة، الفتح، إنشاء عملية
▼
┌──────────────┐
│ LINUX KERNEL │ الذاكرة، العمليات، الأقراص، الشبكة، التعريفات
└──────────────┘
│
▼
المعالج، الذاكرة، الأقراص، بطاقة الشبكة (العتاد)
عندما يريد ls قراءة مجلد، فإنه لا يخاطب القرص: بل يطلب ذلك من النواة. وهذا ما يسمح لألف برنامج باقتسام الآلة نفسها دون أن يدوس بعضها على بعض.
2. نظام Minix، UNIX الطلبة (1987)
في أواخر الثمانينيات كان UNIX غاليًا، ولم تعد شيفرته تُنشر بحرية. فكتب الأستاذ أندرو تانينباوم (Andrew Tanenbaum)، في الجامعة الحرة بأمستردام، نظام UNIX صغيرًا تعليميًّا لطلبته: Minix (1987). وكان يُوزَّع مع كتابه الدراسي حول أنظمة التشغيل، بما في ذلك الشيفرة المصدرية.
لكن Minix كان له حدّان: رخصته لا تسمح بتعديله وإعادة توزيعه بحرية، وتانينباوم أراد أن يبقيه بسيطًا لأغراض التعليم. فكان يرفض كثيرًا من التحسينات التي يقترحها مستخدموه.
3. سنة 1991: طالب من هلسنكي
وُلد لينوس تورفالدس سنة 1969 في هلسنكي. وفي يناير 1991 اشترى حاسوبًا شخصيًّا مزوّدًا بمعالج Intel 386. ثبّت عليه Minix وأراد أن يفهم كيف يعمل هذا المعالج الجديد. فبدأ ببرنامج صغير يعرض حرفَي «A» و«B» بالتناوب، لاختبار الانتقال من مهمة إلى أخرى. ثم كتب محاكي طرفية للاتصال بالجامعة. ثم تعريفًا (pilote) للقرص… فانتبه إلى أنه بصدد كتابة نواة.
وفي 25 أغسطس 1991 نشر رسالة على منتدى Usenet comp.os.minix. أعلن فيها عن نظام تشغيل حر لحواسيب 386، موضّحًا أنه «just a hobby, won't be big and professional like gnu» («مجرد هواية، ولن يكون كبيرًا ومحترفًا مثل GNU»). وسأل القرّاء عمّا يودّون أن يجدوه فيه.
ووُضع الإصدار 0.01 على خادم تابع لجامعة هلسنكي (ftp.funet.fi) في سبتمبر 1991. كان لينوس يريد تسميته Freax (free + freak + x)؛ لكن مدير الخادم، آري ليمكه (Ari Lemmke)، وضع الملفات في مجلد اسمه linux. فبقي الاسم.
ومنذ هذا الإصدار الأول، كان Linux يشغّل bash و gcc، وهما أداتان من GNU (الدرس 0.3).
4. سنة 1992: رخصة GPL والجدال مع تانينباوم
كانت أول رخصة وضعها لينوس تمنع أي استعمال تجاري. وفي بداية 1992، مع الإصدار 0.12، أعلن الانتقال إلى رخصة GPL (الإصدار 2). ومنذ ذلك الحين يمكن لأي شخص استعمال Linux وتعديله وإعادة توزيعه، شرط أن يشارك تعديلاته. وبنواة Linux وأدوات GNU أصبح أخيرًا نظام حر كامل موجودًا. وسيقول لينوس لاحقًا إن اختيار GPL كان من أفضل القرارات التي اتخذها.
وفي يناير 1992 نشر تانينباوم على المنتدى نفسه رسالة بعنوان «LINUX is obsolete» («LINUX متجاوَز»). وكان له مأخذان:
| انتقاد تانينباوم | جواب التاريخ |
|---|---|
| Linux نواة أحادية (monolithique، النواة كلها في كتلة واحدة)، وهو تصميم متجاوَز في رأيه؛ والمستقبل في نظره للنوى المصغّرة (micro-noyaux) | بقي Linux أحاديًّا، لكنه معياري (modulaire): التعريفات تُحمَّل عند الحاجة (lsmod، modprobe) |
| Linux مرتبط أكثر من اللازم بمعالج 386 ولن يكون قابلًا للنقل | يعمل Linux اليوم على x86 و ARM و POWER و IBM Z و RISC-V… أي على منصات أكثر من أي نظام آخر |
وبقي هذا النقاش المهذّب والحادّ في آن واحد مشهورًا. وهو يبيّن أن Linux لم يكن «الأفضل» على الورق؛ بل انتصر لأنه كان حرًّا، وعمليًّا، ومفتوحًا للمساهمات.
5. النواة تكبر (1992-2011)
كان التوقيت مثاليًّا: BSD مجمَّد بسبب قضيته (الدرس 0.2)، و Hurd الخاص بـ GNU لا يتقدّم، والإنترنت يصل إلى الجامعات. فأخذ مئات المطوّرين يرسلون تصحيحاتهم إلى لينوس.
| الإصدار | التاريخ | الجديد البارز |
|---|---|---|
| 0.01 | سبتمبر 1991 | أول إصدار علني |
| 0.12 | بداية 1992 | الانتقال إلى GPL |
| 1.0 | مارس 1994 | أول إصدار يُعدّ مستقرًّا؛ شبكة TCP/IP |
| 2.0 | يونيو 1996 | تعدّد المعالجات (SMP)؛ ظهور التميمة Tux، البطريق |
| 2.2 | يناير 1999 | دعم أفضل لتعدّد المعالجات |
| 2.4 | يناير 2001 | USB، وكميات كبيرة من الذاكرة: Linux يدخل الشركات |
| 2.6 | ديسمبر 2003 | نموذج تطوير جديد؛ نواة RHEL 5 و RHEL 6 (2.6.32) |
| 3.0 | يوليو 2011 | تغيير الرقم احتفالًا بمرور 20 سنة على Linux، دون قطيعة تقنية |
وفي سنة 2005 حرم نزاع حول الترخيص المطوّرين من الأداة التي كانوا يستعملونها لإدارة الشيفرة (BitKeeper). وفي بضعة أسابيع كتب لينوس أداته الخاصة: Git. واليوم يستعمل Git جميع المطوّرين في العالم تقريبًا (GitHub و GitLab…). إنه الاختراع الكبير الثاني للينوس.
6. كيف تُطوَّر النواة اليوم
نواة Linux هي على الأرجح أكبر مشروع تعاوني في تاريخ البرمجيات: أكثر من 30 مليون سطر من الشيفرة، وآلاف المساهمين في كل إصدار، ومعظمهم يتقاضون أجورهم من مشغّليهم (Intel و Google و Red Hat و AMD و Meta و Huawei و SUSE و Linaro…).
دورة منتظمة
صدور الإصدار 6.N
│
├── أسبوعان: « نافذة الدمج » (merge window)
│ الجديد الذي أعدّه المشرفون يدخل إلى النواة
│
├── 6.(N+1)-rc1, rc2, … rc7 (وأحيانًا rc8): « إصدار مرشَّح » (release candidate) كل أسبوع
│ لا جديد بعد الآن، فقط تصحيحات للعلل
│
└── بعد نحو 9 إلى 10 أسابيع: صدور الإصدار 6.(N+1)
وهذا يعطي 5 إلى 6 إصدارات في السنة. وليس هناك تاريخ ثابت: لينوس ينشر الإصدار حين يكون جاهزًا.
هرم من المشرفين
لا يراجع لينوس كل شيء بنفسه. فالنواة مقسَّمة إلى أنظمة فرعية (الشبكة، وأنظمة الملفات، وتعريفات الرسوميات، و USB، والأمان…). ولكل منها مشرفون (mainteneurs)، مذكورون في الملف MAINTAINERS داخل الشيفرة المصدرية. يرسل المساهمون تصحيحاتهم بالبريد الإلكتروني إلى المشرف المناسب؛ فيراجعها ويختبرها، ثم يرفعها إلى المستوى الأعلى. ويدمج لينوس عمل المشرفين الرئيسيين.
Mainline و stable و longterm
على kernel.org سترى عدة أنواع من الإصدارات:
| الفئة | ما هي | من يصونها |
|---|---|---|
| mainline | إصدار التطوير الخاص بلينوس (مثال: 6.N-rc3) |
لينوس تورفالدس |
| stable | آخر إصدار منشور، مع تصحيحات (مثال: 6.N.4) إلى حين صدور الإصدار التالي |
غريغ كروا-هارتمان (Greg Kroah-Hartman) وفريق stable |
| longterm (LTS) | عادةً آخر إصدار في كل سنة، يُصحَّح طوال عدة سنوات | مشرفون متطوّعون |
ومنذ سنة 2023 أصبحت إصدارات LTS الجديدة على kernel.org معلنة لمدة سنتين تقريبًا (مقابل ست سنوات لبعضها في السابق)، لعدم توفّر الإمكانات لصيانة أكثر من ذلك. وتتكفّل مشاريع مثل CIP (Civil Infrastructure Platform) بصيانة بعض الإصدارات طوال عشر سنوات لفائدة الصناعة.
ورقم الخانة الأولى لا يعني شيئًا من الناحية التقنية: يغيّره لينوس عندما يصبح الرقم الثاني كبيرًا جدًّا (3.0 سنة 2011، و 4.0 سنة 2015، و 5.0 سنة 2019، و 6.0 سنة 2022…).
7. نوى التوزيعات
توزيعات الشركات لا تتبع آخر إصدار على kernel.org. بل تختار إصدارًا عند إطلاقها وتصونه بنفسها طوال عمر المنتج، فتضيف إليه تصحيحات الأمان بل وحتى ميزات جديدة (نقول إنها «تنقلها إلى الوراء»، rétroportage أو backport).
| التوزيعة | النواة الأساسية |
|---|---|
| RHEL 6 / CentOS 6 | 2.6.32 |
| RHEL 7 / CentOS 7 | 3.10 |
| RHEL 8 / Rocky 8 / Alma 8 | 4.18 |
| RHEL 9 / Rocky 9 / Alma 9 | 5.14 |
| RHEL 10 / Alma 10 | 6.12 |
| Debian 12 « bookworm » | 6.1 |
| Debian 13 « trixie » | 6.12 |
| Ubuntu 22.04 LTS | 5.15 |
| Ubuntu 24.04 LTS | 6.8 |
كيف تقرأ إصدار نواة من Red Hat:
uname -r
# 5.14.0-427.13.1.el9_4.x86_64
# 5.14.0 → الإصدار الأساسي الذي اختارته Red Hat (kernel.org 5.14)
# 427.13.1 → رقم البناء لدى Red Hat: مئات التصحيحات المضافة
# el9_4 → « Enterprise Linux 9 »، التحديث 9.4
# x86_64 → المعمارية (حاسوب 64 بت)
فنواة 5.14 الخاصة بـ RHEL 9 في سنة 2025 مختلفة جدًّا إذن عن نواة 5.14 على kernel.org في سنة 2021: إنها تحتوي على سنوات من التصحيحات.
8. الخط الزمني للدرس
1987 Minix (أندرو تانينباوم)
1991 يناير: لينوس يشتري حاسوبه 386 — 25 أغسطس: الإعلان — سبتمبر: Linux 0.01
1992 Linux ينتقل إلى GPL (0.12)؛ نقاش « LINUX is obsolete »
1994 Linux 1.0 (مارس)
1996 Linux 2.0؛ التميمة Tux
2003 Linux 2.6
2005 لينوس يبتكر Git
2007 تأسيس Linux Foundation (التي تشغّل لينوس)
2011 Linux 3.0، بمناسبة مرور 20 سنة
2022 Linux 6.0؛ أولى العناصر بلغة Rust داخل النواة (6.1)
أخطاء متكررة
- الخلط بين إصدار النواة وإصدار التوزيعة. الأمر
uname -rيعطي النواة؛ والملف/etc/os-releaseيعطي التوزيعة. فـ Rocky 9.4 و Rocky 9.5 لهما النواة الأساسية نفسها 5.14. - الاعتقاد بأن رقم نواة قديمًا يعني «غير محدَّث». نواة 4.18 في RHEL 8 ما زالت تتلقى تصحيحات أمنية. المهم هو تاريخ الحزمة، لا الرقم الأساسي.
- تثبيت «آخر نواة من kernel.org» على خادم شركة. ستفقد دعم الناشر، وقد تتوقف الوحدات الخارجية (التعريفات، برامج مكافحة الفيروسات) عن العمل.
- الاعتقاد، داخل حاوية (conteneur)، بأن النواة هي نواة التوزيعة. الحاوية تتقاسم نواة الآلة المضيفة. وستلاحظ ذلك في التطبيق العملي.
التطبيق العملي (Lab)
أنت على آلة Ubuntu 24.04. استجوب النواة:
uname -r # إصدار النواة
uname -r | cut -d. -f1 # العدد الأول فقط
cat /proc/sys/kernel/ostype # المكان الذي يبحث فيه uname عن أجوبته
cat /proc/sys/kernel/osrelease
grep PRETTY_NAME /etc/os-release # التوزيعة
مفاجأة: آلة التطبيق هذه حاوية. التوزيعة هي فعلًا Ubuntu 24.04، لكن النواة المعروضة ليست نواة 6.8 الخاصة بـ Ubuntu: إنها نواة الآلة التي تستضيف التطبيق. فالحاوية تستعير نواة مضيفها؛ أما البرامج والملفات وحدها فهي من Ubuntu. أنجز المهام، ثم انقر على تحقّق.
اختبار قصير
- ما النظام الذي كان لينوس تورفالدس يستعمله قبل كتابة Linux، ومن أنشأه؟
- لماذا كان الانتقال إلى رخصة GPL سنة 1992 بهذه الأهمية؟
- ما هي «نافذة الدمج» في تطوير النواة؟
- ما الفرق بين إصدار stable وإصدار longterm (LTS) على kernel.org؟
- خادم RHEL 9 يعرض
5.14.0-503.el9.x86_64. لماذا ليس «متأخرًا» مع أن kernel.org يقترح إصدارات 6.x؟
الأجوبة
- Minix، نظام UNIX صغير تعليمي أنشأه الأستاذ أندرو تانينباوم (1987).
- تسمح رخصة GPL للجميع باستعمال Linux وتعديله وإعادة توزيعه مع إلزامهم بمشاركة التحسينات؛ فاجتذبت المساهمين وسمحت بربط النواة بأدوات GNU لتكوين نظام حر بالكامل.
- الأسبوعان اللذان يليان صدور إصدار، وخلالهما يدخل الجديد إلى النواة؛ ثم تأتي إصدارات
-rcالمخصّصة للتصحيحات. - الإصدار stable يُصحَّح فقط إلى حين صدور الإصدار التالي؛ أما الإصدار longterm فيُصحَّح طوال عدة سنوات.
- اختارت Red Hat الأساس 5.14 وتصونه بنفسها بإضافة تصحيحات الأمان والميزات الجديدة (والعدد
503يدل على ذلك). فالرقم الأساسي لا يخبرك هل النواة محدَّثة أم لا.
المصادر المرجعية: توثيق نواة Linux (docs.kernel.org، GPL-2.0)، و kernel.org، وكتاب «Just for Fun» للينوس تورفالدس. نص أصلي من MasterLinux.