چگونه لينوکس بوت مي شود؟
نويسنده:ميثاق محمدي زاده
هر روز بارها کامپيوترمان را روشن کرده و براي چند ثانيه تا چند دقيقه شاهد بوت شدن سيستم عامل روي آن هستيم، اما تاکنون از خودمان سؤال کرده ايم در پس اين بوت شدن چه اتفاقي مي افتد تا سيستم عامل آماده اجراي دستورات شود؟ فرآيند بوت( Bootstrapping)چيست و شامل چه مراحل و پروسه هايي است؟ تفاوت فرآيند بوت در سيستم عامل هاي مختلف چيست؟ چرا يک سيستم عامل در چند ثانيه و ديگري در چند دقيقه بوت مي شود؟ کاربران لينوکس در هر بار روشن کردن کامپيوتر شاهد چندين ده خط هستند که پشت سر هم روي صفحه نمايش ظاهر شده و رد مي شوند؛ بدون اين که بدانند اين خطوط چه مي گويند.در اين شماره مي خواهيم به سراغ فرآيند بوت لينوکس برويم و از چند و چون آن مطلع شويم!
در مرحله بعد برنامه مديريت بوت به حافظه منتقل شده و شروع به اجرا شدن مي کند .در اين هنگام است که شما اولين صفحه بوت لينوکس را مشاهده خواهيد کرد.برنامه مديريت بوت به منتقل کردن فايل هاي بوت مربوط به هسته لينوکس و فايل هاي ريشه به درون حافظه اقدام مي کند.اين فايل ها در قالب يک فايل ايميج هستند که هنگام انتقال به حافظه گشوده شده و به طور کامل در حافظه مستقر مي شوند.از اين زمان به بعد مديريت بوت لينوکس برعهده برنامه مديريت بوت( GRUB يا LILO)است.اين برنامه سخت افزار سيستم، سخت افزارهاي متصل به سيستم، متصل کردن پارتيشن ها به سيستم و اجرا کردن ماژول هاي موردنياز هسته در حافظه را بررسي مي کند.مرحله آخر فرآيند بوت متعلق به اجراي برنامه سطح کاربري يا همان رابط هاي کاربري است.پيش از اين که به سراغ تشريح هريک از مراحل گفته شده برويم، به يک نکته اشاره کنم:همان طور که ديديد، سرعت بوت شدن سيستم عامل با اندازه حافظه سيستم و سرعت جا به جا کردن اطلاعات از روي ROM و هاردديسک به حافظه ارتباط مستقيمي دارد.
يکي از مهم ترين سرويس هايي که بايد در اين لحظه اجرا شود، سرويس شناسايي سيستم عاملي است که براي کاربر در اولويت دار قرار دارد.ممکن است دستگاه هاي مختلفي مانند CD/DVD-ROM، فلاپي ديسک، حافظه فلش و هاردديسک روي سيستم نصب شده باشند.بايوس با استفاده از تنظيمات CMOS روي مادربورد به ترتيب دستگاه هاي قابل بوت را براي يافتن برنامه مديريت بوت سيستم جست و جو مي کند.اگر برنامه مديريت بوت روي ساير دستگاه هاي قابل بوت وجود نداشته باشد، برنامه مديريت بوت لينوکس از روي MBR(Master Boot Record)در حافظه اجرا مي شود. MBR اولين سکتور روي اولين سيلندر و اولين هد هارد ديسک است که ظرفيت آن 512 بايت بيشتر نبوده و موجب اجراي برنامه مديريت بوت مي شود.در اين مرحله بايوس، کنترل بوت سيستم را به عهده برنامه مديريت بوت مي سپارد.
اشاره:براي مشاهده محتويات MBR مي توانيد از دستورات dd و od به صورت زير استفاده کنيد. دستور dd مي تواند 512 بايت اول روي dev/hda/ را بخواند يا درون فايل mbr.bin بنويسد.دستور od نيز محتويات فايل mbr.bin را به فرمت کدهاي اسکي يا هگزادسيمال نمايش مي دهد.توجه کنيد، براي اجراي اين دستورات به مجوز ريشه نياز داريد:
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 است.
تصوير 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 را به شما نمايش خواهد داد:
سطح 0:خاموش شدن سيستم
سطح 1:اجراي لينوکس در حالت تک کاربره
سطح 2:اجراي لينوکس در حالت چند کاربره بدون دسترسي به شبکه
سطح 3:اجراي لينوکس در حالت چند کاربره با دسترسي به شبکه
سطح 4:غيرقابل استفاده
سطح 5:اجراي لينوکس در حالت چند کاربره با شبکه و xdm
سطح 6:ريستارت سيستم
معمولاً لينوکس به صورت پيش فرض روي سطح اجرايي سه يا پنج تنظيم شده است، اما مي توان اين وضعيت را تغيير داد.براي تعيين نوع سطح اجرايي لينوکس مي توان به فايل پيکربندي etc/inittab/ مراجعه کرد.
لينوکس يکي از پيشرفته ترين برنامه هاي بوت را دارد.در پروسه بوت، کارايي در کنار استفاده از کمترين منابع سخت افزاري و بالا بردن سرعت همراه با انعطاف پذيري منظور شده است.برنامه بوت لينوکس قابليت تشخيص و سازگاري با ديگر برنامه هاي بوت سيستم عامل ها را دارد، به طوري که مي تواند چندين سيستم عامل روي يک هارد ديسک را تشخيص و پيکربندي کند.در مورد برنامه بوت لينوکس و پروسه هاي آن هنوز گفتني هاي زيادي وجود دارد.ترفندهاي بسياري مي توان با GRUB و ديگر فايل هاي بوت انجام داد که خود چندين مقاله مفصل را طلب مي کند.اميدوارم که با خواندن اين مقاله از فرآيند بوت لينوکس و آن خط هايي که پشت سر هم روي صفحه نمايش ظاهر مي شوند، آگاهي پيدا کرده باشيد!
منبع:عصر شبکه، شماره 96.
/ج
مراحل بوت
در مرحله بعد برنامه مديريت بوت به حافظه منتقل شده و شروع به اجرا شدن مي کند .در اين هنگام است که شما اولين صفحه بوت لينوکس را مشاهده خواهيد کرد.برنامه مديريت بوت به منتقل کردن فايل هاي بوت مربوط به هسته لينوکس و فايل هاي ريشه به درون حافظه اقدام مي کند.اين فايل ها در قالب يک فايل ايميج هستند که هنگام انتقال به حافظه گشوده شده و به طور کامل در حافظه مستقر مي شوند.از اين زمان به بعد مديريت بوت لينوکس برعهده برنامه مديريت بوت( GRUB يا LILO)است.اين برنامه سخت افزار سيستم، سخت افزارهاي متصل به سيستم، متصل کردن پارتيشن ها به سيستم و اجرا کردن ماژول هاي موردنياز هسته در حافظه را بررسي مي کند.مرحله آخر فرآيند بوت متعلق به اجراي برنامه سطح کاربري يا همان رابط هاي کاربري است.پيش از اين که به سراغ تشريح هريک از مراحل گفته شده برويم، به يک نکته اشاره کنم:همان طور که ديديد، سرعت بوت شدن سيستم عامل با اندازه حافظه سيستم و سرعت جا به جا کردن اطلاعات از روي ROM و هاردديسک به حافظه ارتباط مستقيمي دارد.
شروع به کار سيستم
يکي از مهم ترين سرويس هايي که بايد در اين لحظه اجرا شود، سرويس شناسايي سيستم عاملي است که براي کاربر در اولويت دار قرار دارد.ممکن است دستگاه هاي مختلفي مانند 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 #
برنامه مديريت بوت
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 است.
هسته لينوکس
تصوير 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.
سطوح اجرايي لينوکس
سطح 0:خاموش شدن سيستم
سطح 1:اجراي لينوکس در حالت تک کاربره
سطح 2:اجراي لينوکس در حالت چند کاربره بدون دسترسي به شبکه
سطح 3:اجراي لينوکس در حالت چند کاربره با دسترسي به شبکه
سطح 4:غيرقابل استفاده
سطح 5:اجراي لينوکس در حالت چند کاربره با شبکه و xdm
سطح 6:ريستارت سيستم
معمولاً لينوکس به صورت پيش فرض روي سطح اجرايي سه يا پنج تنظيم شده است، اما مي توان اين وضعيت را تغيير داد.براي تعيين نوع سطح اجرايي لينوکس مي توان به فايل پيکربندي etc/inittab/ مراجعه کرد.
لينوکس يکي از پيشرفته ترين برنامه هاي بوت را دارد.در پروسه بوت، کارايي در کنار استفاده از کمترين منابع سخت افزاري و بالا بردن سرعت همراه با انعطاف پذيري منظور شده است.برنامه بوت لينوکس قابليت تشخيص و سازگاري با ديگر برنامه هاي بوت سيستم عامل ها را دارد، به طوري که مي تواند چندين سيستم عامل روي يک هارد ديسک را تشخيص و پيکربندي کند.در مورد برنامه بوت لينوکس و پروسه هاي آن هنوز گفتني هاي زيادي وجود دارد.ترفندهاي بسياري مي توان با GRUB و ديگر فايل هاي بوت انجام داد که خود چندين مقاله مفصل را طلب مي کند.اميدوارم که با خواندن اين مقاله از فرآيند بوت لينوکس و آن خط هايي که پشت سر هم روي صفحه نمايش ظاهر مي شوند، آگاهي پيدا کرده باشيد!
منبع:عصر شبکه، شماره 96.
/ج