لماذا لا يزال نظام لينكس مثيرًا للانقسام بعد كل هذه السنوات
يبلغ عمر systemd 10 سنوات ، لكن المشاعر تجاهه في مجتمع Linux لم تهدأ – إنه مثير للانقسام الآن كما كان من قبل. على الرغم من استخدامه من قبل العديد من توزيعات Linux الرئيسية ، إلا أن المعارضة المتشددة لم تتراجع.
تسلسل تمهيد Linux
عند تشغيل جهاز الكمبيوتر الخاص بك ، يتم تمهيد الجهاز ، ثم (وفقًا لنوع قسم الاحذية يستخدم جهاز الكمبيوتر الخاص بك) إما ملف سجل التمهيد الرئيسي (MBR) ينفذ أو الواجهة الموحدة للبرمجيات الممتدة (UEFI) يعمل. الإجراء الأخير لكليهما هو إطلاق نواة لينكس.
يتم تحميل النواة في الذاكرة ، ويفك ضغط نفسه ، ويهيئ. أ نظام الملفات المؤقت يتم إنشاؤه في ذاكرة الوصول العشوائي ، عادةً بواسطة أداة مساعدة تسمى initramfs أو initrd. هذا يسمح بتحديد وتحميل برامج التشغيل المطلوبة. وهذا بدوره يسمح لنظام ملفات مساحة المستخدم بالتحميل والاستعداد لإنشاء بيئة مساحة المستخدم.
تتم معالجة إنشاء بيئة مساحة المستخدم من خلال عملية init ، وهي العملية الأولى التي يتم إطلاقها بواسطة kernel في مساحة المستخدم. لديها معرف العمليه (PID) من 1. جميع العمليات الأخرى إما مباشرة أو غير مباشرة تابعة لعملية البادئ.
قبل systemd ، كان الإعداد الافتراضي السائد لعملية init إعادة صياغة لملف نظام Unix V init. كانت هناك خيارات أخرى متاحة ، ولكن نظام V init كان الخيار القياسي في معظم الحالات التي لا تحتوي علىتوزيع برمجيات بيركلي (BSD) التوزيعات المشتقة. لأنه أتى مباشرة من System V Unix – الجد الروحي لنظام Linux – يعتبره الكثير من الناس “الطريقة الرسمية” للقيام بالتهيئة.
تبدأ عملية init جميع ملفات شياطين والخدمات المطلوبة لجعل نظام التشغيل يعمل بطريقة تفاعلية وذات مغزى. تتعامل هذه البرامج الشريرة مع أشياء مثل مكدس الشبكات ، وتمكين الأجهزة الأخرى داخل جهاز الكمبيوتر الخاص بك ، وتوفير شاشة تمهيد.
يستمر تشغيل العديد من عمليات الخلفية هذه بعد أن تبدأ. يقومون بأشياء مثل معلومات أحداث السجل ، ومراقبة تغييرات الأجهزة أثناء قيامك بإدخال أو إزالة الأجهزة ، وإدارة تسجيلات دخول المستخدم. ليس من المستغرب أن يشتمل نظام init أيضًا على ميزات لإدارة الخدمات.
يمكننا ان نستخدم ملاحظة لمعرفة العملية التي تحتوي على PID 1. سنستخدم خياري f (قائمة التنسيق الكامل) و p (PID):
ps -fp 1
نرى أن العملية مع PID 1 هي systemd. أدى تشغيل نفس الأمر على Manjaro Linux إلى نتيجة مختلفة. تم تحديد العملية مع PID 1 على أنها / sbin / init. تظهر نظرة سريعة على هذا الملف أنه ارتباط رمزي إلى systemd:
ps -fp 1
ls -hl /sbin/init
باستخدام خيار ppid (معرّف العملية الأصل) مع ps ، يمكننا معرفة العمليات التي تم إطلاقها مباشرةً بواسطة systemd:
ps -f --ppid 1
إنها قائمة طويلة جدًا ، كما ترى في الصورة أدناه.
البدائل
حاولت العديد من المشاريع إنتاج بديل لنظام V init التقليدي. تتمثل إحدى المشكلات الرئيسية ، مع System V init ، في بدء جميع العمليات بشكل متسلسل ، واحدة تلو الأخرى. لتحسين كفاءة تسلسل التمهيد ، تستخدم العديد من المشاريع البديلة التوازي لبدء العمليات بشكل متزامن وغير متزامن.
إليك بعض المعلومات حول بعض هذه:
مغرور: طورت بواسطة العنوان الأساسي، تم استخدامه في Ubuntu 9.10 ، قبعة حمراءو ريد هات إنتربرايز لينكس (RHEL) 6 ، CentOS 6 و فيدورا 9.
شغلها: يعمل على فري بي إس دي ومشتقات BSD الأخرى و macOS و سولاريسوكذلك أنظمة Linux. إنه أيضًا نظام التشغيل الافتراضي قيد التشغيل فارغ لينكس.
s6 لينكس الحرف الأول: تم تصميم هذا الاستبدال لنظام V init ليتبع عن كثب فلسفة يونكس، والتي غالبًا ما يتم اختزالها إلى المقطع الصوتي “افعل شيئًا وافعله جيدًا”.
هناك العديد من الاختلاف في الوظائف والتصميم. ومع ذلك ، لا أحد منهم خلق الضجة فعل systemd.
طريقة systemd
تم إصدار systemd في عام 2010 وتم استخدامه في Fedora في عام 2011. ومنذ ذلك الحين ، تم اعتماده في العديد من التوزيعات. تم تطويره بواسطة لينارت بوترينج و كاي سيفرز، اثنان من مهندسي البرمجيات في RedHat.
systemd هو أكثر بكثير من مجرد بديل init. بدلاً من ذلك ، إنها مجموعة من ما يقرب من 70 ثنائياً تتعامل مع تهيئة النظام والشياطين والخدمات والتسجيل واليوميات والعديد من الوظائف الأخرى التي تمت معالجتها بالفعل بواسطة وحدات مخصصة في Linux. الجزء الأكبر من هذه لا علاقة له بتهيئة النظام.
بعض الشياطين التي يقدمها systemd هي:
systemd-udevd: إدارة الأجهزة المادية.
systemd-logind: يدير عمليات تسجيل دخول المستخدمين.
حل systemd: يوفر تحليل اسم الشبكة للتطبيقات المحلية.
systemd-networkd: إدارة وكشف أجهزة الشبكة ، وإدارة تكوينات الشبكة.
systemd-tmpfiles: يقوم بإنشاء وحذف وتنظيف الملفات والدلائل المتطايرة والمؤقتة.
systemd-localed: إدارة إعدادات لغة النظام.
systemd-machined: يكتشف ويراقب الأجهزة والحاويات الافتراضية.
systemd-nspawn: يمكنه تشغيل أمر أو عملية أخرى في حاوية مساحة اسم خفيفة الوزن ، مما يوفر وظيفة مشابهة لـ الجذور.
وهذا مجرد غيض من فيض ، وهو أيضًا جوهر الأمر. لقد تجاوز systemd منذ فترة طويلة ما هو مطلوب من نظام init ، والذي ، وفقًا لخصومه ، هو تعريف زحف النطاق.
“انها كبيرة جدا. إنها تفعل الكثير “.
يشير معارضو نظام systemd إلى المزيج الكبير والغريب من الوظائف التي يشتمل عليها. كل هذه الميزات موجودة بالفعل في Linux ، وربما يحتاج بعضها إلى تحديث أو نهج جديد. ومع ذلك ، فإن تجميع كل هذه الوظائف في ما يُفترض أن يكون نظام init أمر محير من الناحية المعمارية.
يُطلق على systemd نقطة فشل واحدة للعديد من الوظائف الهامة ، ولكن لا يبدو أن هذا مبرر. باعتراف الجميع ، فإنه يرمي فلسفة يونكس في إنشاء أدوات صغيرة تعمل معًا بدلاً من البرامج الكبيرة التي تقوم بكل شيء خارج النافذة. في حين أن systemd ليس متجانساً بشكل صارم (إنه يتألف من العديد من الثنائيات بدلاً من واحد ضخم واحد) ، فإنه يتضمن الكثير من أدوات الإدارة والأوامر المتباينة تحت مظلة واحدة.
على الرغم من أنها قد لا تكون متجانسة ، إلا أنها كبيرة. للحصول على فكرة عن المقياس ، قمنا بحساب سطور النص في قاعدة كود kernel 5.6.15 وفرع systemd الرئيسي من مستودع جيثب.
كان هذا مقياسًا خامًا نسبيًا. كانت تحسب سطور النص ، وليس سطور التعليمات البرمجية فقط. لذلك ، شمل ذلك التعليقات والوثائق وكل شيء آخر. ومع ذلك ، فقد كانت مقارنة بالمثل وأعطانا مقياسًا بسيطًا:
( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l
كان للنواة ما يقرب من 28 مليون (27784.340 ، على وجه الدقة) سطر من النص. على النقيض من ذلك ، كان لدى systemd 1،349،969 ، أو ما يقرب من 1.4 مليون. من خلال مقياس happy-go-lucky ، يخرج systemd حوالي 5 بالمائة من حجم النواة ، وهو أمر جنوني!
كمقارنة أخرى ، وصل عدد الخطوط للتطبيق الحديث لـ System V init لتوزيع Arch Linux إلى 1721 سطرًا.
من الواضح أن Poettering لا يهتم بـ معهد مهندسي الكهرباء والإلكترونيات (IEEE) مجتمع الكمبيوتر ، ولا ملف واجهة نظام التشغيل المحمول معيار (POSIX). في الحقيقة ، هو شجع المطورين على تجاهل POSIX:
“لذا ، احصل على نسخة من واجهة برمجة Linux ، وتجاهل كل ما تقوله حول توافق POSIX واختراق برنامج Linux المذهل. إنه مريح للغاية! “
كانت هناك اتهامات بأن systemd هو مشروع Red Hat لا يستفيد منه سوى Red Hat ، ومع ذلك يتم تغذيته بالقوة في عالم Linux الأوسع. نعم ، لقد ولدت داخل ريد هات وهي تحكمها وتوجهها. ومع ذلك ، من بين 1321 مساهمًا ، يعمل جزء صغير فقط مع ريد هات.
إذن ، ما هي الفوائد التي تعود على ريد هات؟
جيم وايتهورست، رئيس شركة IBM ، الذي كان ذات مرة قال الرئيس التنفيذي لشركة Red Hat:
“راعت Red Hat العديد من الخيارات المتاحة وحتى استخدمت Canonical’s Upstart لـ Red Hat Enterprise Linux 6. في النهاية ، اخترنا systemd لأنها أفضل بنية توفر القابلية للتوسعة والبساطة وقابلية التوسع والواجهات المحددة جيدًا لمعالجة المشكلات التي نراها اليوم ونتوقع في المستقبل “.
قال وايت هيرست أيضًا إنهم رأوا فوائد في الأنظمة المدمجة أيضًا. تتعاون Red Hat مع “أكبر البائعين المضمنين في العالم ، لا سيما في صناعات الاتصالات والسيارات حيث الاستقرار والموثوقية هما الشاغل الأول.”
هذه تبدو وكأنها أسباب سليمة من الناحية الفنية. يمكنك فهم حاجة الشركة إلى الموثوقية ، وليس من غير المعقول أن تبحث ريد هات عن مصالحها الخاصة ، ولكن هل ينبغي على الجميع أن يحذو حذوها؟
شرب نظام كوول ايد؟
يقول بعض معارضي النظام إن التوزيعات والناس يتبعون بشكل أعمى قيادة ريد هات ويتبنونها.
ومع ذلك ، تمامًا مثل عبارة “شرب Kool-Aid” ، هذا ليس صحيحًا تمامًا. صاغ في عام 1978 بعد زعيم الطائفة ، جيم جونز، أجبر أتباعه الذين يزيد عددهم عن 900 شخصًا على الانتحار عن طريق شرب سائل بنكهة العنب مع السيانيد ، وهذه العبارة تخجل بشكل غير صحيح Kool-Aid. شربت المجموعة في الواقع Flavor Aid ، لكن Kool-Aid تم تلطيخها بهذه الفرشاة منذ ذلك الحين.
بالإضافة إلى ذلك ، توزيعات Linux لا تتبع Red Hat بشكل أعمى ؛ إنهم يتبنون systemd بعد مداولات جادة. احتدم النقاش على دبيان القوائم البريدية لفترة طويلة. ومع ذلك ، في عام 2014 ، صوت المجتمع لاعتماد systemd باعتباره نظام init الافتراضي ، ولكن أيضًا لدعم البدائل.
دبيان مثال مهم لأنه غير مشتق من RedHat أو Fedora أو CentOS. لا يوجد نظام توجيه مطبق على دبيان من Red Hat. ولديبيان ، مثل PID 1 ، العديد من المتحدرين ، بما في ذلك Ubuntu والعديد من فروعها.
القرارات التي يتخذها مجتمع دبيان بعيدة المدى. كما أنها تمت مناقشتها بقوة ، وتم التصويت على استخدامها طريقة التصويت Condorcet. كما أن المجتمع لا يتخذ مثل هذه الخيارات بسهولة.
صوتت مرة أخرى في ديسمبر 2019 لمواصلة التركيز على systemd ومواصلة استكشاف البدائل. على عكس المتابعة الأعمى ، هذا في الواقع مثال كتابي للديمقراطية وحرية الاختيار في العمل.
حدود الاختيار
لا يمكنك عمومًا اختيار ما إذا كنت ستستخدم systemd مع توزيعة Linux معينة. بدلاً من ذلك ، تختار التوزيعات نفسها ما إذا كانت تريد استخدامها ، ويمكنك اختيار توزيعة Linux التي تفضلها. ربما تحولت إحدى توزيعات Linux التي تحبها إلى systemd. مثل الموسيقي المفضل الذي يغير الأنواع ، قد يكون هذا مؤلمًا.
الأشخاص الذين يستخدمون دبيان ، فيدوراو CentOSو أوبونتوو قوسو Solus، و openSUSE، والاعتراض على اعتماد systemd ، قد يشعرون بأنهم مستبعدون من استخدام توزيع الاختيار. إذا شعروا بقوة كافية بشأن أي من الخيارات المعمارية ، أو زحف النطاق ، أو تجاهل POSIX ، فقد يجدون أنه من غير الممكن الاستمرار في استخدام هذا التوزيع.
هناك طيف ، بالطبع. من ناحية ، لديك الأشخاص الذين لا يفهمون القضايا (أو حتى يهتمون بها) ، ومن ناحية أخرى ، لديك المعترضون المتحمسون. في مكان ما في المنتصف يوجد أولئك الذين لا يحبون التغييرات ، لكنهم لا يهتمون بما يكفي للقفز من السفينة. ولكن ماذا عن توزيع اللاجئين ، الذين لا يستطيعون البقاء في التوزيع الذي يختارونه بسبب تفضيلاتهم أو مبادئهم؟
لسوء الحظ ، ليس الأمر سهلاً مثل مجرد تثبيت أي نظام init تريده. ليس كل شخص لديه القدرة التقنية على القيام بذلك ، فما عليك سوى الانتباه إلى الصعوبات التي تنشأ عند التطبيقات أو بيئات سطح المكتب ، مثل جنوم ، لديها تبعيات على systemd.
ماذا عن الانتقال إلى توزيع آخر؟ البعض ، مثل ديفوان، ظهرت على شكل تفرعات توزيعات غير تابعة للنظام (في هذه الحالة ، دبيان) التي اعتمدت systemd. يجب أن يكون استخدام Devuan مشابهًا للتوزيع الأصلي ، ولكن هذا ليس هو الحال بالنسبة لجميع التفرعات غير التابعة للنظام. على سبيل المثال ، إذا غادرت Fedora وانتقلت إلى أنتيكسو جينتو، أو سلاكوير، ستتمتع بتجربة مختلفة تمامًا.
إنها لا تذهب إلى أي مكان
يعجبني بعض ما يفعله systemd (آليات التحكم البسيطة والموحدة للعمليات). لا أفهم الأساس المنطقي لبعض ما يفعله (السجلات الثنائية). كما أنني لا أحب بعض ما يفعله (تجديد مجلدات المنزل – من طلب ذلك؟).
التوزيعات مثل دبيان تفعل الشيء الذكي وتبحث عن البدائل لإبقاء خياراتها مفتوحة. ومع ذلك ، فإن systemd موجود فيه لفترة طويلة.
إذا كنت تدير أجهزة Linux للآخرين ، فتعلم systemd كما تعلم System V init. بهذه الطريقة ، بغض النظر عما تواجهه ، ستتمكن من أداء واجباتك.
فقط استخدم Linux في المنزل؟ إذا كان الأمر كذلك ، فاختر توزيعة تلبي احتياجاتك الفنية وتكمل أيديولوجية Linux الخاصة بك.