أساسيات لينكس

لماذا يُسيطر لينوكس على العالم

18 دقيقة الدرس 1 من 26

لماذا يُسيطر لينوكس على العالم

قبل أن تُشغّل أمر kubectl واحداً، أو تنشر حاوية، أو تكتب خط أنابيب CI، ثمة حقيقة يجب أن تستوعبها جيداً: لينوكس هو نظام التشغيل الذي يشغّل الإنترنت. أكثر من 96% من أكبر مليون خادم ويب في العالم تعمل على لينوكس. كل مزوّد سحابي رئيسي — AWS وGCP وAzure — يُشغّل أحمال عملك افتراضياً على أجهزة VM تعمل بلينوكس. عُقد Kubernetes تعمل على لينوكس. حاويات Docker تشترك في نواة لينوكس. إن كنت جاداً في مجال DevOps، فلينوكس ليس خلفية اختيارية — بل هو الأرضية التي يعمل فوقها كل شيء.

لماذا لا Windows Server؟

Windows Server منصة قادرة وتعتمد عليه كثير من المؤسسات، لكنه يخسر أمام لينوكس عند التوسع لأسباب متشابكة:

  • تكلفة الترخيص: قد يبلغ ترخيص Windows Server 2022 Datacenter آلاف الدولارات لكل خادم سنوياً. لينوكس مجاني. عند 10,000 جهاز VM، الوفورات هائلة.
  • حجم البصمة: صورة حاوية Alpine Linux الدنيا تبلغ نحو 7 ميغابايت. صورة Windows Server Core تبدأ من 4 غيغابايت فأكثر. الصور الأصغر تعني أوقات سحب أسرع، وتكاليف إخراج بيانات أقل، وسطح هجوم أضيق.
  • النصوص البرمجية والأتمتة: يأتي لينوكس مزوداً بصدفة برمجية محكمة، وcron، والأنابيب، ومنظومة ضخمة من أدوات سطر الأوامر. كل أداة DevOps — Ansible وTerraform وHelm — صُمّمت أولاً للينوكس.
  • الاستقرار والقابلية للتوقع: تعمل أنظمة لينوكس عادةً لسنوات دون إعادة تشغيل. كثير من قواعد البيانات الإنتاجية في شركات التكنولوجيا الكبرى لديها أوقات تشغيل مقاسة بمئات الأيام.
  • منظومة المصدر المفتوح: المنظومة السحابية بأكملها (Kubernetes وetcd وcontainerd وPrometheus وGrafana) مفتوحة المصدر وطبيعية في بيئة لينوكس.
الفكرة الجوهرية: حين تتصل بخادم EC2 عبر SSH، أو بعقدة GKE، أو بخادم مادي في مركز بيانات، فأنت في الغالب أمام صدفة لينوكس. كل ما تتعلمه في هذه السلسلة يُعلّمك التعامل مع تلك البيئة باحتراف.

نواة لينوكس والانقسام بين فضاء النواة وفضاء المستخدم

كثيراً ما يقول الناس "لينوكس" ويقصدون نظام التشغيل بأكمله، لكن لينوكس تقنياً هو النواة فحسب — القطعة الجوهرية من البرمجيات التي تُدير موارد العتاد. كل شيء آخر (الصدفة، أدوات نظام الملفات، مدير الحزم، نظام Init) هو برمجيات فضاء المستخدم التي تعمل فوق النواة.

فهم هذا الانقسام ليس ترفاً أكاديمياً — بل يؤثر مباشرة على كيفية تشخيص مشاكل الإنتاج وكيفية عمل الحاويات:

  • تتولى النواة جدولة المعالج، وإدارة الذاكرة، وتعريفات الأجهزة، والشبكات، ونداءات النظام.
  • تُرسل عمليات فضاء المستخدم نداءات نظام (مثل read() وwrite() وfork() وsocket()) لطلب تنفيذ أعمال مميزة من النواة.
  • تُشغّل حاوية Docker فضاء مستخدم خاصاً بها لكنها تشترك في نواة المضيف. لهذا السبب الحاوية ليست جهازاً افتراضياً — النواة غير معزولة، بل مُعزول فضاء المستخدم فقط.
Linux Kernel and Userspace Stack Hardware CPU · RAM · Disk · Network Interface Cards · GPU Linux Kernel Scheduler Memory Manager VFS / Block I/O TCP/IP Stack System Call Interface (read · write · fork · exec · socket · mmap · ...) USERSPACE Shell + Core Utils bash · ls · grep · awk · sed Init System systemd · manages services Package Manager apt · yum · dnf · apk Applications (Userspace) nginx / Apache Docker / containerd sshd / PostgreSQL your app KERNEL SPACE Containers share the kernel but isolate userspace (namespaces + cgroups)
مكدس برمجيات لينوكس: العتاد في الأسفل، النواة في الوسط، وكل برمجيات فضاء المستخدم فوق حدود نداءات النظام.

توزيعات لينوكس: اختيار التوزيع المناسب

توزيعة لينوكس تجمع النواة مع مجموعة منتقاة من أدوات فضاء المستخدم، ومدير حزم، وضبط افتراضي، ودورة دعم محددة. النواة نفسها متطابقة في جميع التوزيعات؛ الاختلافات تكمن في الأدوات وبيئة الاستخدام المستهدفة.

في بيئات DevOps الإنتاجية ستصادف في الأساس ثلاث عائلات:

  • Debian/Ubuntu: مدير الحزم apt. Ubuntu LTS (22.04، 24.04) هو الخيار السائد لأجهزة VM السحابية في معظم الشركات المتوسطة والكبيرة، وهو الصورة الافتراضية على AWS وGCP وAzure. توثيق مجتمعي ممتاز.
  • RHEL/CentOS/Amazon Linux: مدير الحزم yum / dnf. RHEL (Red Hat Enterprise Linux) هو المعيار في القطاعات المنظَّمة (المالية والصحية) نظراً لدورة دعم مدتها 10 سنوات وشهادة FIPS. Amazon Linux 2023 متوافق مع RHEL وهو الافتراضي للأحمال الأصيلة على AWS.
  • Alpine Linux: مدير الحزم apk. يُختار تقريباً حصرياً كصور Docker الأساسية بسبب بصمته الصغيرة (~5 ميغابايت). يستخدم musl libc بدلاً من glibc، مما يُسبب أحياناً مشاكل توافق دقيقة مع الملفات الثنائية المُصرَّفة مسبقاً.
الممارسة الإنتاجية: وحّد مؤسستك على عائلة توزيعة واحدة. الخلط بين Ubuntu وRHEL يعني مديرَي حزم مختلفَين، واصطلاحات إدارة خدمات مختلفة، وضعف تعقيد الكتيبات التشغيلية. معظم الشركات تختار Ubuntu LTS لأحمال السحابة وتلتزم به.

فحص ما تعمل عليه

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

# التعرف على التوزيعة والإصدار cat /etc/os-release # إصدار النواة والمعمارية uname -r # مثال: 6.1.0-21-amd64 uname -m # x86_64 أو aarch64 (ARM) # ملخص كامل في أمر واحد uname -a # Linux ip-10-0-1-42 6.1.0-21-amd64 #1 SMP Debian 6.1.90-1 (2024-05-03) x86_64 GNU/Linux # مدة تشغيل النظام + متوسطات الحمل uptime

إصدار النواة مهم حين تُثبّت وحدات نواة (مثل أدوات المراقبة المبنية على eBPF كـ Cilium أو Falco)، أو حين تكون ثغرة أمنية خاصة بإصدار نواة معين وتحتاج للتحقق من أن أسطولك مُرقَّع.

كيف غيّرت السحابة عمليات لينوكس

في حقبة ما قبل السحابة، كان "إعداد خادم لينوكس" يعني المشي إلى الرف وإدخال مثبّت USB والانتظار. اليوم، في مؤسسة DevOps ناضجة، لا أحد يُثبّت نظام تشغيل يدوياً. بدلاً من ذلك:

  • الصور: يحتفظ مزودو السحابة بصور AMI (AWS) أو images (GCP/Azure) منتقاة ومُقواة. تُشغّل من صورة معروفة الجودة ولا تعدّل الأساس أبداً — إن احتجت تغييراً، احرق صورة جديدة باستخدام Packer.
  • البنية التحتية الثابتة: تُعامَل الخوادم كماشية لا كحيوانات أليفة. VM المعطوب يُحذف ويُستبدل من نفس الصورة، لا يُدخل عليه SSH ويُصلَح.
  • User-data / cloud-init: الإعداد الخفيف (تثبيت عميل، تعيين اسم مضيف، إضافة مفاتيح SSH) يحدث عند الإقلاع الأول عبر cloud-init، لا بخطوات يدوية.
# مثال: تشغيل نسخة EC2 بنظام Ubuntu 24.04 مع cloud-init # (AWS CLI v2، مع افتراض تكوين بيانات الاعتماد) aws ec2 run-instances \ --image-id ami-0c02fb55956c7d316 \ # Ubuntu 24.04 LTS us-east-1 --instance-type t3.micro \ --key-name my-keypair \ --user-data file://bootstrap.sh \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=web-01}]'
مزلق إنتاجي: لا تستخدم قط اسم مستعار "latest" لصورة AMI في أتمتة الإنتاج دون تثبيت الإصدار. يُحدّث مزودو السحابة الصور الأساسية باستمرار؛ ترقية نواة غير مخططة في قالب الإطلاق قد تُعطل وحدة نواة يعتمد عليها تطبيقك. دائماً أشر إلى معرّف AMI محدد أو عائلة صور بوسم إصدار ثابت في Terraform أو Pulumi.

لماذا يهم هذا كل ما يأتي بعده

كل موضوع في هذه الدورة — برمجة الصدفة، وإدارة العمليات، والشبكات، والحاويات، و CI/CD — يفترض أنك تعمل على لينوكس. حين تتعطل حاوية، تقرأ سجلات نواة لينوكس. حين يكون خادم الويب بطيئاً، تفحص مخازن الشبكة في لينوكس. حين تفشل عملية نشر، تتتبعها عبر سجلات journalد systemd. النموذج الذهني الذي تبنيه في هذه السلسلة هو نموذج التشغيل لأنظمة الإنتاج في Google وAmazon وMeta وكل شركة ناشئة سحابية تسير على خطاهم.

ابدأ بمعرفة أي لينوكس تعمل عليه، وأي إصدار نواة يعمل، وما إذا كان النظام يتصرف كما هو متوقع. هذا الانضباط — لاحظ أولاً، تصرف ثانياً — هو أساس العمليات الموثوقة.