الرئيسية المقالاتمقدمة في Linux – الجزء الثاني

الجزء اﻷول من الموضوع.

من أول ما يجب أن يعرفه المستخدم هو أن Linux مجاني, حر و مفتوح المصدر, يوزع تحت رخصة GPLv2. كما أن أغلب البرامج المبنية لتعمل عليه أيضاً تستخدم رخصاً حرة و مفتوحة المصدر (منها رخص GPL المتعددة, رخص BSD, رخصة MIT, رخصة Apache, و غيرهم). و أغلب البرامج و المشاريع (حتى الضخمة منها) تعتمد بشكل كبير أو كلي أحياناً على المتطوعين, لكتابة الكود, أو عمل Debugging, أو الاختبار, أو حتى كتابة Bug reports. لذا فمجتمع Linux يقع تحت مجتمع المصادر الحرة و المفتوحة (Free Open Source Software – FOSS, أو أحياناً Free, Libre, Open Source Software – FLOSS), و التي من مبادئها المشاركة.

تسبب هذه المصطلحات (حر, مجاني, مفتوح المصدر) التشوش أو الحيرة لدى بعض المستخدمين. تعني كلمة حر (free as in freedom) إمكانية استخدام, تعديل, أو نشر البرنامج دون إذن أو تصريح (هناك شروط تحددها الرخصة أو الكاتب, غالباً ما تكون اشتراط ترخيص العمل الجديد بنفس الرخصة, أي أن يكون حراً أيضاً). و يعني المصدر المفتوح (open-source) نشر كود البرنامج (أو مصدره) ليطلع عليه أي شخص. سببت كلمة Free باللغة الإنجليزية تشويشاً لدى المستخدمين, إذ أن الكلمة تعني أيضاً المجانية (free as in free soda), فاقترح استخدام مصطلح Libre (تنطق “ليبرا”) بدلاً منه. لا يعني المصدر المفتوح و الحر بالضرورة المجانية, فعلى سبيل المثال يتطلب استخدام RHEL و SUSE Linux Enterprise (SLED/SLES) رخصاً مدفوعة. و لكن يمكن التعديل, و بناء توزيعة, على أي منهما (فمثلاً CentOS هو نفس RHEL, و لكنه مجاني). على الرغم من ذلك, فإن أغلب البرامج المكتوبة تحت الرخص الحرة و المفتوحة مجانية.

انفتاح الكود و حريته أدى لنشأة خيارات كثيرة تؤدي نفس الوظائف تقريباً. و لهذا حسناته و سيئاته. لذا على المستخدم دائماً أن يجرب و يبحث.

عند تشغيل الجهاز (جهاز IBM-compatible PC, أي ما يعرف بالـ PC), يبدأ BIOS أو UEFI من شريحة على اللوحة الأم, و الذي يتولى عمل الفحوصات الأساسية (POST) و بدأ الـ Boot loader, و الذي بدوره يتولى بدأ نظام التشغيل. في BIOS, يقبع الـ Boot sector في نظام MBR في بداية القرص, الذي يحتوي على كود أساسي يقوم بتشغيل الـ Boot loader من على القرص (يدعى Fist-stage boot loader). UEFI لا يعتمد على Boot sector, بل يستخدم بدلاً من ذلك Boot manager يقوم بقراءة ملفات الإقلاع من Parition مخصصة لها. يقوم الـ First-stage boot loader بتحميل الـ Second-stage boot loader من على القرص الصلب (أو المكان الخزن فيه الـ Boot loader), و هو ما قد يراه المستخدم (قائمة خيارات الإقلاع أو أنظمة التشغيل المثبتة). لذا فإن العملية متسلسلة, تبدأ من كود بسيط يقوم بعمليات أساسية, إلى كود آخر أكثر تعقيداً يقوم بتشغيل كود غيره معقد.

في Linux, يقوم الـ Boot loader بتحميل الـ Kernel executable (الذي يقع عادة في /boot), و الذي يحتوي النواة (يدعى vmlinux, و عادة ً تكون مضغوطة بـ zlib و يكون اسم الملف vmlinuz). بعد أن يفك ضغط النواة في RAM, تقوم النواة باستلام وظائف Memory management و إعداد الـ Hardware, ثم تحميل initramfs إلى RAM, و هو صورة من الملفات التي ستسخدم لتشغيل النظام, ثم تحميل الـ Drivers الضرورية. يتولى initramfs تحميل الـ Hooks (و هي Parameters في النواة يحددها المستخدم لتشغيل Drivers بشكل متسلسل بحسب الحاجة لعملية Boot ناجحة, مثل تعريف RAID أو LVM). بعد أن ينتهي initramfs من وظائفه, يقوم الـ kernel بعمل Unmount له, ثم يقوم بتحميل الـ Real root على /. ما سبق هو النواة, و لكن لا يستطيع المستخدم الاستفادة منها دون مستخدمين أو برامج (ما يدعى بالـ User space). أول برنامج يفعل هو init الذي يعمل كـ daemon, و يقوم بتشغيل و إدارة الـ Processes الخاصة بالـ User space (لذا تكون كل الـ Processes لاحقاً تابعة له).

هناك عدة خيارات للـ Boot loader في Linux, منها GRUB و rEFInd. برنامج init الكلاسيكي هو SysV القادم من Unix, و لكن تقوم التوزيعات المنتشرة (Fedora, openSUSE, Debian, Ubuntu, Arch, CentOS, RHEL, SLES), و غيرهم حالياً باستخدام البرنامج الجديد systemd.

initramfs (و هي اختصار لـ Initial RAM Filesystm) ينشأ يكتب بحسب حاجة كل جهاز (و بحسب ذكاء برنامج الـ cpio المستخدم لعملها), و يجب أن يكتب واحداً لكل نواة (بعد عملية التحديث مثلاً, أو في حال وجود أكثر من نواة). أهم وظائف initramfs هو تحميل الـ Hooks, و هي ما يتحكم بالإضافات و الـ Scripts التي ستحمل وقت الـ Boot. و تحمل بشكل متسلسل, لذا ترتيبها مهم. يضاف عادة ً للـ initramfs واحدة ً أخرى تدعى Rescue أو Fallback, و هي تحمل الـ Hooks الافتراضية في حال حدوث مشاكل أو أخطاء في الـ initramfs.

bash: ls -al /boot

تستخدم أنظمة GNU/Linux عدة أنظمة ملفات (Filesystems “FS”). الـ FS جزء من النواة, و لكن يمكن تشغيل أنظمة ملفات أخرى (مثل NTFS أو exFAT) في الـ User space من خلال FUSE, أو كـ Kernel module (مثل ZFS). يستخدم ext4 عادة ً كنظام الملفات الافتراضي للاستخدام العام, و حديثاً تبنت بعض التوزيعات نظام Btrfs (يلفظ Butter-FS, Better-FS, أو B-tree FS) كـ FS افتراضي (أولها openSUSE ابتداءً من النسخة 13.2). يحتوي الـ Kernel على عدة FS, منها ext2, ext3, ext4, XFS, ReiserFS, Btrfs.
عند تقسيم القرص, يفضل عمل Partition منفصلة لـ /home إذا كان الانتقال إلى Linux دائم أو طويل الأمد. يختلف التقسيم بحسب التوزيعة, و بحسب تمكن المستخدم. بشكل عام تقسم المساحة المتاحة إلى root (/), و swap, و قد يكون home و boot منفصلاً (كما قد يفضل المستخدم المتقدم فصل Partitions أخرى, مثل /var أو /tmp). في حال استخدام LVM, فيجب أن يكون /boot منفصلاً. لا يحتاج المستخدم إلى أكثر من 20GiB للـ root, لذا لا داعي لإعطاءها مساحة ً كبيرة (يمكن زيادة المساحة احتياطاً إلى 25GiB في الأنظمة التي تحتوي على الكثير من البرامج, مثل openSUSE). و لكن كما يظهر في الصورة, لم أستخدم حتى نصف مساحة root. تعتمد مساحة swap على حجم الـ RAM؛ تختلف الأقوال و التوصيات بين التوزيعات, و لكن يمكن اعتماد مبدأ حجم 1GiB للذاكرة أقل من 512MB, و ضعف مساحة الذاكرة إلى حد 4GB, و مثلها لأكبر من ذلك. بشكل عام يمكن اتباع الإعدادات الافتراضية للتوزيعة بالنسبة للمساحات و التقسيم و نظام الملفات, و لكن يجب دائماً التحقق من أن التوزيعة لن تمسح أنظمة التشغيل الأخرى على القرص (إن كنت تريد الاحتفاظ بأنظمة التشغيل الأخرى), كما يجب دائماً التأكد من القرص الذي سيثبت عليه النظام (إن كان على الجهاز أكثر من قرص), و قراءة ملخص التغييرات التي سيقوم بها برنامج التثبيت على قرصك, كي لا تفقد بياناتك أو تتسبب بتلفها.

bash: lsblk & df -h

ما يتعامل معه المستخدم في معظم أنظمة التشغيل المكتبية يدعى الواجهة الرسومية. الواجهة الرسومية هي جزء في نظام التشغيل, و ليست نظام التشغيل. هذه الجزئية أيضاً تسبب الحيرة لدى المستخدمين المبتدئين, الذي يقدم معظمهم من نظام Microsoft Windows الذي يدمج الواجهة الرسومية كجزء من نظام التشغيل لا يمكن فصله, أو استخدامه بدونها. و هذا يعني أن الواجهة الرسومية ثابتة لا يمكن تغييرها. و لكن كما ذكرت في البداية, فإن أنظمة Linux تتكون من النواة و مجموعة من البرامج تجمع معه. لذا فإن الواجهة الرسومية ليست جزءاً من نظام التشغيل, بل هي غير ضرورية لاستخدامه (و الطريقة التي يختار العديد من المستخدمين استخدام Linux بها. و حتى يمكن تصفح الإنترنت من دون واجهة رسومية). هذا يعني أن هناك خيارات عديدة للواجهات الرسومية. من أشهرها KDE Plasma, GNOME, Xfce, و غيرهم الكثير. و حتى هنا, تختلف الفلسفات و المبادئ وراء الواجهة. كما في التوزيعة, يجب على المستخدم تجربة الواجهات المختلفة ليختار ما يعجبه و يناسبه. يمكن تثبيت أكثر من واجهة رسومية على نفس النظام. كما أن بعض التوزيعات تعتمد واجهة ً رئيسة (فمثلاً تعتمد Fedora بيئة GNOME, و تعتمد openSUSE بيئة Plasma 5, رغم تقديمهما لبيئات و واجهات أخرى).
حتى في مجال الواجهة الرسومية, هناك الكثير من الخيارات. هناك ما يدعى بالبيئة (Desktop Environment – DE), و هي عادة ً عبارة عن Window Manager (WM) + File Manager (FM) + مجموعة من البرامج مبنية على Libraries معينة (كـ Qt في KDE, و GTK في GNOME). الـ WM هو ما يرسم النوافذ و الإطارات و يتحكم بها, و الـ FM هو المتحكم بالملفات (و هو جزء مشهور يعرفه كل من يستخدم الكمبيوتر). في Windows يقوم explorer.exe بوظيفتي WM و FM. هناك WMs منفصلة بدون FM أو برامج, يختار المستخدمون الباحثون عن البساطة و السرعة استخدامها.

Kubuntu 15.04 alpha1

By KDE (Screenshot by phrippy) [GPL (http://www.gnu.org/licenses/gpl.html)], via Wikimedia Commons

Ubuntu 15.10

By Canonical Ltd (http://releases.ubuntu.com/15.10/) [GPL (http://www.gnu.org/licenses/gpl.html), CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0) or GFDL (http://www.gnu.org/copyleft/fdl.html)], via Wikimedia Commons

Xfce 4.12 on Fedora 22

By Kliu0117 (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons

GNOME Shell

By Filorinwiki [GPL (http://www.gnu.org/licenses/gpl.html), CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0) or GFDL (http://www.gnu.org/copyleft/fdl.html)], via Wikimedia Commons

عند البحث في الواجهات الرسومية و بيئات المكتب, تصادفنا مصطلحات مثل Compositor أو Compositing WM. للـ Compositor وظائف متعددة في عرض الصور و النوافذ, منها على سبيل المثال وضع النوافذ على البيئة (كطبقات), و توفير المؤثرات, أو خاصية Anti-tearing. يمكن للـ WM أن يكون هو نفسه الـ Compositor, و يمكن استخدام Compositor منفصل على WM ليس فيها Compositing.
البيئات الثلاث المشهورة (KDE4/Plasma 5, GNOME, Xfce) فيها القدرة على Compositing.

الجزء الثالث.