1. ما هو systemd
systemd هو نظام تمهيد،(1) مُصمم ليكون بديلاً لـSysVinit، ونظام التمهيد هو أول شيء يتم تشغيله من قِبل نواة النظام، وهو المسؤول عن تشغيل وإدارة جميع الخدمات والبرامج في نظام التشغيل.
2. لماذا systemd سيء
systemd به مشاكل عديدة، بعض المصادر مازالت تذكر مشاكل كانت موجودة بالفعل لكن تم حلّها، لكني سأذكر فقط المشاكل الموجودة في systemd حاليًّا ولن أذكر أي مشكلة قد حُلَّت بالفعل.
- المشكلة 1:
انتهاك فلسفة يونِكْس، فلسفة يونِكْس تستند إلى البساطة والإيحاد، أبرز مبادئها هو "افعل شيءً واحداً فقط، وافعله جيداً"، يعني هذا المبدأ أنه يجب على كل برنامج أو برمجية أن تكون مسؤولة عن وظيفة محددة واحدة، ويمكن ربط البرامج ببعضها لعمل نظام متكامل بالوظائف والميزات التي نحتاجها، وsystemd ينتهك هذا المبدأ بشكل واضح، بحيث أنه مسؤول عن وظائف كثيرة رغم كونه خدمة أو برمجية واحدة، فـsystemd يتكون من مدير خدمات(2) (systemctl)، ومُسجِّل(3) (journald)، ومدير شبكات(4) (networkd)، ومُحلِّل نظام أسماء النطاقات(5) (resolved)، ومُزامِن وقت(6) (timesyncd)، وقِطَع أخرى كثيرة، كل هذا في نفس المشروع، ونفس البرمجية، ونفس الخدمة، فهذا انتهاك واضح وغير مقبول لفلسفة يونِكْس، لأن مبادئ فلسفة يونِكْس تُساهم بشكل أساسي في تطوّر البرمجيات وتكاملها، وانتهاك فلسفة يونِكْس يسبب مشاكل أخرى، منها التعقيد، والثقل، والتعارضات.
- المشكلة 2:
الثقل، وهذه مشكلة قد تبدو أكثر أهمية من المشكلة الأولى، لكنها في الأصل موجودة بسبب المشكلة الأولى. systemd ثقيل، وبل هو أثقل نظام تمهيد على الإطلاق، حيث أنه يستهلك حوالي 200 ميجابايت من الذاكرة في المتوسط، وهذه ليست مشكلة للحواسيب(7) الحديثة المُزوَّدة بجيجابايتات من الذاكرة، بل مشكلة للخوادم،(8) لأنه يجب استغلال كل موارد الخادم استغلالاً كاملاً وعدم هدرها، فالأفضل للخوادم استخدام نظام تمهيد غير systemd.
- المشكلة 3:
الخصوصية، هذه أكثر مشكلة رائجة حاليًّا، والسبب يرجع إلى تطبيق القوانين الحديثة التي تخصّ التحقق من العمر، حيث أنه صدرت قوانين في كاليفورنيا، وكولورادو، ونيويورك،(9) والبرازيل، تنصّ على أن أنظمة التشغيل يجب أن تتحقق من أعمار مستخدميها، فعَلى نظام التشغيل أن يسألك عن عمرك، وعليك أنت، المستخدم، أن تضع عمرك بنفسك، وهذا انتهاك لخصوصية المستخدمين بدون سبب منطقي، لكن توجد مشكلة أخرى متعلقة بالخصوصية غير التحقق من العمر، وبل هي مشكلة أقدم من مشكلة التحقق من العمر، وهي أن systemd يرسل كل موقع تزوره أو ترسل له طلب إلى Google عبر نظام أسماء النطاقات(10) الخاص بـGoogle بشكل افتراضيّ، وهذه مشكلة كبيرة جداً، تخيل أن Google قد تعرف كل شيء تفعله على الإنترنت بسبب systemd بدون إذنك، لكن لا تفزع، أغلب التوزيعات(11) قد أوقفت التحويل إلى نظام أسماء النطاقات الخاص بـGoogle بشكل افتراضيّ، ومن هذه التوزيعات: آرتش، ودبيان، وفيدورا، وجنتو، وأوبونتو، وأوبن سوزي، فغالبًا مطوّرو توزيعتك قد حلّوا هذه المشكلة بنفسهم بالفعل، لكن لماذا يجب على مطوّري توزيعة أن يحلّوا مشاكل systemd؟ لماذا عليَّ أن أتفقّد ما إذا كان مطوّري توزيعتي قد حلّوا هذه المشكلة التي تغتصب خصوصيتي؟ في الحقيقة، مطوّرو systemd لا يعتبرون هذه مشكلة حقيقية تستحق الاهتمام أصلاً، لذا فهذه مشكلة في جوهر فلسفة systemd وليست مجرد مشكلة تقنيّة أو خطأ غير مقصود.
- مشاكل تقنيّة أخرى:
يمكنك الاطّلاع على هذه الصفحة على موقع GitHub لتفقّد الأخطاء والثغرات التقنيّة التي مازالت موجودة في systemd، وتوجد كذلك مشاكل تقنيّة أخرى ليست مذكورة في GitHub:
• Bug #1713457 "DNS search domain not removed from resolv.conf on disconnect"
• 72759 - Systemd user manager interferes with ecryptfs - private directory not being unmounted
• [systemd-devel] Services enabled by default?
1. لماذا من الصعب ترك systemd
الآن، بعد كل هذا، لا يمكن مُناقشة أن systemd بالفعل شرّ، لكني لم أتطرق بعد إلى جزء "لا بد منه"، لذا فدعْني أقول لك لماذا أغلب مستخدمي الحواسيب الحديثة صعب عليهم استخدام نظام تمهيد غير systemd على الرغم من مشاكله.
- السبب الوحيد:
قلة دعم التوزيعات، لا توجد توزيعات كثيرة تدعم نظام تمهيد غير systemd، بل أغلب التوزيعات لا تدعم إلا systemd، يمكنك الاطّلاع على هذه الصفحة التي بها جدول للتوزيعات وأنظمة التمهيد التي تدعمها، سترى أن حوالي ثلاثة أرباع التوزيعات تدعم systemd، وأكثر من نصفها لا تدعم غيره، لذا فاختيارك لاستعمال نظام تمهيد غير systemd سيجعل خياراتك للتوزيعة محدودة، على الرغم من أنه يمكنك نزع systemd من أي توزيعة بعد تثبيتها، في أغلب الأحيان سيكون الأمر معقَّد وغير عمليّ، لأنه غالباً ما تكون حزم التوزيعة ليست مُصممة لتعمل على نظام تمهيد غير systemd.
دعني أتطرق إلى كل توزيعة تدعم نظام تمهيد غير systemd وأقل ملاحظاتي عنها، الهدف هو أن ننتهي بتوزيعة مناسبة وسهلة للمبتدئين.
| # | التوزيعة | ملاحظاتي عنها وعن دعمها لأنظمة تمهيد غير systemd |
|---|---|---|
| 1 | آرتكس | هذه التوزيعة مبنية على توزيعة آرتش التي لا تدعم غير systemd، فآرتكس نزعت systemd وأضافت دعم أنظمة تمهيد مختلفة، ودعني أذكر أن آرتش توزيعة متدحرجة،(12) وكون آرتكس مبنية على توزيعة متدحرجة في الأصل لا تدعم غير systemd مشكلة كبيرة، لأنه أصلاً من الصعب أن تأخذ جميع الحزم الغير متوافقية مع أنظمة تمهيد غير systemd من مستودعات آرتش وجعلها تدعم أنظمة تمهيد أخرى، فما بالك بأنه يجب على مطوّري آرتكس الذي عددهم قليل أن يفعلوا هذا، وعلاوة على ذلك، عليهم أن يعيدوا الأمر مع كل تحديث للحزم، وكما قلت، فآرتش توزيعة توزيعة متدحرجة، وهذا يعني أن تحديثاتها تأتي بشكل سريع، وهذا يضع ضغط على مطوّري آرتكس القليلين، لذا فلا يمكنهم ضبط كل الحزم لكي تعمل على أنظمة تمهيد مختلفة، فستواجه مشاكل كثيرة في هذه التوزيعة مع التحديثات. |
| 2 | ألباين | توزيعة جيدة جداً، ومطوّروها قاموا بمجهودات تستحق التقدير، وأنا شخصيًّا أحب التوزيعة بوضوح، وأنا لست الوحيد، لكن للأسف تثبيت واستخدام التوزيعة ليس بهذه السهولة للمبتدئين، فلا توجد واجهة رسومية بشكل افتراضيّ، لأن التوزيعة مخصصة أكثر للخوادم والحاويات، ولهذا السبب أيضاً تستعمل musl بدلاً من glibc، وهذا يؤدي إلى جعل شريحة واسعة من البرامج لا يمكن أن تعمل على هذه التوزيعة، لأن أغلب البرامج لا تدعم غير glibc. |
| 3 | إم إكس | لا أعرف معلومات كافية عنها. |
| 4 | جنتو | معقدة وصعبة جداً، فهي أصعب توزيعة على الإطلاق، بحيث أنك حرفيًّا تبني نظامك بنفسك باستعمال مدير الحزم(13) الخاص بجنتو، لذا فلَن تكون جيّدة أبداً للمستخدمين المبتدئين الذين يريدون نظاماً سهل التثبيت والاستخدام. |
| 5 | دبيان | تدعم أنظمة تمهيد مختلفة، لكن بطريقة مختلفة عن باقي التوزيعات في هذا الجدول، بحيث أنه لا يمكنك تثبيت أن نظام تمهيد إلا بعد تثبيت دبيان مع systemd، ثم يمكنك تثبيت نظام تمهيد آخر ونزع systemd، هذا قد لا يبدو دعماً رسميًّا حقيقيًّا، لأنه يمكنك القيام بنفس الشيء على أي توزيعة أخرى، لكن المميز في دبيان هنا أنه توجد حزم رسمية لأنظمة تمهيد غير systemd، وكذلك يوجد شرح رسميّ لكيفية استبدال systemd على دبيان، لكن طبعاُ مازالت هذه عملية معقدة ولا تُناسب المبتدئين، وحتى على الرغم من هذه المجهودات، مازال الأمر غير عمليّ، بحيث أنه حزم وتحديثات دبيان نفسها لا تدعم غير systemd ولا تضع أي نظام تمهيد آخر في عين الاعتبار، لذا فستواجه مشاكل توافقية كثيرة يصعُب حلُّها. |
| 6 | سلاكوير | لا أعرف معلومات كافية عنها. |
| 7 | فويد | هذه توزيعة أخرى جيدة مثل ألباين، عدى أنها تستعمل glibc، هي تُقدّم واجهة رسومية بشكل افتراضيّ، واختيار المطوّرين وقع على XFCE، لكن تثبيت فويد واستخدامها أصعب من تثبيت واستخدام ألباين، لأنه عليك أن تٌقسُّم القرص الذي تريد التثبيت فيه بنفسك، على عكس ألباين، وكذلك مدير الحزم الخاص بفويد معقد الاستخدام، على عكس مدير الحزم APK البسيط الخاص بألباين. |
| 8 | كركس | لا أعرف معلومات كافية عنها. |
| 9 | كيميرا | هي مثلها كمثل ألباين في أغلب النواحي، لكن تثبيتها أسهل قليلاً، فنفس الكلام الذي قلته على ألباين قد أقوله على هذه التوزيعة، فالاختلافات بينهما قد لا تكن فارقة بالنسبة للمبتدئين. |
أترى ما أراه؟ لا توجد أي توزيعة من هذه التوزيعات مناسبة للمبتدئين، بينما بالنسبة للتوزيعات التي تستعمل systemd، توجد كاتشي أو إس، ومينت، وفيدورا، وغيرهم الكثير من التوزيعات سهلة التثبيت والاستخدام والمناسبة للمبتدئين الذين يريدون الدخول إلى عالم لينكس، وهذه ليست مشكلة في أنظمة التمهيد، بل تقنيًّا يمكن عمل نسخة من توزيعة مثل كاتشي أو إس لكن تستعمل نظام تمهيد مثل OpenRC، فما يجعل كاتشي أو إس لا تدعم إلا systemd هو توزيعتها الأم، آرتش، التي لا تدعم إلا systemd، فالأمر احتكار واضح مثل ما وضّحت سابقاً.
3. الخاتمة
systemd شر، لكن للأسف لا بُد منه، إلا إذا قرر أحدهم أن يُطوّر توزيعة لا تستعمل systemd توفي وتسهّل، لكن إلى هذا الحين، أنا شخصيًّا أستعمل توزيعة كاتشي أو إس، لأنها تُقدّم لي ما أحتاج بدون أن أتعب في إعداده، ومشاكلها قد تكون معدومة، لكني طبعاً كنت لأستخدم توزيعة لا تستعمل systemd إذا كانت هنالك توزيعة كذلك وأيضاً تشبه كاتشي أو إس، على أية حال، أخيراً انتهيت من كتابة هذه المقالة اللعينة، أتمنى أنها قد أعجبتك، شكراً جزيلاً لك على قراءتك 3>
1 * نظام تمهيد -> init system
2 * مدير خدمات -> service manager
3 * مُسجِّل -> logger
4 * مدير شبكات -> network manager
5 * مُحلِّل نظام أسماء النطاقات -> DNS Resolver
6 * مُزامِن وقت -> time synchronizer
7 * حاسوب -> computer
8 * خادم -> server
9 * كاليفورنيا، وكولورادو، ونيويورك -> ولايات أمريكية
10 * نظام أسماء النطاقات -> DNS
11 * توزيعة -> distro
12 * توزيعة متدحرجة -> rolling release distro
13 * مدير حزم -> package manager