نگاهی دقیقتر به فرایند بوت لینوکس
[right][font=Tahoma][size=2][b]نگاهی دقیقتر به فرایند راهاندازی لینوکس[/b][/size][/font][font=Tahoma][size=2]
[/size][/font][font=Tahoma][size=2]امروزه شما قادرید تا براحتی یکی از توزیعهای لینوکس را تهیه کرده و آنرا نصب و استفاده نمایید بدون اینکه واقعا نیاز داشته باشید تا بخشهای فنی سیستمعامل را درک نمایید[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]مقاله حاضر نگاهی اجمالی به فرایند راهاندازی سیستم لینوکس شما دارد[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]اصطلاح فنی راهاندازی کامپیوتر را فرایند بوت یا [/size][/font][font=Tahoma][size=2]Bootstrapping [/size][/font][font=Tahoma][size=2]میگویند و یا بطور خلاصهتر بوت [/size][/font][font=Tahoma][size=2](boot [/size][/font][font=Tahoma][size=2]یا [/size][/font][font=Tahoma][size=2]booting). [/size][/font][font=Tahoma][size=2]بخش آغازین این فرایند توسط کدهای ذخیره شده در [/size][/font][font=Tahoma][size=2]ROM [/size][/font][font=Tahoma][size=2]کامپیوتر انجام میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این بخش در همه سیستمعاملها یکسان میباشد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]وظیفه این کد بارگذاری مدیر بوت لینوکس [/size][/font][font=Tahoma][size=2](Linux Boot Loader) [/size][/font][font=Tahoma][size=2]برای ادامه فرایند میباشد[/size][/font][font=Tahoma][size=2].[/size][/font]
[/right]
[right][font=Tahoma][size=2][b]برنامههای مدیر بوت[/b][/size][/font][font=Tahoma][size=2]
[/size][/font][font=Tahoma][size=2]برنامههای مدیر بوت برنامههایی هستند که توسط [/size][/font][font=Tahoma][size=2]ROM [/size][/font][font=Tahoma][size=2]کامپیوتر [/size][/font][font=Tahoma][size=2]([/size][/font][font=Tahoma][size=2]یا همان [/size][/font][font=Tahoma][size=2]BIOS) [/size][/font][font=Tahoma][size=2]بارگذاری میشوند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در لینوکس دو مدیر بوت رایج وجود دارد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]لیلو [/size][/font][font=Tahoma][size=2](LiLO) [/size][/font][font=Tahoma][size=2]مدیر بوت سنتی لینوکس و گراب [/size][/font][font=Tahoma][size=2](Grub) [/size][/font][font=Tahoma][size=2]مدیر بوتی جدیدتر میباشد[/size][/font][font=Tahoma][size=2].[/size][/font][font=Tahoma][size=2]هرکدام از این برنامهها ابتدا مقداری اطلاعات پیکربندی را دریافت کرده و سپس هسته لینوکس یا سیستمعامل دیگری را بارگذاری میکند و ادامه فرایند بوت را به آن میسپارد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]قبلا دو مقاله برای آشنایی بیشتر با نحوه مدیریت و پیکربندی این دو مدیر بوت منتشر کردهام که میتوانید آنها را در بخش مقالات سایت مطالعه نمایید[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]مهمترین تفاوت بین لیلو و گراب در نحوه دریافت اطلاعات پیکربندی است[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]فایل پیکربندی لیلو با اجرای دستور [/size][/font][font=Tahoma][size=2]lilo [/size][/font][font=Tahoma][size=2]بصورت ثابت ذخیره میگردد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این اطلاعات یا در رکورد بوت اصلی [/size][/font][font=Tahoma][size=2](MBR [/size][/font][font=Tahoma][size=2]یا [/size][/font][font=Tahoma][size=2]Master Boot Record) [/size][/font][font=Tahoma][size=2]دیسک یا در رکورد بوت پارتیشن لینوکس ذخیره میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]اطلاعات پیکربندی که توسط دستور [/size][/font][font=Tahoma][size=2]lilo [/size][/font][font=Tahoma][size=2]استفاده میشود، عموما در فایل [/size][/font][font=Tahoma][size=2]etc/lilo.conf [/size][/font][font=Tahoma][size=2]ذخیره میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در زیر یک مثال از این فایل پیکربندی را مشاهده مینمایید[/size][/font][font=Tahoma][size=2].[/size][/font]
[/right]
[font=Tahoma][size=2]boot=/dev/hda # boot loader to MBR[/size][/font]
[font=Tahoma]root=/dev/hda1 # root partition[/font]
[font=Tahoma]install=/boot/boot.b[/font]
[font=Tahoma]map=/boot/map[/font]
[font=Tahoma]delay=50 # 5 second delay before auto-boot[/font]
[font=Tahoma]image=/vmlinuz # kernel[/font]
[font=Tahoma]label=linux # name to refer to entry[/font]
[font=Tahoma]read-only[/font]
[font=Tahoma]image=/vmlinuz.old # backup entry[/font]
[font=Tahoma]label=old[/font]
[font=Tahoma]read-only[/font][right] [font=Tahoma][size=2]در مثال بالا امکان انجام بوت از روی دو هسته مختلف یعنی [/size][/font][font=Tahoma][size=2]vmlinuz [/size][/font][font=Tahoma][size=2]و [/size][/font][font=Tahoma][size=2]vmlinuz.old [/size][/font][font=Tahoma][size=2]وجود دارد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]هنگام بوت شما میتوانید یکی از این هستهها را انتخاب نمایید[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]با فشردن کلید [/size][/font][font=Tahoma][size=2]TAB [/size][/font][font=Tahoma][size=2]در اعلان لیلو، گزینههای موجود لیست میشوند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در صورتی که هسته جدیدی را با ویرایش فایل [/size][/font][font=Tahoma][size=2]etc/lilo.conf [/size][/font][font=Tahoma][size=2]اضافه کردهاید و یا هر تغییر دیگری در فایل پیکربندی لیلو اعمال کردهاید، باید پس از آن دستور [/size][/font][font=Tahoma][size=2]lilo [/size][/font][font=Tahoma][size=2]را اجرا نمایید تا این تغییرات اعمال شوند[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]گراب فایل پیکربندی را هنگام بوت میخواند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]حجم [/size][/font][font=Tahoma][size=2]MBR [/size][/font][font=Tahoma][size=2]فقط ۵۱۲ بایت است و تنها بخشی از گراب که عهده دار فرایندهای بسیار ابتدایی بوت است در آن ذخیره میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]بقیه اطلاعات از روی پارتیشنی که اطلاعات بوت گراب در آن ذخیره شده است، بارگذاری میگردد[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]گراب توسط برنامه [/size][/font][font=Tahoma][size=2]grub-install [/size][/font][font=Tahoma][size=2]نصب میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]فایل پیکربندی گراب به طور معمول در مسیر [/size][/font][font=Tahoma][size=2]boot/grub/menu.lst [/size][/font][font=Tahoma][size=2]قرار دارد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در زیر یک مثال از این فایل را مشاهده مینمایید[/size][/font][font=Tahoma][size=2]:[/size][/font]
[/right]
[font=Tahoma][size=2]default 0[/size][/font]
[font=Tahoma]timeout 8[/font]
[font=Tahoma]gfxmenu (hd0,1)/boot/message[/font]
[font=Tahoma]title Linux[/font]
[font=Tahoma]kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 desktop showopts[/font]
[font=Tahoma]initrd (hd0,1)/boot/initrd[/font]
[font=Tahoma]title Failsafe[/font]
[font=Tahoma]kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 showopts ide=nodma apm=off acpi=o[/font]
[font=Tahoma]ff vga=normal nosmp noapic maxcpus=0 3[/font]
[font=Tahoma]initrd (hd0,1)/boot/initrd[/font]
[font=Tahoma]title Memory Test[/font]
[font=Tahoma]kernel (hd0,1)/boot/memtest.bin[/font][right] [font=Tahoma][size=2]در صورتی که شما کامپیوتر خود را با یک سیستمعامل عامل اختصاصی از ردموند به اشتراک گذاشتهاید، حواستان باشد که آنها اعتقاد دارند که سیستمعاملی جز سیستمعامل خودشان وجود ندارد و بنابراین اگر ویندوز را پس از لینوکس نصب کنید، بر روی [/size][/font][font=Tahoma][size=2]MBR [/size][/font][font=Tahoma][size=2]خواهد نوشت[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]به همین علت ابتدا ویندوز را نصب نمایید[/size][/font][font=Tahoma][size=2].[/size][/font]
[/right]
[right][font=Tahoma][size=2][b]سطوح اجرایی لینوکس[/b][/size][/font][font=Tahoma][size=2]
[/size][/font][font=Tahoma][size=2]سطوح اجرایی لینوکس به شما آرایهای از پیکربندیهای سیستمی ارائه میکنند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]بدون مشخص کردن، معمولا سیستم با سطح اجرایی پیشگزیده که ممکن است ۳، ۲ یا ۵ باشد، بوت میشود[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این سطح اجرایی پیشگزیده را میتوانید با ورود برخی کلمات کلیدی هنگام بوت تغییر دهید[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]به طور استاندارد ۷ سطح اجرایی در لینوکس وجود دارد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]از ۰ تا ۷[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]سطح اجرایی ۰ به معنی خاموش کردن سیستم، سطح اجرایی ۱ به معنی حالت تک کاربر و سطح اجرایی ۶ به معنی بوت مجدد [/size][/font][font=Tahoma][size=2](Reboot) [/size][/font][font=Tahoma][size=2]سیستم هستند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]سطوح اجرایی دیگری که رایج هستند عبارتند از سطح اجرایی ۳ که یک سیستم چند کاربره بدون محیط گرافیکی است، حالت اجرایی ۵ که محیط اجرایی چندکاربره همراه با محیط گرافیکی است[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]البته در سیستمهای مبتنی بر لینوکس دبیان، سطوح اجرایی ۳ و ۵ با سطح اجرایی ۲ جایگزین شدهاند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در بسیاری از سیستمها، یک سطح اجرایی دیگر موسوم به [/size][/font][font=Tahoma][size=2]S [/size][/font][font=Tahoma][size=2]وجود دارد که مشابه به سطح اجرایی ۱ بوده ولی برای ورود به آن نیاز به کلمه عبور ریشه میباشد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این بدلیل مسائل امنیتی است[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]محتویات فایل [/size][/font][font=Tahoma][size=2]etc/inittab [/size][/font][font=Tahoma][size=2]مشخص کننده سطوح اجرایی سیستم شما و سطح اجرایی پیشگزیده میباشد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]در زیر مثالی از این فایل را مشاهده مینمایید[/size][/font][font=Tahoma][size=2]:[/size][/font]
[/right]
[font=Tahoma][size=2]#[/size][/font]
[font=Tahoma]# /etc/inittab[/font]
[font=Tahoma]#[/font]
[font=Tahoma]# This is the main configuration file of /sbin/init, which[/font]
[font=Tahoma]# is executed by the kernel on startup.[/font]
[font=Tahoma]#[/font]
[font=Tahoma]# The default runlevel[/font]
[font=Tahoma]id:5:initdefault:[/font]
[font=Tahoma]# /etc/init.d/rc takes care of runlevel handling[/font]
[font=Tahoma]#[/font]
[font=Tahoma]# runlevel 0 is System halt (Do not use this for initdefault!)[/font]
[font=Tahoma]# runlevel 1 is Single user mode[/font]
[font=Tahoma]# runlevel 2 is Local multiuser without remote network (e.g. NFS)[/font]
[font=Tahoma]# runlevel 3 is Full multiuser with network[/font]
[font=Tahoma]# runlevel 4 is Not used[/font]
[font=Tahoma]# runlevel 5 is Full multiuser with network and xdm[/font]
[font=Tahoma]# runlevel 6 is System reboot[/font]
[font=Tahoma]#[/font]
[font=Tahoma]l0:0:wait:/etc/init.d/rc 0[/font]
[font=Tahoma]l1:1:wait:/etc/init.d/rc 1[/font]
[font=Tahoma]l2:2:wait:/etc/init.d/rc 2[/font]
[font=Tahoma]l3:3:wait:/etc/init.d/rc 3[/font]
[font=Tahoma]l5:5:wait:/etc/init.d/rc 5[/font]
[font=Tahoma]l6:6:wait:/etc/init.d/rc 6[/font]
[font=Tahoma]# what to do in single-user mode[/font]
[font=Tahoma]ls:S:wait:/etc/init.d/rc S[/font]
[font=Tahoma]~~:S:respawn:/sbin/sulogin[/font]
[font=Tahoma]# what to do when CTRL-ALT-DEL is pressed[/font]
[font=Tahoma]ca::ctrlaltdel:/sbin/shutdown -r -t 4 now[/font]
[font=Tahoma]# getty-programs for the normal runlevels[/font]
[font=Tahoma]# :::[/font]
[font=Tahoma]# The "id" field MUST be the same as the last[/font]
[font=Tahoma]# characters of the device (after "tty").[/font]
[font=Tahoma]1:2345:respawn:/sbin/mingetty --noclear tty1[/font]
[font=Tahoma]2:2345:respawn:/sbin/mingetty tty2[/font]
[font=Tahoma]3:2345:respawn:/sbin/mingetty tty3[/font]
[font=Tahoma]4:2345:respawn:/sbin/mingetty tty4[/font]
[font=Tahoma]5:2345:respawn:/sbin/mingetty tty5[/font]
[font=Tahoma]6:2345:respawn:/sbin/mingetty tty6[/font][right] [font=Tahoma][size=2]خط [/size][/font][font=Tahoma][size=2]id:5:initdefault [/size][/font][font=Tahoma][size=2]به معنی این است که سطح اجرایی پیشگزیده کامپیوتر شما سطح اجرایی ۵ است[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]خطوط [/size][/font][font=Tahoma][size=2]l1:1:wait:/etc/init.d/rc 1 [/size][/font][font=Tahoma][size=2]و به همین ترتیب، باعث میشوند تا اسکریپت [/size][/font][font=Tahoma][size=2]etc/init.d/rc [/size][/font][font=Tahoma][size=2]سطح اجرایی مربوطه را بصورت یک آرگومان ارسال نماید[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]سپس این اسکریپت پروسههای خاص سطح اجرایی ارسال شده را آغاز میکند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]تمام اسکریپتهای کنترل کننده پروسههای مختلف در مسیر [/size][/font][font=Tahoma][size=2]etc/init.d/ [/size][/font][font=Tahoma][size=2]ذخیره شدهاند[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]به طور معمول، بطور معمول پروسههایی که با ورود به یک سطح اجرایی، اجرا یا متوقف خواهند شد در زیر دایرکتوریهایی مانند [/size][/font][font=Tahoma][size=2]rc2.d [/size][/font][font=Tahoma][size=2]یا [/size][/font][font=Tahoma][size=2]rc5.d ([/size][/font][font=Tahoma][size=2]همنام با شماره سطح اجرایی مربوطهشان[/size][/font][font=Tahoma][size=2]) [/size][/font][font=Tahoma][size=2]ذخیره شدهاند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این فایلها لینکهای [/size][/font][font=Tahoma][size=2]Symbolic [/size][/font][font=Tahoma][size=2]به اسکریپتهای موجود در [/size][/font][font=Tahoma][size=2]etc/init.d/ [/size][/font][font=Tahoma][size=2]میباشند[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]لینکهایی که با [/size][/font][font=Tahoma][size=2]K [/size][/font][font=Tahoma][size=2]آغاز میشوند، هنگام ورود به سطح اجرایی مربوطه نابود [/size][/font][font=Tahoma][size=2](Kill) [/size][/font][font=Tahoma][size=2]خواهند شد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]لینکهایی که با [/size][/font][font=Tahoma][size=2]S [/size][/font][font=Tahoma][size=2]شروع میشوند، هنگام ورود به آن سطح اجرایی شروع [/size][/font][font=Tahoma][size=2](Start) [/size][/font][font=Tahoma][size=2]خواهند شد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این لینکها بصورت الفبایی اجرا میشوند، به این معنی که ابتدا لینکهای [/size][/font][font=Tahoma][size=2]K [/size][/font][font=Tahoma][size=2]آغاز شده و سپس لینکهای [/size][/font][font=Tahoma][size=2]S. [/size][/font][font=Tahoma][size=2]ترتیب اجرای لینکهای [/size][/font][font=Tahoma][size=2]K [/size][/font][font=Tahoma][size=2]و [/size][/font][font=Tahoma][size=2]S [/size][/font][font=Tahoma][size=2]با عددی دو رقمی که بلافاصله پس از حروف [/size][/font][font=Tahoma][size=2]S [/size][/font][font=Tahoma][size=2]یا [/size][/font][font=Tahoma][size=2]K [/size][/font][font=Tahoma][size=2]قرار میگیرد، تعیین میشود[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]این روش، روش استاندارد برای اجرای پروسهها در آغاز فرایند بوت میباشد[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]این سیستم استاندارد به [/size][/font][font=Tahoma][size=2]System V Init [/size][/font][font=Tahoma][size=2]موسوم میباشد که مشابه با سیستمعامل یونیکس است[/size][/font][font=Tahoma][size=2].
[/size][/font][font=Tahoma][size=2]در صورتی که همه چیز به خوبی پیش رفته باشد، سیستم شما هم اکنون در حال اجرا بر روی سطح اجرایی انتخاب شده است[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]برای تغییر سطح اجرایی میتوانید بصورت کاربر ریشه وارد شده و دستور [/size][/font][font=Tahoma][size=2]init [/size][/font][font=Tahoma][size=2]را در خط فرمان تایپ نمایید[/size][/font][font=Tahoma][size=2]. [/size][/font][font=Tahoma][size=2]برای مثال [/size][/font][font=Tahoma][size=2]init 3.
[/size][/font]
[/right]
[right][font=Tahoma][size=2][url="http://www.linuxgazette.com/user/view/1587"]منبع[/url]
[/size][/font]
[/right]
منبع: [url]http://technotux.com/html/modules.php?op=modload&name=Sections&file=index&req=viewarticle&artid=47&page=1[/url]