من UNIX إلى Linux: التاريخ الذي يفسّر كل شيء
خروج

الدرس 2 من 7 · التاريخ

عائلة UNIX — BSD و System V ومعيار POSIX

30 د Debian 12

الهدف

أن تفهم كيف انقسم UNIX إلى عدة فروع متنافسة، ولماذا أصبح معيار مشترك (POSIX) ضروريًّا، ولماذا يعمل جزء كبير مما تتعلمه على Linux أيضًا على macOS أو FreeBSD.

الخلاصة

  • في جامعة Berkeley أصبح UNIX هو BSD: هناك وُلدت شبكة TCP/IP، ومحرّر النصوص vi، والصدفة csh.
  • بعد تفكيك AT&T (1984)، صارت الشركة تبيع نسختها الرسمية: System V.
  • أنشأ كل مُصنِّع نظام UNIX خاصًّا به ومدفوعًا (Solaris و AIX و HP-UX…)، غير متوافق مع الأنظمة الأخرى: إنها «حروب UNIX».
  • معيار POSIX (1988) يحدّد ما يجب أن يوفّره نظام «من نوع UNIX»؛ و Linux يتبعه عن قرب.
  • قضية قضائية (1992-1994) جمّدت BSD في اللحظة نفسها التي وُلد فيها Linux، فدفعت كثيرًا من المطوّرين نحو Linux.

1. جامعة Berkeley تتسلّم UNIX (1974-1977)

كما رأيت في الدرس 0.1، كانت AT&T توزّع UNIX على الجامعات مع شيفرته المصدرية. وقد ثبّتته جامعة كاليفورنيا في بيركلي (Berkeley) سنة 1974. بل إن كين تومسون قضى فيها سنة تفرّغ (1975-1976) أستاذًا زائرًا.

وبدأ طالب اسمه بيل جوي (Bill Joy) في تحسين النظام. وفي سنة 1978 نشر أول مجموعة من البرامج: Berkeley Software Distribution، أو BSD. في البداية كانت مجرد إضافة إلى UNIX الخاص بـ AT&T؛ ثم أصبحت شيئًا فشيئًا نظامًا كاملًا.

ما قدّمه BSD، وما ستستعمله على Linux:

إسهام Berkeley ما ستفعله به على Linux
محرّر النصوص vi (بيل جوي، 1976) vi وخليفته vim موجودان على كل الخوادم تقريبًا
الصدفة csh أقل استعمالًا اليوم، لكن سجلّ الأوامر والتحكم في المهام (jobs، fg، bg) يعودان إلى تلك الحقبة
حزمة الشبكة TCP/IP و sockets (4.2BSD، 1983) الشبكة الحديثة كلها: ssh، وخوادم الويب، والإنترنت بأكمله
نظام الملفات السريع (FFS) فكرة الكتل و inodes التي أخذتها ext2 و ext3 و ext4

وكان وصول TCP/IP منعطفًا: فالوكالة العسكرية الأمريكية DARPA، التي كانت تموّل الإنترنت المستقبلي، اختارت BSD نظامًا مرجعيًّا في بداية الثمانينيات. لقد كبر UNIX والإنترنت معًا.

2. AT&T تدخل التجارة: System V (1983)

في سنة 1982 نصّ اتفاق مع القضاء الأمريكي على تفكيك AT&T، وهو ما دخل حيّز التنفيذ في 1 يناير 1984. وفي المقابل، حصلت الشركة أخيرًا على حق بيع المعلوميات.

فطرحت AT&T في السوق نسختها الرسمية من UNIX: System III (1982)، ثم System V (1983)، مع «إصداراته» المتتالية (Release 2, 3, 4). أما الإصدار SVR4 (System V Release 4، أواخر الثمانينيات)، الذي طُوّر بالتعاون مع Sun، فقد جمع جزءًا كبيرًا من أفكار BSD و System V.

وعدد من عادات Linux يأتي من System V:

ls /etc/init.d/       # سكربتات الإقلاع « على طريقة System V » (RHEL 6، و Debian القديم)
ps -ef                # صيغة System V للأمر ps (مع شرطة)
ps aux                # صيغة BSD للأمر ps (بدون شرطة) — و Linux يقبل الاثنتين!

وكون الأمر ps يقبل أسلوبين من الخيارات ذكرى حيّة لهذا الأصل المزدوج.

3. أنظمة UNIX التجارية (الثمانينيات والتسعينيات)

أخذ كل مُصنِّع كبير ترخيص UNIX وأنشأ نسخته الخاصة، المكيّفة مع آلاته (والمبيعة معها):

النظام الناشر الأساس هل ما زال مستعملًا؟
SunOS ثم Solaris Sun Microsystems (اشترتها Oracle سنة 2010) BSD، ثم System V R4 (Solaris، 1992) في بعض الشركات الكبرى
AIX IBM (ابتداءً من 1986) System V نعم، على خوادم IBM Power (البنوك، شركات التأمين)
HP-UX Hewlett-Packard System V في نهاية عمره
IRIX Silicon Graphics System V متروك (سنوات الألفين)
Xenix Microsoft، ثم SCO System V متروك
Ultrix، Tru64 DEC BSD، ثم OSF/1 متروكان

وحالة Sun مثيرة للاهتمام: فقد شارك في تأسيس الشركة سنة 1982… بيل جوي نفسه، صاحب BSD. وكانت محطات Sun هي الآلات المرجعية في الجامعات وفي الإنترنت خلال الثمانينيات والتسعينيات.

4. «حروب UNIX» (1988-1993)

كل واحد من أنظمة UNIX هذه يضيف أوامره وخياراته وأدواته الخاصة. فالبرنامج المكتوب لنظام AIX يجب تعديله ليعمل على HP-UX. ومدير الأنظمة المكوَّن على Solaris يضيع على IRIX.

وفي أواخر الثمانينيات تواجه معسكران:

          AT&T + Sun                       IBM و DEC و HP وآخرون
   (System V Release 4, 1988-1989)       (Open Software Foundation, 1988)
       « UNIX International »                     « OSF/1 »
                   \                               /
                    \___ عدم توافق، قضايا،       ___/
                          زبائن ضائعون

وبينما كان المصنّعون يتنازعون، كان منافس يتقدّم بهدوء على الحواسيب الشخصية: Microsoft Windows NT (1993). ودون أن يتوقع أحد ذلك بعد، بدأ طالب فنلندي سنة 1991 في كتابة نواة على حاسوبه الشخصي…

5. POSIX: القاعدة المشتركة (1988)

للخروج من الفوضى، نشرت هيئة التقييس IEEE سنة 1988 معيار POSIX (IEEE 1003.1). والاسم، الذي اقترحه ريتشارد ستولمان (الذي ستلتقي به في الدرس 0.3)، يعني تقريبًا Portable Operating System Interface (واجهة نظام تشغيل قابلة للنقل)، مع حرف «X» إشارةً إلى UNIX.

يصف POSIX ما يجب أن يوفّره نظام من نوع UNIX، دون أن يحدّد طريقة برمجته:

يحدّد POSIX… أمثلة
استدعاءات النظام (appels système) التي يمكن للبرامج استعمالها فتح ملف، إنشاء عملية (processus)
لغة الصدفة if، for، case، وإعادات التوجيه > و `
الأوامر الأساسية وخياراتها ls، cp، grep، sed، awk، find
الصلاحيات والإشارات (signaux) chmod 755، kill -9

ولاحقًا نشرت هيئة The Open Group (المالكة لعلامة «UNIX» منذ التسعينيات) مواصفة Single UNIX Specification. ولا يحق إلا للأنظمة المعتمَدة التي تدفع الترخيص أن تحمل رسميًّا اسم «UNIX». وهذا حال macOS (معتمَد منذ الإصدار 10.5، سنة 2007)، و AIX، و Solaris.

Linux غير معتمَد بصفة UNIX (فالاعتماد مكلف ولا يضيف شيئًا لمشروع حر)، لكنه يتبع POSIX عن قرب شديد. ولهذا نقول إن Linux نظام «من نوع UNIX» (Unix-like).

getconf _POSIX_VERSION    # أي إصدار من POSIX؟ مثال: 200809 = طبعة 2008

نصيحة عملية لمسارك المهني كله: عندما تكتب سكربتًا يجب أن يعمل في كل مكان، اكتبه بلغة sh المتوافقة مع POSIX بدل الحيل الخاصة بـ bash. وعلى Debian و Ubuntu، الملف /bin/sh هو في الواقع dash، وهي صدفة POSIX مصغّرة: فقد يفشل فيها سكربت «bash» يُشغَّل بالأمر sh.

6. القضية التي عطّلت BSD (1992-1994)

في أواخر الثمانينيات شرع مطوّرو Berkeley في استبدال كل الشيفرة الأصلية الخاصة بـ AT&T داخل BSD، حتى يتمكنوا من نشره بحرية. وفي سنة 1991 صدر Net/2، وكان حرًّا بالكامل تقريبًا. وتفرّعت عنه مشاريع: 386BSD (1992) للحواسيب الشخصية، وشركة BSDi التي كانت تبيع نسخة تجارية.

وفي سنة 1992 رفعت USL (Unix System Laboratories، فرع UNIX التابع لـ AT&T) دعوى قضائية ضد BSDi، ثم ضد جامعة كاليفورنيا: بدعوى أن BSD ما زال يحتوي على شيفرة وأسرار تابعة لـ AT&T. وطوال سنتين لم يكن أحد يعرف هل سيستمر توزيع BSD. فتردّدت الشركات في استعماله.

وفي سنة 1993 اشترت Novell شركة USL. وانتهت القضية باتفاق في بداية 1994: سُحبت بعض الملفات أو عُدّلت، ونشرت Berkeley إصدار 4.4BSD-Lite (1994)، الخالي من أي شيفرة تابعة لـ AT&T.

لكن خلال سنتَي الغموض هاتين، تقدّم نظام آخر، حر وبلا أي خطر قانوني، بسرعة كبيرة: إنه Linux. وقد قالها لينوس تورفالدس (Linus Torvalds) بنفسه: لو كان نظام BSD حر للحواسيب الشخصية متاحًا في ذلك الوقت، لربما لم يكتب نواته أبدًا.

7. أحفاد BSD اليوم

Net/2 (1991) و 386BSD (1992)، ثم 4.4BSD-Lite (1994)
 ├── FreeBSD (1993) ── خوادم، Netflix (بث الفيديو)، أساس نظام أجهزة PlayStation الحديثة
 ├── NetBSD  (1993) ── « يعمل على كل شيء »، قابل للنقل جدًّا
 │     └── OpenBSD (1995) ── الأمان أولًا؛ أنشأ OpenSSH (1999)
 └── NeXTSTEP / Darwin ── أساس macOS و iOS (مع النواة المصغّرة Mach)

وُلد FreeBSD و NetBSD سنة 1993 من 386BSD؛ وبعد اتفاق 1994 أُعيد بناؤهما على 4.4BSD-Lite.

فربما تستعمل BSD من دون أن تعلم: macOS و iOS ينحدران منه، و OpenSSH، الذي ستستعمله على كل خادم Linux، يطوّره فريق OpenBSD.

8. الخط الزمني للدرس

1974  جامعة Berkeley تتسلّم UNIX
1978  أول توزيعة BSD (بيل جوي)
1982  تأسيس Sun؛ اتفاق تفكيك AT&T؛ System III
1983  System V (AT&T)؛ 4.2BSD يأتي بـ TCP/IP
1984  تفكيك AT&T: UNIX يصبح منتجًا تجاريًّا
1986  AIX (IBM)
1988  POSIX (IEEE 1003.1)؛ إنشاء OSF؛ بداية « حروب UNIX »
1991  Net/2؛ لينوس تورفالدس يبدأ Linux
1992  قضية USL ضد BSDi؛ Solaris 2 (على أساس System V R4)
1993  FreeBSD و NetBSD؛ Novell تشتري USL
1994  الاتفاق: 4.4BSD-Lite، خالٍ من شيفرة AT&T

أخطاء متكررة

  • الاعتقاد بأن أمرًا رأيته على macOS سيعمل بالطريقة نفسها على Linux. كلاهما يتبع POSIX، لكن الخيارات تختلف في الغالب: الأمر sed -i يُكتب sed -i '' على macOS (أدوات BSD)، و sed -i على Linux (أدوات GNU).
  • الخلط بين «UNIX» و«من نوع UNIX». «UNIX» علامة تجارية محفوظة للأنظمة المعتمَدة. أما Linux و FreeBSD فهما «من نوع UNIX».
  • كتابة #!/bin/sh في رأس سكربت مليء بصيغ bash. على Debian و Ubuntu، sh هو dash: فالمصفوفات أو [[ … ]] تفشل فيه. اكتب #!/bin/bash إن كنت تستعمل bash.
  • الظن بأن سكربتات /etc/init.d/ ما زالت مستعملة دائمًا. إنها من إرث System V؛ ومنذ RHEL 7 و Debian 8 أصبح systemd هو الذي يشغّل الخدمات.

التطبيق العملي (Lab)

هذه المرة أنت على Debian 12. ستتحقق بنفسك من إرث POSIX في النظام:

getconf _POSIX_VERSION    # إصدار POSIX المتَّبع
ls -l /bin/sh             # إلى أي صدفة يشير /bin/sh ؟
ps -ef | head -n 3        # صيغة System V
ps aux | head -n 3        # صيغة BSD: النتيجة نفسها تقريبًا

المهام: حفظ إصدار POSIX، واكتشاف الصدفة المختبئة وراء /bin/sh، وتدوين الفرعين الكبيرين لنظام UNIX. ثم انقر على تحقّق.


اختبار قصير

  1. ما الفرعان الكبيران لنظام UNIX، ومن أنشأ كل واحد منهما؟
  2. اذكر إسهامين كبيرين لـ BSD ستستعملهما على Linux.
  3. ما هو POSIX، ولماذا هو مفيد لمدير الأنظمة؟
  4. هل يحق لـ Linux أن يحمل رسميًّا اسم «UNIX»؟ لماذا؟
  5. لماذا استفاد Linux من قضية USL ضد BSDi (1992-1994)؟
الأجوبة
  1. BSD، الذي أُنشئ في جامعة Berkeley (بيل جوي وزملاؤه)، و System V، النسخة التجارية لشركة AT&T.
  2. حسب الاختيار: حزمة الشبكة TCP/IP و sockets، ومحرّر النصوص vi، والصدفة csh (سجلّ الأوامر، التحكم في المهام)، ونظام الملفات السريع، ومؤخرًا OpenSSH (OpenBSD).
  3. معيار (IEEE، 1988) يحدّد الأوامر والصدفة واستدعاءات النظام في نظام من نوع UNIX. والسكربت أو المهارة المتوافقة مع POSIX تعمل على Linux و BSD و macOS…
  4. لا: «UNIX» علامة محفوظة للأنظمة المعتمَدة من طرف The Open Group. يتبع Linux معيار POSIX لكنه غير معتمَد: إنه نظام «من نوع UNIX».
  5. طوال سنتين كان مستقبل BSD القانوني غامضًا؛ فاتجه المطوّرون والشركات نحو Linux، الحر والخالي من أي خطر قانوني.

المصادر المرجعية: M. K. McKusick (Open Sources، 1999)، ووثائق تقييس POSIX و The Open Group، و Debian Reference (رخصة حرة). نص أصلي من MasterLinux.

تمارين تطبيقية

تُنجَز على Debian 12

الطرفية عبر الإنترنت قادمة قريبًا. في انتظار ذلك، أنجِز هذه المهام على جهازك بنظام لينكس أو على آلة افتراضية أو WSL.

  1. اسأل النظام عن إصدار معيار POSIX الذي يحترمه (getconf _POSIX_VERSION) واحفظ الجواب في /root/posix.txt
    عرض تلميحgetconf _POSIX_VERSION > /root/posix.txt — الجواب تاريخ بصيغة AAAAMM (السنة ثم الشهر).
    عرض الحل
    getconf _POSIX_VERSION > /root/posix.txt

    التحقق : grep -qx '[0-9][0-9][0-9][0-9][0-9][0-9]' /root/posix.txt

  2. على Debian، الملف /bin/sh رابط نحو صدفة (shell) صغيرة متوافقة مع POSIX. احفظ نتيجة الأمر ls -l /bin/sh في /root/sh.txt
    عرض تلميحالأمر ls -l يعرض وجهة الرابط بعد السهم -> ؛ أضف > /root/sh.txt
    عرض الحل
    ls -l /bin/sh > /root/sh.txt

    التحقق : grep -q dash /root/sh.txt

  3. اكتب في /root/branches.txt الفرعين الكبيرين لنظام UNIX، كل واحد في سطر: BSD ثم System V
    عرض تلميحالأمر printf يكتب عدة أسطر: printf 'BSD\nSystem V\n' > /root/branches.txt
    عرض الحل
    printf 'BSD\nSystem V\n' > /root/branches.txt

    التحقق : grep -qix bsd /root/branches.txt && grep -qix 'system v' /root/branches.txt

المراجع الرسمية المعتمدة: M. K. McKusick, « Twenty Years of Berkeley Unix » (Open Sources, O'Reilly, 1999) ; IEEE Std 1003.1 (POSIX) et The Open Group — Single UNIX Specification ; Debian Reference — chapitre 1. نص أصلي من MasterLinux.