كيف تختلف لينكس الحديثة عن بعضها البعض

منذ أكثر من 15 عامًا ، كنت أعمل في "التقارير السريعة" ، وبحكم طبيعة عملي ، غالبًا ما أتعامل مع Linux ، حيث أقدم الدعم لأحد المنتجات. لقد كنت على دراية بنظام Linux لفترة أطول قليلاً - لقد قمت أولاً بتثبيت Slackware في عام 1997. وبناءً على ذلك ، ولدي بعض الخبرة ، أود أن أطلعكم على رأيي حول كيفية اختلاف توزيعات Linux الحديثة عن بعضها البعض. كل شيء موصوف في المقالة هو رأي شخصي ولا يدعي أنه الحقيقة المطلقة.



يتتبع نظام التشغيل Linux تاريخه إلى عام 1991 ، عندما بدأ الطالب الفنلندي Linus Torvalds في تطوير نظام تشغيل جديد ، مستوحى من أفكار Unix و Minix. إن الاختيار الناجح للرخصة الحرة قد حدد سلفًا نجاح تعهده - انضم العشرات والمئات من المتحمسين إلى التطوير ، كل منهم جلب شيئًا جديدًا. في وقت لاحق ، انضمت شركات كبيرة إلى التطوير - Intel و IBM وغيرها. الأسباب الدقيقة التي دفعت قادة الصناعة إلى دعم نظام تشغيل مجاني ليست معروفة لي ، ولكن "الألسنة الشريرة" تقول إن العديد من الشركات قررت نقل Microsoft ، التي كانت في ذلك الوقت تحتكر مطلقًا أنظمة التشغيل لأجهزة الكمبيوتر المكتبية.



تطور نواة لينكس معبرا عنه بعدد من الخطوط



صورة



هل كان لينكس ، بدون دعم سادة الصناعة ، قد أصبح ما هو عليه الآن؟ بعيدًا عن الحقيقة - يتذكر الموقرون القدامى حروب براءات الاختراع بين عملية سانتا كروز والشركات التي تدعم لينكس. خسرت منظمة شانغهاي للتعاون هذه الحرب ولم تعد موجودة.



عدد الالتزامات الأساسية من قبل الشركة



صورة



وهكذا ، خلال فترة حياته ، قطع نظام التشغيل Linux شوطًا طويلاً من التطور وأصبح الآن نظام تشغيل شائعًا قادرًا على استبدال Windows لحل العديد من المهام العاجلة للمستخدمين.



قبل أن نبدأ في مقارنة توزيعات Linux الحديثة ، يجب أن نحدد جانبين مهمين - الجانب الأول هو ما يتكون نظام التشغيل ، والثاني من أي وجهة نظر سنقارنها. نقصد بمجموعة التوزيع حلًا كاملاً يتكون من نواة نظام التشغيل ، وخادم رسومي (خادم X) ، وبيئة (مجموعة من البرامج المرفقة) ، وأداة تثبيت مساعدة ، وتكوين أولي. من الممكن مقارنة التوزيعات من وجهة نظر المستخدم النهائي ومسؤول النظام ومبرمج التطبيق.



لينكس من وجهة نظر مسؤول النظام



في فجر تطورها ، كان لينكس الكثير من التقنيين وكهنة التكنولوجيا الذين لديهم معرفة محددة بالبرمجة والإدارة. كان رائد نظام Linux هو نظام التشغيل Unix ، ويمكن للمتخصص ذو الخبرة في إدارة Unix إعداد النظام وتكوينه بسهولة. لم يكن هذا متاحًا للمستخدم العادي ، وكانت عملية الإدارة بالنسبة إليه شيءًا يشبه السحر. أصبح Linux الحديث سهل الاستخدام - تتلخص عملية التثبيت في الإجابة على بعض الأسئلة ، وغالبًا ما يكفي فقط الموافقة على خيار التكوين الذي يقدمه المثبت ، ببساطة عن طريق الإجابة على جميع الأسئلة بشكل إيجابي - سيقوم المثبت بتحليل تكوين الأجهزة وتحديد برامج التشغيل ومعلمات التكوين الضرورية. عادة ما تحتوي مجموعة التوزيع على حزم برامج جاهزة للاستخدام ،يتم توفيرها في شكل أرشيفات DEB أو RPM تحتوي ، بالإضافة إلى البرامج نفسها ، على نصوص التكوين ومعلومات حول التبعيات في مكتبات الجهات الخارجية. ومع ذلك ، هناك استثناءات ، على سبيل المثال ، يتم توفير توزيع Gentoo كمصدر عند جميع البرامج وقواعد البناء ، ويتم بناء نظام التشغيل نفسه بشكل حرفي على كمبيوتر المستخدم لتكوين معالجه. إن مسألة فعالية مثل هذه الطريقة مثيرة للجدل ، ولن نتعمق فيها ، وسوف أشير فقط إلى أن هذه ليست سوى درجة واحدة من درجات الحرية التي أعلن عنها المجتمع - للمستخدم الحرية في اختيار "ما إذا كانت تستحق الشمعة". بشكل عام ، تتشابه تنسيقات حزم RPM و DEB ، وعند اختيار مجموعة توزيع ، يمكنك تجاهل هذه النقطة. مع استثناءات نادرة - يحدث ذلك في بعض الأحيانأن مؤلف البرنامج لسبب ما لم ينص على الإصدار الثاني من المثبت وهو موجود فقط بتنسيق RPM (RedHat Linux ومشتقاته) أو DEB (Debian Linux ومشتقاته). في هذه الحالة ، قد تحتاج إلى جهد لتثبيت مثل هذا البرنامج - حتى تفريغ حزمة التثبيت يدويًا ، قد تتعثر في تبعيات غير مرضية. يتطلب تثبيت مثل هذا البرنامج الكثير من الجهد ، وفي حالة حدوث خطأ ، عند محاولة استبدال المكتبات المطلوبة ، يمكنك أن تؤدي إلى تعطل النظام. لحسن الحظ ، هذا الوضع نادر للغاية ولن يواجه 99.9٪ من مستخدمي Linux هذه المشكلة أبدًا. علاوة على ذلك ، يحتفظ جميع مصنعي التوزيعات المعروفين بمستودعاتهم مع مجموعة غنية من البرامج ، حيث يتم تصنيف كل برنامج واختباره لإصدار محدد من التوزيع.



لذا ، نعلم أن أحد أشكال الاختلاف بين Linux هو تنسيق الحزمة. ومع ذلك ، من وجهة نظر مسؤول النظام ، هناك اختلاف آخر - تنسيق البرامج النصية لبدء التشغيل. من عائلة أنظمة التشغيل Unix ، لدى Linux تنسيقان متنافسان - نمط النظام V وأسلوب BSD. لفهم ما يدور حوله ، دعنا نرى كيف يعمل. يقوم محمّل التمهيد بتحميل نواة نظام التشغيل ونقل التحكم إليه ، وتبدأ النواة وتبدأ العملية الأولى - الحرف الأول. بالمعنى الدقيق للكلمة ، بدلاً من الحرف الأول ، يمكنك أن تنزلق أي عملية ، على سبيل المثال ، باش. في هذه الحالة ، نحصل على شيء مثل نظام وحدة تحكم مستخدم واحد ، ومهمة واحدة بدون شبكة ولا واجهة رسومية ومع نظام ملفات جذري للقراءة فقط. علاوة على ذلك ، قد لا تعمل بعض الأجهزة في هذه الحالة إذا كانت برامج التشغيل الخاصة بها غير موجودة في النواة ، ولكن يتم تحميلها كوحدات نمطية.في الوضع الكلاسيكي للتشغيل ، تقرأ عملية التهيئة ملف / etc / inittab ، ووفقًا لذلك ، تبدأ عملية بدء تشغيل النظام - تركيب الأقسام ، وتحميل برامج التشغيل ، وتهيئة واجهات الشبكة ، وبدء برامج الخدمة (التي كانت تسمى سابقًا daemons) ، وتحميل النظام الفرعي للرسومات. لا يقوم Init بذلك بشكل مباشر ، ولكن باستخدام مفهوم مستوى التشغيل والبرامج النصية الخاصة. عادة ما يوجد ما يصل إلى ستة مستويات تشغيل - أوضاع التنفيذ التي تصف أوضاع تشغيل النظام - بدء التشغيل ، مستخدم واحد ، متعدد المستخدمين مع نظام فرعي للشبكة ، متعدد المستخدمين مع واجهة رسومية. وفقًا لظروف الاستخدام ، يمكن للمسؤول تعيين مستوى تشغيل قياسي ، والذي سيتحول إليه النظام بعد التمهيد ،عادة ما يكون وضع متعدد المستخدمين مع شبكة وواجهة رسومية لسطح المكتب ووضع متعدد المستخدمين مع شبكة للخوادم. في هذه البرامج النصية يكمن الفرق بين أنماط SystemV و BSD. ومع ذلك ، بعد معرفة تنسيق inittab ، يمكنك الاطلاع على محتويات البرامج النصية وفهم كيفية عمل البداية والتوقف والانتقال بين مستويات تشغيل النظام.



في عام 2010 ، طور المهندسون في RedHat بديلاً لـ init ، خدمة systemd. جلبت هذه الخدمة ميزات جديدة للنظام:



  • الخدمات التي يتم تنشيطها بواسطة مأخذ التوصيل ( يحل محل مكملات inetd) ؛
  • إطلاق الخدمات وفقًا لجدول زمني ( يحل محل المكملات كرون) ؛
  • العمل مع جهاز توقيت الأجهزة (يحل محل الوكالة) ؛
  • تغيير الجذر (يحل محل chroot) ؛
  • أحجام automount وموارد الشبكة ( يحل محل مكملات جبل و fstab) ؛
  • Journalctl - خدمة التسجيل ؛
  • تحليل النظام - تحليل بدء الخدمة (يشمل سرعة التحميل (لكل من النظام والخدمات الفردية) ، وتقديم بدء الخدمات ، وما إلى ذلك) ؛
  • تمهيد النظام - bootloader UEFI (استبدال grub و lilo).


حاليًا ، تحولت الغالبية العظمى من توزيعات Linux إلى systemd ، من التوزيعات الشائعة ذات مرة فقط يقاوم Slackware الانتقال إلى النظام الفرعي الجديد.



وبالتالي ، فإن الانتقال إلى systemd ، كما كان ، يمحو أحد الاختلافات بين Linux - نظام البرامج النصية لبدء التشغيل ويؤدي إلى التوحيد. في الوقت نفسه ، يتم الحفاظ على دعم نصوص بدء التشغيل الكلاسيكية - على سبيل المثال ، يمكن تحديد بعض وحدات التخزين للتركيب بشكل كلاسيكي عبر / etc / fstab ، بينما يمكن تحميل وحدات التخزين الأخرى باستخدام أدوات systemd.



في الماضي ، اعتاد مسؤول النظام أن يجادل أي نظام كان أفضل من SystemV أو BSD ، ولكن الآن خفت المناقشة. سيكون مسؤول النظام المتمرس قادرًا على تكوين أي نظام ، ولكن بالنسبة للمبتدئين على الويب ، هناك معلومات كافية تكشف عن أي جانب من جوانب تكوين Linux.



لينكس من منظور المستخدم



من وجهة نظر المستخدم النهائي ، يختلف Linux قليلاً. دعونا نلقي نظرة أعمق في السؤال. كان النظام الفرعي الرسومي اختياريًا في البداية على Unix. غالبًا ما يعمل نظام Unix على أجهزة كمبيوتر قوية ، ويتصل المستخدمون به عبر محطات X. تم التفاعل عبر الشبكة - تم تنفيذ البرنامج على الكمبيوتر المضيف ، وتلقى معلومات حول ضغطات لوحة المفاتيح وأحداث الماوس ، ورداً على ذلك ، أرسل أوامر إلى الجهاز لرسم رسومات أولية ونص. كانت المحطات الرسومية باهظة الثمن ونادرة الأجهزة ، لذلك أصبحت أجهزة الكمبيوتر الشخصية شائعة كمحطات. بالمناسبة ، هنا نقطة مثيرة للاهتمام غالبًا ما تسبب التباسًا - يتم تنفيذ خادم X على الطرفية ، وليس على المضيف. البرنامج نفسه يعمل على المضيف الذي يستخدم مكتبة xlib ،توفير واجهة أساسية منخفضة المستوى للعمل مع خادم رسومات. هذه الواجهة منخفضة المستوى تمامًا ، فهي تقدم مفهوم النافذة ، أي منطقة مستطيلة من الشاشة ، يمكن أن تعرض النص المتجه في خطوط مختلفة ، كما توفر رسمًا للبدائيات الرسومية المختلفة - النقاط والخطوط والمستطيلات والدوائر والصور.



نظرًا لأن الأساسيات الرسومية الأساسية بسيطة للغاية ، فقد أدى ذلك إلى ظهور مكتبات الأدوات - توفر هذه المكتبات مستوى أعلى من التجريد وتبسط برامج الكتابة بشكل كبير مع واجهة رسومية. على سبيل المثال ، أصبحت مكتبة X Athena Widgets جزءًا من نظام رسومات X Window System. تقدم هذه المكتبة مفهوم الأزرار ، وأزرار الراديو ، والقوائم ، وحقول الإدخال ، والأولويات المماثلة. ومع ذلك ، بالمعايير الحديثة ، تبدو جميلة "ملتوية".



وهنا تبدأ الاختلافات للمستخدمين. يعتمد مظهر ما يراه المستخدم على الشاشة على عدة أنظمة فرعية - بيئة سطح المكتب هي التي توفر مساحة تسمى سطح المكتب ، وهي مدير النوافذ الذي يحدد مظهر نوافذ البرنامج (زخارف النوافذ) وغالبًا ، ولكن ليس بالضرورة ، دمجها في بيئة سطح المكتب ، وأخيرًا ، مكتبة عناصر الواجهة. يتم تحديد ماذا وكيف يرى المستخدم على الشاشة من خلال مجموعات من المكونات المذكورة أعلاه.



من الناحية العملية ، يؤدي هذا إلى حقيقة أن البرنامج نفسه الذي تم إطلاقه في مديري النوافذ المختلفين يمكن أن يكون له زخارف نافذة مختلفة - عناوين مختلفة ، وأحجام حدود النافذة ، وتقليل مختلف ، وأزرار ملء الشاشة وأزرار إغلاق. مدير النوافذ يحدد كل هذا. ومع ذلك ، يمكن أن تحتوي البرامج المختلفة في مدير النافذة الواحدة على أنواع مختلفة من عناصر الواجهة ، اعتمادًا على المكتبة المستخدمة. من أجل الإنصاف ، تجدر الإشارة إلى أنه يمكنك ملاحظة مجموعة متنوعة مماثلة في Windows ، ولكن أقل من ذلك بكثير ، نظرًا لأن الغالبية العظمى من برامج Windows تستخدم GDI + القياسي أو ملتفًا حوله.



ماذا سيواجه مستخدم Linux على سطح المكتب؟ بادئ ذي بدء ، هو GNOME أو KDE ، تعتمد معظم التوزيعات على بيئات سطح المكتب هذه. ومع ذلك ، فهي لا تقتصر على ، ويقدم العديد من موردي Linux حوالي 12 بيئة مختلفة. أما بالنسبة لمكتبات عناصر الواجهة ، فهناك مكتبتان في المقدمة هنا - GTK و Qt. كلتا المكتبتين عبر النظام الأساسي ، وإذا وجد أي برنامج تحت كل من لينكس وويندوز ، فمن المرجح أن تتم كتابته باستخدام GTK أو Qt. ومع ذلك ، هناك استثناءات ، على سبيل المثال ، قام Xamarin بإنشاء نسخة من مكتبة نماذج Windows لنظامي التشغيل Linux و macOS. في بعض الأحيان ، يوزع مطورو مدير النوافذ أيضًا مكتبات الأدوات. وبالتالي ، يصبح من الواضح من أين تأتي مجموعة متنوعة من واجهات المستخدم الرسومية لنظام Linux.



لينكس من وجهة نظر مبرمجي التطبيقات



ينطبق كل ما سبق على البرمجة أيضًا. إذا كنت تكتب خادمًا أو أداة وحدة تحكم ، فأنت لا تحتاج في الغالبية العظمى من الحالات إلى استخدام توجيهات الترجمة الشرطية - Linux الحديث موحد تمامًا ومتوافق تمامًا مع POSIX. علاوة على ذلك ، يسمح لك استخدام autoconf بكتابة البرامج ليس فقط لنظام Linux ، ولكن أيضًا لأي نظام متوافق مع POSIX ، من BSD إلى جميع أنواع الغريبة.



ربما لن تضطر إلى اختيار تنسيق الحزمة - استخدم كلاً من DEB و RPM وستغطي جميع حالات الاستخدام تقريبًا. بالنسبة لبرامج الخدمة ، من المحتمل أن تضطر إلى الانتباه إلى تنسيق البرامج النصية لبدء التشغيل بحيث يقوم المثبت بتسجيل التشغيل التلقائي للخدمة بشكل صحيح. في حالتي ، كان علي الانتباه إلى موقع الخطوط ، نظرًا لأن البائعين المختلفين يستخدمون مسارات مختلفة لتخزين الخطوط ، ومع ذلك ، سيساعدك البحث المتكرر الذي يبدأ بـ / usr / share / fonts هنا - جميع الخطوط ، باستثناء الخطوط المخصصة ، ستكون موجودة على هذا المسار. أما بالنسبة للخطوط المخصصة المثبتة في / home / user ، فهناك بعض الارتباك والتذبذب ، ويقدم بائعون مختلفون هرميين على الأقل - ~ / .fonts و ~ / .local / share / fonts.



بالنسبة لبرامج الرسومات ، يكون التعقيد أكبر إلى حد ما. بالنظر إلى بيئات سطح المكتب المختلفة في حديقة الحيوانات ، يجب مراعاة خصوصياتها. على سبيل المثال ، ستدعم معظم بيئات سطح المكتب ما يسمى بإشعارات سطح المكتب ، ولكن قد لا تعمل مع بعض إدارة النوافذ الغريبة.



أخيرًا ، بعض النقاط الأكثر أهمية التي تحدث اختلافات كبيرة بين التوزيعات. على الرغم من التشابه بين جميع أنظمة Linux الحديثة ، فقد تواجه مشاكل في التوزيعات مع زيادة الحماية ، أي تلك التي يتم استخدام نظام الوصول الإلزامي. على سبيل المثال ، يتوفر بعض الموارد افتراضيًا في جميع التوزيعات الكلاسيكية ، ولكنه سيؤدي إلى حدوث خطأ في الوصول في الإصدار المحمي من Linux. من المستحيل التنبؤ مقدمًا بمكان وكيفية فشل البرنامج في هذه الحالة ، لذا فإن الحل الوحيد هو اختبار التوزيعات المحمية. أو حل سريع للمشكلة بعد أن اتصل المستخدم بالدعم الفني.



النقطة الثانية هي شعبية التوزيع. إذا كنت تستخدم مكتبة أو إطار عمل غير شائع جدًا كجزء من المنتج ، فمن المحتمل أن يحتوي هذا التوزيع على إصدار قديم أو غير كامل من هذه المكتبة. في ممارستي ، حدث هذا الموقف في إحدى التوزيعات مع دعم صفحة الرموز 1251 في System.Text.Encoding Library لـ C #. هناك طريقة واحدة فقط للتعامل مع مثل هذه المشاكل - نظرًا لأن المشكلة لم تتم ملاحظتها في توزيعات Linux الأخرى ، يجب عليك الكتابة إلى الدعم الفني لمطور هذا التوزيع ، مع وصف المشكلة بالتفصيل وقول أنه لا توجد مشكلة في توزيعات أخرى.



انتاج |. إذا كنت لا تفكر في الإصدارات المحمية من Linux ، فعندئذ من وجهة نظر مسؤولي النظام والمبرمجين ، فإن التوزيعات الحديثة متشابهة جدًا. غالبًا ما تكون الاختلافات بين الأجيال المختلفة للتوزيع من نفس البائع أكثر أهمية من الاختلافات بين التوزيعات الحديثة. من وجهة نظر المستخدمين ، فإن الاختلاف الرئيسي يكمن في اختيار وتكوين بيئة سطح المكتب والبرامج المقدمة مع التوزيع.



All Articles