الدرس 2 من 7 · التاريخ
عائلة UNIX — BSD و System V ومعيار POSIX
الهدف
أن تفهم كيف انقسم 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. ثم انقر على تحقّق.
اختبار قصير
- ما الفرعان الكبيران لنظام UNIX، ومن أنشأ كل واحد منهما؟
- اذكر إسهامين كبيرين لـ BSD ستستعملهما على Linux.
- ما هو POSIX، ولماذا هو مفيد لمدير الأنظمة؟
- هل يحق لـ Linux أن يحمل رسميًّا اسم «UNIX»؟ لماذا؟
- لماذا استفاد Linux من قضية USL ضد BSDi (1992-1994)؟
الأجوبة
- BSD، الذي أُنشئ في جامعة Berkeley (بيل جوي وزملاؤه)، و System V، النسخة التجارية لشركة AT&T.
- حسب الاختيار: حزمة الشبكة TCP/IP و sockets، ومحرّر النصوص
vi، والصدفةcsh(سجلّ الأوامر، التحكم في المهام)، ونظام الملفات السريع، ومؤخرًا OpenSSH (OpenBSD). - معيار (IEEE، 1988) يحدّد الأوامر والصدفة واستدعاءات النظام في نظام من نوع UNIX. والسكربت أو المهارة المتوافقة مع POSIX تعمل على Linux و BSD و macOS…
- لا: «UNIX» علامة محفوظة للأنظمة المعتمَدة من طرف The Open Group. يتبع Linux معيار POSIX لكنه غير معتمَد: إنه نظام «من نوع UNIX».
- طوال سنتين كان مستقبل BSD القانوني غامضًا؛ فاتجه المطوّرون والشركات نحو Linux، الحر والخالي من أي خطر قانوني.
المصادر المرجعية: M. K. McKusick (Open Sources، 1999)، ووثائق تقييس POSIX و The Open Group، و Debian Reference (رخصة حرة). نص أصلي من MasterLinux.