فرآیند بوت شدن لینوکس شامل چندین مرحله است که در هر یک از این مراحل، اجزای مختلفی نقش ایفا میکنند تا سیستمعامل به طور کامل بارگذاری و اجرا شود. دو مورد از این اجزا که درک آنها برای فهم بهتر فرآیند بوت لینوکس ضروری است، initrd و vmlinuz هستند. این دو مؤلفه به هسته سیستمعامل کمک میکنند تا پیش از بارگذاری کامل، محیطی برای دسترسی به فایلهای سیستمی ایجاد شود.
vmlinuz: هسته سیستمعامل لینوکس
vmlinuz فایلی است که حاوی هسته (kernel) فشردهشده سیستمعامل لینوکس است. کلمه “vmlinuz” از سه قسمت تشکیل شده است: “vm” که به virtual memory (حافظه مجازی) اشاره دارد، “linu” که به لینوکس اشاره دارد، و “z” که نشاندهنده فشردهسازی (zipped) فایل است.
هسته سیستمعامل لینوکس وظیفه مدیریت منابع سختافزاری، نظارت بر اجرای فرآیندها و فراهم کردن واسطهای بین نرمافزارها و سختافزارها را بر عهده دارد. در مراحل ابتدایی بوت، فایل vmlinuz توسط بوتلودر (مانند GRUB) بارگذاری میشود. این فایل حاوی کدهای مورد نیاز برای شروع کار هسته است.
initrd: دیسک رَم اولیه
initrd که مخفف “initial ramdisk” است، یک سیستم فایل موقت است که در مراحل ابتدایی بوت سیستم، پیش از آنکه سیستمفایل اصلی بارگذاری شود، استفاده میشود. initramfs که نسخه جدیدتر initrd است، عملکرد مشابهی دارد اما به جای استفاده از یک تصویر دیسک، به صورت مستقیم از حافظه رَم استفاده میکند.
وظیفه اصلی initrd فراهم کردن محیطی موقت است که در آن هسته سیستمعامل بتواند ماژولهای ضروری را برای دسترسی به سیستمفایل اصلی بارگذاری کند. به عنوان مثال، اگر سیستمفایل اصلی روی یک دیسک RAID یا یک دیسک رمزگذاریشده قرار داشته باشد، هسته برای دسترسی به این سیستمفایل نیاز به بارگذاری ماژولهای مربوطه از طریق initrd دارد.
مراحل استفاده از vmlinuz و initrd در فرآیند بوت
فرآیند بوت لینوکس با اجرای بوتلودر (مانند GRUB) آغاز میشود. بوتلودر ابتدا فایل vmlinuz را بارگذاری میکند که هسته لینوکس در آن قرار دارد. سپس بوتلودر فایل initrd را نیز بارگذاری میکند که حاوی سیستمفایل موقت است.
در این مرحله، هسته لینوکس شروع به اجرای خود میکند و فایل سیستمفایل موقت initrd را به عنوان ریشه (root) موقت خود قرار میدهد. با دسترسی به این سیستمفایل موقت، هسته میتواند ماژولهای ضروری برای دسترسی به سیستمفایل اصلی را بارگذاری کند.
پس از بارگذاری ماژولهای مورد نیاز، هسته سیستمفایل اصلی (مثلاً ext4 یا btrfs) را مونت میکند و فرآیند بوت را با استفاده از این سیستمفایل ادامه میدهد. در این مرحله، کنترل از initrd به سیستمفایل اصلی منتقل میشود و سیستم آماده بارگذاری سرویسها و برنامههای کاربردی میشود.
تفاوتهای initrd و initramfs
اگرچه initrd و initramfs هر دو وظیفه مشابهی دارند، اما تفاوتهایی میان آنها وجود دارد. initrd یک تصویر دیسک سنتی است که به صورت فشرده در قالب یک فایل ذخیره میشود و در زمان بوت باید در حافظه رَم استخراج شود. از سوی دیگر، initramfs به صورت مستقیم در حافظه رَم قرار میگیرد و نیازی به استخراج ندارد. این تفاوت باعث میشود که initramfs سرعت بیشتری در فرآیند بوت داشته باشد و همچنین انعطافپذیری بیشتری در مدیریت سیستمفایل موقت ارائه دهد.
نتیجهگیری
درک مفاهیم initrd و vmlinuz برای هر کاربر لینوکسی که به دنبال فهم عمیقتر از فرآیند بوت شدن لینوکس است، ضروری است. فایل vmlinuz به عنوان هسته فشردهشده سیستمعامل، وظیفه مدیریت منابع و فرآیندها را بر عهده دارد، در حالی که initrd یا initramfs به هسته کمک میکند تا پیش از دسترسی به سیستمفایل اصلی، ماژولهای ضروری را بارگذاری و سیستم را برای استفاده آماده کند. این دو مؤلفه در کنار هم نقش حیاتی در بوت شدن و عملکرد صحیح سیستمعامل لینوکس ایفا میکنند.