مقدمه عن نظام تشغيل جنو/لينكس

سأحاول بإذن الله في هذا الموضوع عرض فكره عامة عن نظام جنو/لينكس، نعم هذا هو اسمه وليس لينكس ولكنك ستجدني في الكثير من الاحيان اشير له بأسم لينكس فقط اختصاراً.
ماهو اللينكس ؟ هو نواة نظام تشغيل(kernel) برمجت بداية بيد الطالب لينوس تورفالدز عام 1991الذي اطلق الكود المصدري لنواته علي الانترنت بشكل مجاني فتوالت عليه الاقتراحات والتعديلات والاضافات علي كوده حتي صار الكود المصدري اليوم مكون من ملايين السطور البرمجية.لمعرفة المزيد عن تاريخ لينكس يرجي الاطلاع علي الرابط التالي:http://ar.wikipedia.org/wiki/%D9%84%D9%8A%D9%86%D9%83%D8%B3
مهلاً ماذا تعني النواة؟
النواة هي قلب نظام التشغيل تشبه “محرك السيارة” حيث انها المسئولة عن إدارة العتاد الصلب مثل اللوحة الام والقرص الصلب والذاكرة ومنافذ الـ USB ومخارج الصوت والشاشة ..الخ. تعتمد نواة لينكس في عملها علي مايسمي بالـ Modules اي الوحدات وهي قابله للازالة والتركيب ولتقريب الصورة تخيل معي جهاز يأتي معه مجموعة من الوحدات او القطع اذا قمت بتركيب وحدة ما من الوحدات المرفقة فأنها تضيف امكانية او وظيفة جديدة للجهاز واذا اردت الاستغناء عن هذه الوظيفة فكل ما عليك فعله هو ازالة هذه الوحدة -اتمني ان تكون الصورة قد اتضحت- تأتي النواة محمله مسبقاً بالعديد من الوحدات مثل وحدات التعريفات للقطع المختلفة لذلك تجد انك لست في حاجه لتعريف معظم القطع الموجودة بجهازك الا تلك القطع التي لا تريد الشركات المنتجة لها توفير التعريف بشكل مفتوح حتي يتم دمجه بالنواة ولكن لا تقلق فهذه التعريفات قد تجدها علي الموقع الرسمي للشركة المنتجة او يقوم مجتمع المصادر المفتوحة بتطوير تعريف حر لها.وهناك ايضاً وحدات تضيف امكانيات للنواة مثل دعم التشفير او دعم الاتصال الشبكي …الخ.
حتي الان ليس لدينا نظام تشغيل متكامل يؤدي وظائفه، لذا حان وقت دمج ادوات مشروع جنو الحرة بالنواة لينتج عنهما نظام جنو/لينكس . للمزيد حول مشروع جنو يمكنك الاطلاع علي الرابط التالي:http://ar.wikipedia.org/wiki/%D9%85%D8%B4%D8%B1%D9%88%D8%B9_%D8%AC%D9%86%D9%88
اصبح لدينا الان نظام تشغيل متكامل فدعونا نتعرف عليه من قرب ،
النواة Kernel :إدارة العتاد الصلب.
Shell : بيئة عمل نصية تتيح للمستخدم توجيه النواة من خلال استخدام برمجيات نصية مثل ls لعرض محتويات مجلد ما او vim لتحرير الملفات النصية …الخ.هناك عدة انواع من الـ shell مثل bash ,csh, sh, zsh والنوع الاكثر استخدام هو bash.
GUI : بيئة عمل رسومية تتيح للمستخدم توجيه النواة من خلال استخدام برمجيات رسومية مثل برامج تحرير الصور وتشغيل الوسائط ومجموعة البرامج المكتبية.هناك العديد من البيئات الرسومية المتكامله التي تأتي ببرامج افتراضية تتيح للمستخدم اداء مهامه ببساطة مثل Gnome ,KDE ,Unity ,Openbox ,Fluxbox ,XFCE ,LXDE, Mate, Cinnamon ..الخ.وحتي تعمل هذه البيئات لابد من وجود بنية تحتية تسمح لها بالعمل فوق الـ shell فكان اول نظام جيد ظهر هو Xorg server ثم ظهر بعد ذلك الـ Wayland والـ Mir وبدون احد هذه البرمجيات لا يمكنك تشغيل بيئة سطح المكتب الرسومية.
البرمجيات Software:وهي الادوات التي تساعد المستخدم في اداء مهامه مثل برنامج تشغيل الملفات الصوتية او عرض ملفات الفيديو او تحرير الملفات النصية…الخ.تتوافر البرمجيات الحره بشكل كبير مجاناً فنجد ان البرنامج الواحد له العديد من البدائل مما يعطي مساحة أكبر في اختيار البرنامج المناسب.تعتمد التوزيعات المختلفة علي الانترنت في توفير البرامج من خلال مايسمي بالمستودعات وهي خوادم علي شبكة الانترنت بها اﻵف البرمحيات الحرة وكل ماعلي المستخدم فعله هو فتح مركز البرمجيات Software center واختيار البرنامج ليتم تحميله وتثبيته بشكل مباشر، اي تشبه الـ Store الموجود علي نظام اندرويد في الهاتف الجوال.

بعد التعرف علي المكونات الاساسية لنظام التشغيل جنو/لينكس دعونا نتعرف علي بعض المصطلحات ،

التوزيعة:هي عملية جمع اجزاء نظام التشغيل من خلال الاختيار بين بدائل المكونات التي ذكرت بالاعلي مثل اختيار اصدار معين من النواة واختيار احد انواع الـ Shell واخيار احدي بيئات سطح المكتب الرسومية ثم جمع هذه المكونات معاً في اسطوانة لينتج مايسمي بالتوزيعة اي ياختصار التوزيعة هي احدي نكهات نظام جنو/لينكس .اشهر التوزيعات هي debian redhat Slackware وقد بني علي هذه التوزيعات العديد من التوزيعات الاخري مثل ابونتو التي بنيت علي ديبيان او فيدورا التي بنيت علي ريدهات.
الحزم Packages:هي البرمجية بمكوناتها ومعلومات الاعتماديات مضغوطة بشكل يسمح للتوزيعة بتثبيتها بسهوله وهناك العديد من صور الحزم واشهرها deb و rpm.
الاعتماديات Dependencies : تعتمد البرمجيات الحرة علي فكرة الاعتماديات حيث اذا اراد المطور بناء برنامج لاداء وظيفة ما ووجد اثناء عملية التطوير انه يحتاج لكتابة قدر كبير من الكود لجعل البرنامج يؤدي شيئ معين وكان هناك من سبقه بكتابة هذا الكود فلماذا يهدر وقته ومجهودة لكتابته مره اخري فيلجأ لتضمين هذا الكود الذي سبق وكتبه احدهم وتم حفظه بداخل مايسمي بالمكتبة من خلال الاشارة له داخل الكود البرمجي ولكنه لا يقوم بتضمين الكود الفعلي للمكتبة بداخل برنامجه وانما يكتفي بالاشارة بأنه حتي يعمل برنامجي لابد من وجود هذه المكتبة علي النظام وعلي المستخدم ان يقوم بتثبيت هذه الاعتماديات يدوياً قبل تثبيت هذا البرنامج،ولكن عملية تثبيت الاعتماديات بشكل يدوي عمليه مرهقه لذا يقوم المتطوعين بأخذ الكود المصدري وتحويله لحزمه Package تحتوي علي الكود المصدري ومعلومات وصفية لما يحتاجه هذا البرنامج من اعتماديات حتي يعمل بشكل صحيح ويتولي مدير الحزم Package managerبالتوزيعة تثبيت هذه الاعتماديات بشكل آلي دون تدخل من المستخدم.ولكن لماذا لايقوم المطور بتضمين هذه المكتبات بداخل البرنامج حتي لانضطر لتثبيتها ؟هناك العديد من الاسباب مثل الحفاظ علي الحجم الصغير للبرنامج وايضاً من المحتمل ان يعتمد اكثر من برنامج علي هذه المكتبة فلماذا نضيف نفس المكتبة مراراً وتكراراً وايضاً من الممكن ان يقوم مطور المكتبة بتحسين مكتبته واطلاق اصدار افضل فلماذا يحرم نفسه من الاصدار المطور ويظل مع الاصدار القديم المدمج مع برنامجه !!
مدير الحزم Package manager : هو المسئول عن ادارة عمليات تثبيت وحذف الحزم ويختلف تبعاً للتوزيعة فهناك مدير الحزم الديبيانية dpkg أو apt وهناك مدير حزم ريدهات yum …الخ.
-الاختلافات الجوهرية بين التوزيعات من وجهة نظري الشخصية هي مدير الحزم .

فكرتان بشأن “مقدمه عن نظام تشغيل جنو/لينكس

أضف تعليق