لینوکس چگونه بوت می شود

جزییات بازدید : 9977

تاریخ انتشار : 31 / اردیبهشت / 1397

لینوکس چگونه بوت می شود

لینوکس چگونه بوت می شود

امتیاز :      ( 4.4 / 5 - 8 نفر )

کاربران لينوکس در هر بار روشن کردن کامپيوتر شاهد چندين ده خط هستند که پشت سر هم روي صفحه نمايش ظاهر شده و رد مي شوند؛ بدون اين که بدانند اين خطوط چه مي گويند.

 

    هر روز بارها کامپيوترمان را روشن کرده و براي چند ثانيه تا چند دقيقه شاهد بوت شدن سيستم عامل روي آن هستيم، اما تاکنون از خودمان سؤال کرده ايم در پس اين بوت شدن چه اتفاقي مي افتد تا سيستم عامل آماده اجراي دستورات شود؟ فرآيند بوت( Bootstrapping)چيست و شامل چه مراحل و پروسه هايي است؟ تفاوت فرآيند بوت در سيستم عامل هاي مختلف چيست؟ چرا يک سيستم عامل در چند ثانيه و ديگري در چند دقيقه بوت مي شود؟ کاربران لينوکس در هر بار روشن کردن کامپيوتر شاهد چندين ده خط هستند که پشت سر هم روي صفحه نمايش ظاهر شده و رد مي شوند؛ بدون اين که بدانند اين خطوط چه مي گويند.در اين شماره مي خواهيم به سراغ فرآيند بوت لينوکس برويم و از چند و چون آن مطلع شويم!

مراحل بوت

     در لينوکس فرآيند بوت در چندين مرحله صورت مي گيرد يا دست کم مي توانيم فرآيند بوت را به چندين مرحله مجزا کنيم که درک و تصور بهتري از آن داشته باشيم.در تصوير 1 مراحل بوت لينوکس به صورت کلي ترسيم شده است .هنگامي که براي اولين بار کامپيوتر روشن يا ريستارت مي شود، يک سري کد اجرايي از روي حافظه ROM يا دستگاه هاي ذخيره سازي ديگر مانند حافظه فلش فراخواني و اجرا مي شود.اولين کاري که اين کدها انجام مي دهند، دستور دادن به CPU براي يافتن اولين دستگاه قابل بوت است.CPU با مراجعه به بايوس مادربورد، آدرس اولين دستگاه قابل بوت را فراخواني کرده و به آنجا اشاره مي کند.سپس محتويات اولين سکتور دستگاه قابل بوت يا MBR به حافظه منتقل مي شود.اندازه MBR کمتر از 512 بايت و وظيفه آن اجرا کردن برنامه مديريت بوت است. در مرحله بعد برنامه مديريت بوت به حافظه منتقل شده و شروع به اجرا شدن مي کند .در اين هنگام است که شما اولين صفحه بوت لينوکس را مشاهده خواهيد کرد.برنامه مديريت بوت به منتقل کردن فايل هاي بوت مربوط به هسته لينوکس و فايل هاي ريشه به درون حافظه اقدام مي کند.اين فايل ها در قالب يک فايل ايميج هستند که هنگام انتقال به حافظه گشوده شده و به طور کامل در حافظه مستقر مي شوند.از اين زمان به بعد مديريت بوت لينوکس برعهده برنامه مديريت بوت( GRUB يا LILO)است.اين برنامه سخت افزار سيستم، سخت افزارهاي متصل به سيستم، متصل کردن پارتيشن ها به سيستم و اجرا کردن ماژول هاي موردنياز هسته در حافظه را بررسي مي کند.مرحله آخر فرآيند بوت متعلق به اجراي برنامه سطح کاربري يا همان رابط هاي کاربري است.پيش از اين که به سراغ تشريح هريک از مراحل گفته شده برويم، به يک نکته اشاره کنم:همان طور که ديديد، سرعت بوت شدن سيستم عامل با اندازه حافظه سيستم و سرعت جا به جا کردن اطلاعات از روي ROM و هاردديسک به حافظه ارتباط مستقيمي دارد.

شروع به کار سيستم

     اين مرحله وابستگي شديدي به سخت افزاري دارد که لينوکس روي آن نصب شده است.در سيستم هاي پيشرفته براي شروع به کار سيستم شامل روشن شدن يا ريستارت سيستم و روشن شدن صفحه نمايش از نرم افزارهاي مخصوصي مانند U-Boot، RedBoot و Micromonitor استفاده مي کنند، اما غالباً سيستم ها اين مرحله را با روشن شدن صفحه نمايش شروع مي کنند.سپس شناسايي اوليه سخت افزار و اجرا شدن بايوس مادربورد شروع مي شود.در کامپيوترهاي شخصي بوت لينوکس از آدرس 0xFFFF0 بايوس شروع مي شود.اولين کار بايوس عمليات POST يا Power-on Self Test است که به شناسايي سخت افزار و بررسي آن مي پردازد.بايوس پس از عمليات POST به سراغ شناسايي سخت افزارهاي جديد و سخت افزارهاي قابل بوت مي رود.در اين هنگام بايوس سرويس هاي جديد در حافظه را راه اندازي مي کند. يکي از مهم ترين سرويس هايي که بايد در اين لحظه اجرا شود، سرويس شناسايي سيستم عاملي است که براي کاربر در اولويت دار قرار دارد.ممکن است دستگاه هاي مختلفي مانند CD/DVD-ROM، فلاپي ديسک، حافظه فلش و هاردديسک روي سيستم نصب شده باشند.بايوس با استفاده از تنظيمات CMOS روي مادربورد به ترتيب دستگاه هاي قابل بوت را براي يافتن برنامه مديريت بوت سيستم جست و جو مي کند.اگر برنامه مديريت بوت روي ساير دستگاه هاي قابل بوت وجود نداشته باشد، برنامه مديريت بوت لينوکس از روي MBR(Master Boot Record)در حافظه اجرا مي شود. MBR اولين سکتور روي اولين سيلندر و اولين هد هارد ديسک است که ظرفيت آن 512 بايت بيشتر نبوده و موجب اجراي برنامه مديريت بوت مي شود.در اين مرحله بايوس، کنترل بوت سيستم را به عهده برنامه مديريت بوت مي سپارد. اشاره:براي مشاهده محتويات MBR مي توانيد از دستورات dd و od به صورت زير استفاده کنيد. دستور dd مي تواند 512 بايت اول روي dev/hda/ را بخواند يا درون فايل mbr.bin بنويسد.دستور od نيز محتويات فايل mbr.bin را به فرمت کدهاي اسکي يا هگزادسيمال نمايش مي دهد.توجه کنيد، براي اجراي اين دستورات به مجوز ريشه نياز داريد:

چگونه لينوکس بوت مي شود؟

dd if=/dev/hda of=mbr.bin bs=512 # count=1 od -xa mbr.bin #

برنامه مديريت بوت

     برنامه مديريت بوت که از روي MBR به درون حافظه منتقل و اجرا مي شود، شامل جدول پارتيشن هاي سيستم و کدهاي اجرايي خود برنامه است.همان طور که در تصوير 2 مشاهده مي کنيد، 446 بايت اول MBR متعلق به برنامه مديريت بوت و پيغام هاي خطا است.جدول پارتيشن هاي سيستم نيز در يک فضاي 64 بيتي ذخيره مي شود.اين جدول شامل چهار رکورد پارتيشن شانزده بايتي است.دو بايت انتهايي MBR نيز يک شماره مانند 0xAA55 براي محافظت و اعتبار سنجي محتويات روي MBR است.هر پارتيشن نيز به فيلدهايي تقسيم شده و شامل آدرس پارتيشن، اندازه پارتيشن، وضعيت پارتيشن، فرمت و اطلاعات ضروري ديگر است.برنامه مديريت بوت در مرحله دوم، هسته لينوکس و فايل هاي مورد نياز را در حافظه اجرا مي کند.برنامه هاي مديريت بوت در لينوکس LILO(Linux Loader) و GRUB(GRand Unifield Bootloader) ناميده مي شوند.به اين دليل که LILO در مقايسه با GRUB داراي ضعف ها و کاستي هايي است، در اين بخش به بررسي GRUB مي پردازيم.مهم ترين تفاوت GRUB در مقايسه با LILO در استفاده از سيستم فايل لينوکس است. LILOبرنامه اي است که از روي رديف هايي از سکتورهاي هاردديسک اجرا مي شود و بيشتر مبتني بر اطلاعات ثابت ذخيره شده روي هاردديسک است، اما GRUB از سيستم فايل لينوکس( Ext3/Ext2)براي اجراي هسته سيستم عامل بهره مي برد.نمونه اي از فايل پيکربندي LILO را در تصوير 3 مشاهده مي کنيد. GRUB شامل سه مرحله است:مرحله اول بوت از روي سکتور MBR به درون حافظه است، مرحله دوم شامل کسب اطلاعاتي از وضعيت پارتيشن ها و فايل سيستم لينوکس براي اجراي هسته لينوکس است.اين مرحله شامل اجراي فايل هايي مانند reiserfs_stage 1_5 از روي ژورنالينگ فايل سيستم و e2fs_stage 1_5 از روي سيستم فايل هاي Ext2 و Ext3 است. عدد 1/5 در نام اين دو فايل به معناي مرحله 1/5 و ميان مرحله 1و 2 است. مرحله سوم نيز اجراي هسته لينوکس و نمايش فهرستي از هسته ها از روي فايل هاي etc/grub.conf/ و etc/grub/menu.lst/ است( تصوير4).در اين مرحله است که شما رابط GRUB را ديده و مي توانيد يکي از انواع سيستم عامل ها با هسته هاي مختلف و حتي سيستم عامل لينوکس را براي اجرا انتخاب کنيد.رابط GRUB گرافيکي است، اما مي توانيد به رابط خط فرمان اين برنامه نيز سوييچ کرده و دستورات خط فرمان مانند دستورات تعمير GRUB يا انتخاب يک هسته خاص را وارد و اجرا کنيد. اشاره:دايرکتوري boot/grub/ شامل اطلاعات و فايل هاي سه مرحله گفته شده در بالا است.شما مي توانيد به راحتي با ويرايش فايل ها در اين دايرکتوري کارهاي جالبي را انجام دهيد.براي نمونه اطلاعات مربوط به CD-ROM در فايل iso9660_stage_1_5 است.

 

هسته لينوکس

     هنگامي که تصوير هسته لينوکس درون حافظه قرار گرفته و اجرا مي شود، لينوکس شروع به کار کرده و مديريت بوت از دست GRUB خارج مي شود.البته استفاده از لفظ « اجراي هسته لينوکس»در اين مرحله کاملاً صحيح نيست، زيرا عملاً هسته اجرا نمي شود، بلکه از حالت فشرده خارج شده و چند سرويس محدود مانند سرويس هاي مرتبط با سخت افزار در حافظه اجرا مي شوند.ايميج هسته لينوکس اگر کمتر از 512 کيلوبايت باشد به آن zImage و اگر بيشتر از اين مقدار باشد، bzImage گفته مي شود.فايل هاي ايميج هسته با استفاده از ابزار zlib فشرده سازي و گشوده مي شوند.پس از قرارگيري کامل ايميج هسته درون حافظه، هسته لينوکس شروع به اجراي چند تابع مهم مي کند. تصوير 5 مهم ترين توابعي را که اجرا و فراخواني مي شوند به همراه نام فايل تابع نشان مي دهد.اولين تابع، start است که با اجراي فايل arch/i386/boot/compressed/head.S/ .فراخواني مي شود.اين تابع نيز کارهايي مانند اختصاص فضا به متغيرهاي پشته( Stack)و پاک کردن BSS(Block Started by Symbol)را انجام مي دهد. تابع سوم به نام decompress_kernel فايل arch/i386/boot/compressed/misc.c/ .اجرا مي شود که هسته لينوکس را به طور کامل درون حافظه بازگشايي مي کند. توابع ديگر مربوط به فراخواني هسته، شروع به کار هسته و ارتباط دهي هسته با پردازنده سيستم و آماده بودن پردازنده براي اجراي فرامين است که از تشريح آن ها خودداري مي کنيم.

چگونه لينوکس بوت مي شود؟

     هنگام بوت شدن هسته، پروسه initrd که در مرحله دوم اجراي برنامه مديريت بوت به درون حافظه انتقال يافته است، فعال مي شود.اين پروسه يک فايل سيستم ريشه موقت را درون حافظه به وجود مي آورد که امکان بوت هسته لينوکس را بدون نياز به هيچ دسترسي فيزيکي به هاردديسک و بالا بردن سرعت عمل بيشتر هسته فراهم مي کند.هنگامي که هسته لينوکس به طور کامل اجرا مي شود، اين پروسه اصطلاحاً unmount شده و سيستم فايل حقيقي به هسته متصل مي شود.در حقيقت پروسه initrd امکان ايجاد يک هسته لينوکس کوچک و فشرده شده را فراهم مي کند که به اين وسيله مي توان لينوکس را به راحتي اجرا يا روي سيستم هاي ديگر بدون وابستگي به هارد ديسک منتقل کرد. اشاره:براي اجراي يک هسته خاص لينوکس با استفاده از خط فرمان GRUB به صورت زير عمل کنيد.اگر نام نسخه هسته را نمي دانيد، علامت « /» را تايپ و کليد TAB را فشار دهيد. GRUB فهرستي از نسخه هاي هسته موجود و فايل هاي ايميج initrd را به شما نمايش خواهد داد:

grub>kernel/bzImage-2.6.14.2 [Linux-bzImage,setup=ox1400,size=0x29672e] grub>initrd/initrd-2.6.14.2.img [Linux-initrd @ ox5f13000,0xcc199 bytes] grub>boot Uncompressing Linux...Ok,booting the kernel.

سطوح اجرايي لينوکس

     پس از اجراي کامل هسته لينوکس، برنامه سطح کاربري يا همان محيط گرافيکي اجرا مي شود.اين برنامه اولين نرم افزاري است که به وسيله کامپايلر و توابع کتابخانه اي زبان سي اجرا مي شود.در محيط گرافيکي دسکتاپ اولين پروسه sbin/init/ است که اجرا مي شود.مهم ترين وظيفه پروسه init تعيين نوع اجراي لينوکس يا تعيين سطح اجرايي کاربري لينوکس ( RunLevel)است که شما آن را روي صفحه نمايش مي بينيد.به طور کلي، لينوکس مي تواند در هفت سطح اجرا شود.اين سطوح کارهاي زير را انجام مي دهند: سطح 0:خاموش شدن سيستم سطح 1:اجراي لينوکس در حالت تک کاربره سطح 2:اجراي لينوکس در حالت چند کاربره بدون دسترسي به شبکه سطح 3:اجراي لينوکس در حالت چند کاربره با دسترسي به شبکه سطح 4:غيرقابل استفاده سطح 5:اجراي لينوکس در حالت چند کاربره با شبکه و xdm سطح 6:ريستارت سيستم معمولاً لينوکس به صورت پيش فرض روي سطح اجرايي سه يا پنج تنظيم شده است، اما مي توان اين وضعيت را تغيير داد.براي تعيين نوع سطح اجرايي لينوکس مي توان به فايل پيکربندي etc/inittab/ مراجعه کرد. لينوکس يکي از پيشرفته ترين برنامه هاي بوت را دارد.در پروسه بوت، کارايي در کنار استفاده از کمترين منابع سخت افزاري و بالا بردن سرعت همراه با انعطاف پذيري منظور شده است.برنامه بوت لينوکس قابليت تشخيص و سازگاري با ديگر برنامه هاي بوت سيستم عامل ها را دارد، به طوري که مي تواند چندين سيستم عامل روي يک هارد ديسک را تشخيص و پيکربندي کند.در مورد برنامه بوت لينوکس و پروسه هاي آن هنوز گفتني هاي زيادي وجود دارد.ترفندهاي بسياري مي توان با GRUB و ديگر فايل هاي بوت انجام داد که خود چندين مقاله مفصل را طلب مي کند.اميدوارم که با خواندن اين مقاله از فرآيند بوت لينوکس و آن خط هايي که پشت سر هم روي صفحه نمايش ظاهر مي شوند، آگاهي پيدا کرده باشيد!

ثبت نظر برای این مقاله
امتیاز دهید :
سوال امنیتی : مجموع عدد به علاوه عدد برابر است با : (به عدد وارد نمایید .)