حرف I

نظام الملفات الأولي في الذاكرة العشوائية

Initramfs (Initial RAM Filesystem)

آخر تحديث: 2026-10-06
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

مصطلح Initramfs هو اختصار لعبارة Initial RAM File System، ويعني نظام الملفات الأولي المؤقت في الذاكرة العشوائية. عند تشغيل جهاز الكمبيوتر الذي يعمل بنظام لينكس، تحتاج النواة (Kernel) إلى الوصول إلى القرص الصلب لقراءة ملفات النظام وإكمال عملية التشغيل، ولكنها في بعض الأحيان لا تمتلك التعريفات أو الأدوات اللازمة لقراءة هذا القرص مباشرة (مثل الأقراص المشفرة أو مصفوفات التخزين المتقدمة). هنا يأتي دور Initramfs؛ فهو يعمل كحقيبة إسعافات أولية صغيرة يتم تحميلها في الذاكرة العشوائية فور بدء التشغيل، وتحتوي على أهم التعريفات والأدوات الضرورية التي تساعد النواة على التعرف على القرص الصلب وفك تشفيره وتجهيزه، وبمجرد أن يصبح القرص الحقيقي جاهزاً للعمل، يختفي هذا النظام المؤقت وتكتمل عملية تشغيل الجهاز بشكل طبيعي.

الشرح التقني المتقدم

يمثل initramfs (اختصار لـ Initial RAM File System) حجر الزاوية في عملية الإقلاع الحديثة لأنظمة لينكس. عند بدء تشغيل النظام، يقوم محمل الإقلاع مثل GRUB بتحميل كل من نواة لينكس (Kernel) وصورة initramfs مباشرة إلى الذاكرة العشوائية (RAM). تكمن المشكلة التقنية في أن النواة وحدها لا يمكنها تضمين كافة تعريفات وحدات التخزين، وأنظمة الملفات (مثل ext4 أو Btrfs)، وبروتوكولات الشبكة، وآليات فك التشفير (مثل LUKS) أو إدارة الأقراص المنطقية (LVM) بداخلها مباشرة دون أن يتضخم حجمها بشكل هائل. لذلك، يعمل initramfs كبيئة فضاء مستخدم مبكرة (Early User Space) تزود النواة بالوحدات (Modules) والسكربتات اللازمة لاكتشاف وتجهيز قسم الجذر الحقيقي (Real Root Filesystem) قبل تسليم القيادة لعملية النظام الأساسية مثل systemd.

آلية عمل Initramfs وهيكلته الداخلية

شرح تفصيلي للمفهوم:

ملف الأرشيف المضغوط: تقنياً، ملف initramfs هو عبارة عن أرشيف cpio مضغوط باستخدام خوارزميات ضغط سريعة مثل gzip أو zstd أو xz، ويتواجد عادة داخل المسار /boot بجانب ملف النواة. عند الإقلاع، تقوم النواة بفك ضغط هذا الأرشيف داخل نظام ملفات مؤقت في الذاكرة يُعرف باسم rootfs (وهو نسخة خاصة من tmpfs)، ثم تقوم بتشغيل سكربت البداية الموجود بداخله والمسمى /init. يتولى هذا السكربت تشغيل خدمة udev لاكتشاف العتاد، وتحميل وحدات النواة الضرورية، وتركيب نظام الملفات الحقيقي، وأخيراً تنفيذ أداة switch_root لإزالة النظام المؤقت من الذاكرة والانتقال الكامل إلى الجذر الفعلي للنظام.

تحديث وإعادة بناء Initramfs وفحص محتوياته

شرح لما يفعله هذا الأمر قبل تنفيذه:

أمر التنفيذ (تحديث الصورة في توزيعات ديبيان وأوبونتو):

sudo update-initramfs -u -k all

أمر التنفيذ (تحديث الصورة في توزيعات ريدهات وفيدورا عبر أداة dracut):

sudo dracut --regenerate-all --force

أمر التنفيذ (استعراض محتويات ملف Initramfs الحالي دون فك ضغطه):

lsinitramfs /boot/initrd.img-$(uname -r) | less

توضيح لما يحدث أو الفروقات التقنية:

- الخيار -u مع أداة update-initramfs: يوجه النظام لتحديث (Update) صورة الإقلاع الحالية بدلاً من إنشاء واحدة جديدة من الصفر، بينما يضمن الخيار -k all تطبيق التحديث على جميع أنوية لينكس المثبتة على النظام.

- أداة dracut وأداة mkinitcpio: تختلف الأدوات المسؤولة عن توليد صور initramfs باختلاف التوزيعة؛ حيث تعتمد عائلة ديبيان على initramfs-tools، بينما تستخدم عائلة ريدهات وفيدورا أداة dracut، وتعتمد توزيعة آرتش لينكس على الأمر sudo mkinitcpio -P.

- الفرق بين initrd القديم و initramfs الحديث: النظام الأقدم initrd (Initial RAM Disk) كان ينشئ قرصاً افتراضياً بحجم ثابت (Block Device) يتطلب نظام ملفات مخصصاً ويستهلك مساحة مضاعفة في ذاكرة التخزين المؤقت للنواة، بينما يعتمد initramfs على أرشيف cpio يتم تفريغه مباشرة في الذاكرة الديناميكية tmpfs، مما يوفر أداءً أعلى ومرونة كاملة في استهلاك الذاكرة.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

عند إجراء أي تعديل جوهري على إعدادات الإقلاع، مثل تعديل ملف /etc/crypttab، أو تغيير إعدادات LVM، أو حظر وحدة نواة معينة (Blacklist) داخل المسار /etc/modprobe.d/ (مثل حظر تعريف nouveau لتثبيت تعريف نفيديا الرسمي)، يجب عليك دائماً إعادة توليد صورة initramfs يدوياً قبل إعادة تشغيل الخادم أو الجهاز. إغفال هذه الخطوة يعني أن بيئة الإقلاع المبكرة ستظل تقرأ الإعدادات القديمة، وهو السبب الأول لظهور خطأ توقف النواة الشهير (Kernel Panic - not syncing: VFS: Unable to mount root fs). احرص دائماً على الاحتفاظ بنسخة نواة احتياطية وصورة إقلاع سليمة في قائمة GRUB لتتمكن من الإقلاع منها وإصلاح النظام عبر بيئة chroot عند حدوث أي طارئ.