دانستن نحوه عملکرد سیستم عامل به کاربران در حل مشکلات سیستم خیلی کمک میکند که روند بوت در لینوکس چطور هست و اینکه منظور از اینکه لینوکس در چندین سطح اجرا میشه چیه ؟ که در ادامه با runlevel ها در لینوکس و سطوح اجرایی و مفاهیم و ابزارها و همچنین روند بوت در لینوکس میپردازیم. آموزش روند بوت لینوکس و RunLevel ها برای تمامی کسانی که به تازگی با سیستم عامل لینوکس شروع به کار نموده اند مفید بوده و آنها را در فهم بهتر معماری این سیستم عامل یاری می نماید.
همچنین توصیه میشود مطالعه کنید :
فرآیند 6 مرحله ای پروسه Boot در Linux (بوت در لینوکس و جریانات Startup)
60 دستور ترمینال که هر ادمین لینوکسی باید بلد باشد
آشنایی با روند بوت در لینوکس :
در ابتدا وقتی لینوکس بارگذاری میشه در مرحله اول چک آپ اولیه ای از سیستم مثل برسی رم و سی پی یو و قطعات کامپیوتر مثل کیبرد و موس و غیره انجام میشه که این کارها در ابتدای قبل از تحویل دادن به Baios و پس گرفتن از بایوس انجام میشه بعد از اینکه دیوایس ها شناخته شد بایوس آماده میشه تا سیستم رو تحویل به هارد دیسک شما بده که سیستم عامل تون لود بشه بعد میره سراغ هاردیسک جایی که MBR یا Master Boot Rercord (اولین سکتور هارد تون) هست که اطلاعات بوت دیسک در اون وجود دارد که سیستم عامل رو از اونجا boot میکنه.
در مواردی که شما دو یا بیشتر از یک سیستم عامل دارین این اتفاق به صورت دیگه ای رخ میده که یا شما باید از نرم افزاری برای انتخاب دو سیستم عامل در Master Boot Rercord استفاده کنید که در فضای کوچک مستر بوت ریکورد قرار بگیره یا اگر نرم افزار بزرگ هست چاره ای دیگه اندیشه بشه. دو نرم افزار مدیریت بوت برای سیستم عامل لینوکس که از بقیه معروف تر هستند lilo یا grub هستند گراب داری دو ورژن هست یک و دو هست که ورژن دو خیلی قدرتمند تر و حرفه ای تر میباشد و همچنین به دلیل زیادی حجم اون در مستر بوت ریکورد جا نمیشد و برعکس Lilo که جا میشد این مشکل رو نداشت ولی قابلیت هاش کمتر از گراب بود. برای حل این مشکل اول آدرس grub رو در Master Boot Rercord مینویسیم و وقتی که سیستم تحویل داده شد به Master Boot Rercord بعد آدرس گراب پیدا بشه و سیستم برای بوت به اون قسمت مراجعه کنه.
همونطور که میدونید موقع نصب لینوکس پارتیشنی ساخته میشود به نام boot که معمولا توی یک پارتیشن جداگانه نصب میشه ولی داخل پارتیشن root هم میتونید اونو هم نصب کنید . داخل اسلاش بوت (boot/) اطلاعات مربوط به grub یا خود گراب - kernel شما و یکسری از ماژول ها قرار داره که کرنل برای بوت شدن به اونها نیاز خواهد داشت بعد از اینکه گراب انتخاب شد مرحله یک به اتمام رسیده و وارد مرحله دوم میشیم وقتی که سیستم عامل رو انتخاب کردین تحویل میده به کرنل . برای دیدن اطلاعات گراب میتوانید به فولدر boot/grub/ مراجعه کنید و فایل grub.cfg را باز کنید.
نکته : برای تغیرات در فایل گراب ابتدا فایل گراب را از این مسیر باز کنید etc/defualt/grub/ و تغییرات خود را در این فایل انجام بدین بعد تغییرات انجام شده خودش در فایل grub.cfg اعمال میشه. و سعی کنید اگر به لینوکس تسلط ندارین این دو فایل بالا رو دستکاری نکنید.
خوب بریم سراغ مرحله بعد که لود کرنل به چه صورت انجام میشه ما در ابتدای به امر - که بوت مون مشخص شد داخل فولدر بوت فایل های kernel مون وجود داره به نام vmlinuze که ورژنش هم به همراهش هست که این فایل ها باید بارگذاری بشن :
قبل از این عمل دیگه ای انجام میشه که فایل init.rd.img یا initial ram disk اجرا میشه که به صورت موقت در مموری بارگذاری میشه تا با استفاده از کرنلی که وجود داره و ماژول های اولیه که هست پارتیشن اسلاش شما یا همون روت شما بارگذاری بشه ابتدا این فایل لود میشه که یه فایل اسکریپت داخلش داره به نام init که مادر همه اسکریپ ها میباشد. شما اگر این دستور رو در ترمینال لینوکس خود وارد کنید :
متوجه خواهید شد که با PID شماره 1 میباشد. یعنی اولین برنامه ای که روی سیستم تون اجرا میشه این فایل init هست که مسولیت بالا اوردن تمامی سرویس هایی که روی سیستم عامل تون هست این برعهده داره اما در ابتدا این sbin/init/ داخل پارتیشن روت قرار داره این پوشه اول باید چک بشه شاید در فایل initتعریف شده وقتی سیستم داره بالا میاد چک بشه یا برای mount کردن ها در کانفیگ اون پارتیشن تعریف شده که هر دفعه سیستم بالا اومد اون چک بشه - پس قبل از اینکه بخواد اون رو شروع کنه یک پروسه دیگه ای اتفاق بیوفته تا خود اون رو چک کنه و بعد بیاد init که داخل اینی که هست رو استارت کنه این عملیات وردوش initrd هست که کرنل رو به همراه یک فای init که داخل دایرکتوری روت همین فایل زیپ شده هست قرار داره و بعد از باز شدنش در مموری میاد و اون فایل رو فراخوانی میکنه و بعدش init رو فراخوانی کنه و بعدش مراحل بعدی بوت رو انجام بده.
runlevel یا سطوح اجرایی در لینوکس چیست؟
سطوح اجرا (runlevels) به مدهای عملیاتی سیستم عامل گفته می شود که وضعیت دستگاه بعد از بوت شدن را تعریف می کند. اکثر مشاهده کردین موقع بوت شدن ویندوز اگر کلید F8 روبزنید ویندوز رو با حالت safe mode میاره بالا که در اونجا میتونید سطوح مختلف ویندوز رو مشاهده کنید که میتونید بگید که بدون شبکه بیاد بالا یا با اخرین تغییراتی که انجام شده و غیره بیاد بالا :
توی سیستم عامل لینوکس به این حالت های مختلف بالا امدن میگیم runlevel
برای اجرای لینوکس چندین سطح تعریف شده که هر یک از این سطوح یکسری امکانات وجود دارند که موقع بوت شدن به هر سطحی که میرسه پروسه های مورد نیاز اون سطح استفاده میشه که در جدول شماره 2 به طور کامل روند بوت در لینوکس رو که در 6 سطح انجام میشه رو توضیح دادیم.
اگر لینوکس را در سطح 2 اجرا کنیم به شبکه دسترسی نخواهیم داشت. پروسه init در دایرکتوری sbin مسولیت انتخاب یک سطح و اجرای لینوکس را بر عهده دارد. برای تغییر سطح اجرایی در لینوکس باید فایل etc/inittab/ را ویرایش کنید.
به طور قراردادی ۷ سطح اجرا وجود دارد که از ٠ تا ٦ شماره گذاری شده اند؛ البته تا ده مد اجرا یعنی از 0 تا 9 می تواند تعریف و استفاده شود. یکی از این مدهای عملیاتی، مد تک کاربره است که می توان بجای عدد از نماد S استفاده کرد.
نکته : هنگام بوت تنها یکی از سطوح اجرای ٢ یا ٣ یا ٤ اجرا میشود و اینطور نیست که به ترتیب سطوح 1,2,3,4,5 اجرا شود .
سطوح اجرا معمولاً به وضعیت های زیر تخصیص یافته اند :
مد تک کاربره
مد چندکاربره بدون شروع سرویس های شبکه
مد چندکاربره با سرویس های شبکه
خاموش کردن سیستم
راه اندازی مجدد (ریبوت) سیستم
تنظیمات دقیق پیکربندی های فوق از سیستم عامل به سیستم عامل و از یک توزیع لینوکس به توزیع دیگر فرق می کند. مثلاً سطح اجرای 4 ممکن است در یک توزیع مد چندکاربره، محیط کاربری گرافیکی یا بدون هیچ سروری باشد و در توزیع دیگری سطح 4 ممکن است هیچ چیز نباشد که در جداول زیر به صورت کامل به تفاوت سطوح اجرا در لینوکس ها و یونیکس ها متفاوت پرداخته ایم.
در عمل و به طور استاندارد وقتی کامپیوتری به سطح اجرای 0 وارد می شود، متوقف و خاموش می شود و وقتی وارد سطح 6 می شود راه اندازی مجدد می شود. سطوح اجرای بین این دو سطح (1-5) در دیسک گردان هایی که سوار می شوند و سرویس های شبکه ای که شروع می شوند با هم فرق می کنند. سطوح اجرای پیش فرض معمولاً 3، 4 یا 5 است. سطوح اجرای پایین تر چون معمولاً هیچ سرویس شبکه ای ارائه نمی کنند، برای نگه داری و تعمیرات اضطراری بکار می روند. جزییات مختص هر سطح اجرا به طور گسترده ای از سیستم عامل به سیستم عامل و همینطور بین پیکربندی های مدیران سیستم فرق می کند.
ران لول شماره 1 ران لول single user mode هست همون safe mode خودمون در سیستم عامل ویندوز که توی این حالت تمام سرویس ها off هستند و gui ندارین وفقط کنسول روت دارین مثلا اگر شما خواستید کرنل رو پچ کنید و یا کرنل جدید بارگذاری کنید و سرویسی رو بارگذاری یا دستکاری کنید نیازمند پایین ترین سطح دسترسی سیستم میباشید و نیاز دارید که همه سرویس ها off باشند که مشکلی برای سسیستم به وجود نیاد توی این حالت میریم. البته برای تغییر رمز کاربر روت هم میتونید از این سطح استفاده کنید.
از لول 2 تا 5 توی سیستم عامل های دبیان و ردهت متفاوت هست سیستم عامل های دبیان توی سطح اجرایی 2 به حالت multi user with graficall user interface میرن و تمام سرویس ها اجرا هستند و همه چی تحت کنترل کاربر هست .
توی دبیان از ران لول 3 تا 5 حالت user difinde هست و شما میتونید تعریف کنید که چی در اون ران لول اجرا بشه یا نشه ولی در سیستم عامل ردهت ران لول 2 حالت user defind هست توی ران لول 3 تمامی سرویس ها رو داریم و مولتی یوزر هستیم ولی gui نداریم و فقط از کنسول میتونیم استفاده کنیم. ران لول 4 در سیستم های ردهت user difind هست و خودش میتونه تعریف کنه توی ران لول 5 در خانواده های ردهت مثل centos شما multi user با تمام سرویس ها با دیسپلی و کنسول و gui هم دارین.
داخل اون پوشه ها که میرید یکسری اسکریپت ها رو دارند که یکسری سرویس ها رو اجرا میکنند همانطور که میدونید که وقتی ما سرویسی رو میخوایم داخل لینوکس ران بکنیم اون فایل اجراییش رو مستقیما فراخونی نمیکنه و اسکریپت سرویسش رو فراخوانی میکنه.
اسکریپت سرویس ها در پوشه ای قرار داره به نام init.d در مسیر زیر قرار دارد :
که این اسکریپت ها میان اون فایل های اجرایی binary یا apachi یا DNS یا هر چیز دیگه ای اول چک میکنن که این سرویس پیش نیاز هایی داره یا نداره یا تغییراتی میخواد یا نه و یه سری چک های اولیه انجام میده و بعد میاد اون فایل رو فراخوانی میکنه که به صورت سرویس اجرا بشه.
برای همه اینها در پوشه etc/ یکسری فولدر هست با نام های rc0.d , rc1.d , rc2.d , rc3.d , rc4.d , rc5.d , rc6.d :
اگر از یکی از محتویات داخل فولدرها لیست بگیرید متوجه خواهید شد همه این اسکریپت ها لینک شدن به init.d :
همونطور که میبینید بعضی اسم ها با s شروع شده و بعضی با k و یک شماره بعد از آن آمده که معنی آنها به این صورت میباشد :
s مخفف start هست یعنی وقتی رفتی داخل اول ران لول اون سرویس رو استارت کن. برای مثال : (S23single)
k مخفف kill هست یعنی خاموش کن یعنی وقتی وارد اون ران لول شدی اون سرویس رو برای من off کن. برای مثال : (K02mysql)
شماره ها هم ترتیب اجرا شدن سرویس ها میباشد. وقتی شما یه سرویسی رو میخواین ران کنید برای مثال dns server یا dhcp server قبلش سرویس network باید ران شده باشه وگرنه نمیتونه اجرا کنه.
برای عوض کردن ران لول ها میتونید از دستور init و یا telinit شماره ران لول استفاده کنید و با استفاده از دستور update-rc.d میایم و عملیات مدیریت این سرویس ها رو انجام میدیم برای اطلاعات بیشتر میتونید با استفاده از دستور man این کار رو انجام بدین. که سعی میکنم در پست های بعدی به این موضوع هم بپردازم.
معرفی انواع سطوح اجرایی در Linux و Unix
سطوح اجرای استاندارد :
لینوکس / Linux :
سیستم عامل لینوکس می تواند با استفاده از برنامه های پروژه ی sysvinit از سطوح اجرا استفاده کند. پس از اینکه هسته ی لینوکس بوت می شود، برنامه ی init فایل /etc/inittab را می خواند تا رفتار هر سطح اجرا را دریابد. در صورتی که کاربر مقدار دیگری را به عنوان پارامتر بوت هسته تعیین نکرده باشد، سیستم سعی خواهد کرد تا به سطح اجرای پیش فرض وارد شود.
سطوح اجرای معمول در لینوکس :
توزیع های اصلی لینوکس توافق کرده اند که سطوح اجرای زیر را به عنوان بخشی از مشخصات «مبنای اساسی لینوکس»۲ تعریف کنند:
سطوح اجرایی معمول در لینوکس :
لینوکس دبیان / Debian :
دبیان، به همراه توزیع های مبتنی بر آن، مثل روزهای اول اوبونتو، بین سطوح ۲ تا ۵ تمایزی قائل نمی شود.
سطوح اجرایی لینوکس در دبیان :
اوبونتو / Ubuntu :
اوبونتوی 6.10 (Edgy Eft) به بعد به عنوان پروسه ی سنتی init از Upstart استفاده می کنند، ولی این توزیع ها هنوز از اسکریپت های سنتی اینیت و ابزار سازگاری با SysV-rc ِ آپستارت برای شروع بیشتر سرویس ها و شبیه سازی سطوح اجرا استفاده می کنند.
لینوکس ردهت و فدورا :
ردهت و بیشتر مشتقاتش (مثل CentOS) از سطوح اجرا به شیوه ی زیر استفاده می کنند:
سطوح اجرای لینوکس ردهت / Redhat و فدورا / Fedora :
اینکه چه سرویس هایی در چه سطوح اجرایی شروع می شوند را می توان با ابزار chkconfig مدیریت کرد که پیکربندی اش را تحت /etc/rc.d نگه می دارد. /sbin/chkconfig –list تمام سرویس هایی را که توسط chkconfig کنترل می شوند را فهرست می کند و نشان می دهد که در هر سطح اجرا سرویس ها خاموش یا روشن هستند. تنظیم سرویسِ A که توسط chkconfig کنترل می شود برای سطوح X و Y و Z به سادگی زیر است: /sbin/chkconfig –level A on
لینوکس سوزی :
سوزی از تنظیماتی مشابه ردهت استفاده می کنند.
سطوح اجرای لینوکس سوزی / Suse :
سرویس هایی که تحت یک سطح اجرای خاص اجرا می شوند را می توان با YaST | System Services (runlevel)I یا با فرمان chkconfig مثل توزیع های مبتنی بر ردهت تغییر داد.
سطوح اجرای لینوکس اسلکور / Slackware :
سطوح اجرای لینوکس آرچ / Arch :
سطوح اجرای لینوکس جنتو / Gentoo :
یونیکس / Unix :
سیستم ۵ انتشارهای ۳ و ۴
سطوح اجرای سیستم 5 :
سطوح اجرای سولاریس /Solaris :
HP-UX :
سطوح اجرای HP-UX :
FreeBSD، اOpenBSD و NetBSD :
مشتقات بی اس دی از مفهوم سطوح اجرا استفاده نمی کنند با وجود این در برخی نسخه ها init(8)I سطوح اجرای متداول را شبیه سازی می کند.
AIX :
AIX از مشخصات سطوح اجرای سیستم ۵ انتشار ۴ (SVR4) پیروی نمی کند. در این سیستم عامل سطوح اجرا از ۰ تا ۹ و همینطور a تا c قابل استفاده است. 0 و 1 رزور شده اند، ۲ مد چندکاربره ی عادی است و سطوح اجرای از ۳ تا ۹ آزادند و می توانند توسط مدیر سیستم تعریف شوند. سطوح اجرای از a تا c اجازه ی اجرای پروسه ها را بدون کشتن پروسه های در حال اجرا در سطحِ دیگر را می دهند.
AIX :
سطوح اجرای AIX :
تشکر از مهندس طاهری
پایان
همچنین توصیه میشود مطالعه کنید :
فرآیند 6 مرحله ای پروسه Boot در Linux (بوت در لینوکس و جریانات Startup)
60 دستور ترمینال که هر ادمین لینوکسی باید بلد باشد
آشنایی با روند بوت در لینوکس :
در ابتدا وقتی لینوکس بارگذاری میشه در مرحله اول چک آپ اولیه ای از سیستم مثل برسی رم و سی پی یو و قطعات کامپیوتر مثل کیبرد و موس و غیره انجام میشه که این کارها در ابتدای قبل از تحویل دادن به Baios و پس گرفتن از بایوس انجام میشه بعد از اینکه دیوایس ها شناخته شد بایوس آماده میشه تا سیستم رو تحویل به هارد دیسک شما بده که سیستم عامل تون لود بشه بعد میره سراغ هاردیسک جایی که MBR یا Master Boot Rercord (اولین سکتور هارد تون) هست که اطلاعات بوت دیسک در اون وجود دارد که سیستم عامل رو از اونجا boot میکنه.
در مواردی که شما دو یا بیشتر از یک سیستم عامل دارین این اتفاق به صورت دیگه ای رخ میده که یا شما باید از نرم افزاری برای انتخاب دو سیستم عامل در Master Boot Rercord استفاده کنید که در فضای کوچک مستر بوت ریکورد قرار بگیره یا اگر نرم افزار بزرگ هست چاره ای دیگه اندیشه بشه. دو نرم افزار مدیریت بوت برای سیستم عامل لینوکس که از بقیه معروف تر هستند lilo یا grub هستند گراب داری دو ورژن هست یک و دو هست که ورژن دو خیلی قدرتمند تر و حرفه ای تر میباشد و همچنین به دلیل زیادی حجم اون در مستر بوت ریکورد جا نمیشد و برعکس Lilo که جا میشد این مشکل رو نداشت ولی قابلیت هاش کمتر از گراب بود. برای حل این مشکل اول آدرس grub رو در Master Boot Rercord مینویسیم و وقتی که سیستم تحویل داده شد به Master Boot Rercord بعد آدرس گراب پیدا بشه و سیستم برای بوت به اون قسمت مراجعه کنه.
همونطور که میدونید موقع نصب لینوکس پارتیشنی ساخته میشود به نام boot که معمولا توی یک پارتیشن جداگانه نصب میشه ولی داخل پارتیشن root هم میتونید اونو هم نصب کنید . داخل اسلاش بوت (boot/) اطلاعات مربوط به grub یا خود گراب - kernel شما و یکسری از ماژول ها قرار داره که کرنل برای بوت شدن به اونها نیاز خواهد داشت بعد از اینکه گراب انتخاب شد مرحله یک به اتمام رسیده و وارد مرحله دوم میشیم وقتی که سیستم عامل رو انتخاب کردین تحویل میده به کرنل . برای دیدن اطلاعات گراب میتوانید به فولدر boot/grub/ مراجعه کنید و فایل grub.cfg را باز کنید.
نکته : برای تغیرات در فایل گراب ابتدا فایل گراب را از این مسیر باز کنید etc/defualt/grub/ و تغییرات خود را در این فایل انجام بدین بعد تغییرات انجام شده خودش در فایل grub.cfg اعمال میشه. و سعی کنید اگر به لینوکس تسلط ندارین این دو فایل بالا رو دستکاری نکنید.
خوب بریم سراغ مرحله بعد که لود کرنل به چه صورت انجام میشه ما در ابتدای به امر - که بوت مون مشخص شد داخل فولدر بوت فایل های kernel مون وجود داره به نام vmlinuze که ورژنش هم به همراهش هست که این فایل ها باید بارگذاری بشن :
کد PHP:
root@localhost:~# ls -l /boot/
total 15224
-rw-r--r-- 1 root root 129281 Dec 8 11:48 config-3.2.0-4-amd64
drwxr-xr-x 3 root root 12288 Dec 13 21:03 grub
-rw-r--r-- 1 root root 10482978 Dec 13 21:03 initrd.img-3.2.0-4-amd64
-rw-r--r-- 1 root root 2113842 Dec 8 11:48 System.map-3.2.0-4-amd64
-rw-r--r-- 1 root root 2842528 Dec 8 11:37 vmlinuz-3.2.0-4-amd64
کد PHP:
root@localhost:~# ps ax | grep init
1 ? Ss 0:01 init [2]
14706 pts/0 S+ 0:00 grep init
runlevel یا سطوح اجرایی در لینوکس چیست؟
سطوح اجرا (runlevels) به مدهای عملیاتی سیستم عامل گفته می شود که وضعیت دستگاه بعد از بوت شدن را تعریف می کند. اکثر مشاهده کردین موقع بوت شدن ویندوز اگر کلید F8 روبزنید ویندوز رو با حالت safe mode میاره بالا که در اونجا میتونید سطوح مختلف ویندوز رو مشاهده کنید که میتونید بگید که بدون شبکه بیاد بالا یا با اخرین تغییراتی که انجام شده و غیره بیاد بالا :
توی سیستم عامل لینوکس به این حالت های مختلف بالا امدن میگیم runlevel
برای اجرای لینوکس چندین سطح تعریف شده که هر یک از این سطوح یکسری امکانات وجود دارند که موقع بوت شدن به هر سطحی که میرسه پروسه های مورد نیاز اون سطح استفاده میشه که در جدول شماره 2 به طور کامل روند بوت در لینوکس رو که در 6 سطح انجام میشه رو توضیح دادیم.
اگر لینوکس را در سطح 2 اجرا کنیم به شبکه دسترسی نخواهیم داشت. پروسه init در دایرکتوری sbin مسولیت انتخاب یک سطح و اجرای لینوکس را بر عهده دارد. برای تغییر سطح اجرایی در لینوکس باید فایل etc/inittab/ را ویرایش کنید.
به طور قراردادی ۷ سطح اجرا وجود دارد که از ٠ تا ٦ شماره گذاری شده اند؛ البته تا ده مد اجرا یعنی از 0 تا 9 می تواند تعریف و استفاده شود. یکی از این مدهای عملیاتی، مد تک کاربره است که می توان بجای عدد از نماد S استفاده کرد.
نکته : هنگام بوت تنها یکی از سطوح اجرای ٢ یا ٣ یا ٤ اجرا میشود و اینطور نیست که به ترتیب سطوح 1,2,3,4,5 اجرا شود .
سطوح اجرا معمولاً به وضعیت های زیر تخصیص یافته اند :
مد تک کاربره
مد چندکاربره بدون شروع سرویس های شبکه
مد چندکاربره با سرویس های شبکه
خاموش کردن سیستم
راه اندازی مجدد (ریبوت) سیستم
تنظیمات دقیق پیکربندی های فوق از سیستم عامل به سیستم عامل و از یک توزیع لینوکس به توزیع دیگر فرق می کند. مثلاً سطح اجرای 4 ممکن است در یک توزیع مد چندکاربره، محیط کاربری گرافیکی یا بدون هیچ سروری باشد و در توزیع دیگری سطح 4 ممکن است هیچ چیز نباشد که در جداول زیر به صورت کامل به تفاوت سطوح اجرا در لینوکس ها و یونیکس ها متفاوت پرداخته ایم.
در عمل و به طور استاندارد وقتی کامپیوتری به سطح اجرای 0 وارد می شود، متوقف و خاموش می شود و وقتی وارد سطح 6 می شود راه اندازی مجدد می شود. سطوح اجرای بین این دو سطح (1-5) در دیسک گردان هایی که سوار می شوند و سرویس های شبکه ای که شروع می شوند با هم فرق می کنند. سطوح اجرای پیش فرض معمولاً 3، 4 یا 5 است. سطوح اجرای پایین تر چون معمولاً هیچ سرویس شبکه ای ارائه نمی کنند، برای نگه داری و تعمیرات اضطراری بکار می روند. جزییات مختص هر سطح اجرا به طور گسترده ای از سیستم عامل به سیستم عامل و همینطور بین پیکربندی های مدیران سیستم فرق می کند.
ران لول شماره 1 ران لول single user mode هست همون safe mode خودمون در سیستم عامل ویندوز که توی این حالت تمام سرویس ها off هستند و gui ندارین وفقط کنسول روت دارین مثلا اگر شما خواستید کرنل رو پچ کنید و یا کرنل جدید بارگذاری کنید و سرویسی رو بارگذاری یا دستکاری کنید نیازمند پایین ترین سطح دسترسی سیستم میباشید و نیاز دارید که همه سرویس ها off باشند که مشکلی برای سسیستم به وجود نیاد توی این حالت میریم. البته برای تغییر رمز کاربر روت هم میتونید از این سطح استفاده کنید.
از لول 2 تا 5 توی سیستم عامل های دبیان و ردهت متفاوت هست سیستم عامل های دبیان توی سطح اجرایی 2 به حالت multi user with graficall user interface میرن و تمام سرویس ها اجرا هستند و همه چی تحت کنترل کاربر هست .
توی دبیان از ران لول 3 تا 5 حالت user difinde هست و شما میتونید تعریف کنید که چی در اون ران لول اجرا بشه یا نشه ولی در سیستم عامل ردهت ران لول 2 حالت user defind هست توی ران لول 3 تمامی سرویس ها رو داریم و مولتی یوزر هستیم ولی gui نداریم و فقط از کنسول میتونیم استفاده کنیم. ران لول 4 در سیستم های ردهت user difind هست و خودش میتونه تعریف کنه توی ران لول 5 در خانواده های ردهت مثل centos شما multi user با تمام سرویس ها با دیسپلی و کنسول و gui هم دارین.
داخل اون پوشه ها که میرید یکسری اسکریپت ها رو دارند که یکسری سرویس ها رو اجرا میکنند همانطور که میدونید که وقتی ما سرویسی رو میخوایم داخل لینوکس ران بکنیم اون فایل اجراییش رو مستقیما فراخونی نمیکنه و اسکریپت سرویسش رو فراخوانی میکنه.
اسکریپت سرویس ها در پوشه ای قرار داره به نام init.d در مسیر زیر قرار دارد :
کد PHP:
cd /etc/init.d/
برای همه اینها در پوشه etc/ یکسری فولدر هست با نام های rc0.d , rc1.d , rc2.d , rc3.d , rc4.d , rc5.d , rc6.d :
کد PHP:
root@localhost:~# cd /etc/rc
rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/
کد PHP:
lrwxrwxrwx 1 root root 20 Dec 5 22:07 K01virtualbox -> ../init.d/virtualbox
lrwxrwxrwx 1 root root 22 Dec 19 18:51 K01zabbix-agent -> ../init.d/zabbix-agent
lrwxrwxrwx 1 root root 22 Dec 5 20:44 K02avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 15 Dec 14 01:29 K02mysql -> ../init.d/mysql
lrwxrwxrwx 1 root root 25 Dec 5 20:40 K02network-manager -> ../init.d/network-manager
lrwxrwxrwx 1 root root 19 Dec 5 19:50 S01killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root 14 Dec 5 19:50 S01motd -> ../init.d/motd
lrwxrwxrwx 1 root root 18 Dec 7 00:23 S22bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root 16 Dec 7 00:23 S23single -> ../init.d/single
s مخفف start هست یعنی وقتی رفتی داخل اول ران لول اون سرویس رو استارت کن. برای مثال : (S23single)
k مخفف kill هست یعنی خاموش کن یعنی وقتی وارد اون ران لول شدی اون سرویس رو برای من off کن. برای مثال : (K02mysql)
شماره ها هم ترتیب اجرا شدن سرویس ها میباشد. وقتی شما یه سرویسی رو میخواین ران کنید برای مثال dns server یا dhcp server قبلش سرویس network باید ران شده باشه وگرنه نمیتونه اجرا کنه.
برای عوض کردن ران لول ها میتونید از دستور init و یا telinit شماره ران لول استفاده کنید و با استفاده از دستور update-rc.d میایم و عملیات مدیریت این سرویس ها رو انجام میدیم برای اطلاعات بیشتر میتونید با استفاده از دستور man این کار رو انجام بدین. که سعی میکنم در پست های بعدی به این موضوع هم بپردازم.
معرفی انواع سطوح اجرایی در Linux و Unix
سطوح اجرای استاندارد :
شناسه | نام | توضیح |
0 | توقف و خاموشی | سیستم را خاموش میکند. |
S | مد تک کاربره | رابط های شبکه را پیکربندی نمی کند و دمون ها (سرویس ها) را شروع نمی کند. سطح اجرایS یا ۱.۱ |
6 | راه اندازی مجدد (ریبوت) | سیستم را راه اندازی مجدد می کند. |
لینوکس / Linux :
سیستم عامل لینوکس می تواند با استفاده از برنامه های پروژه ی sysvinit از سطوح اجرا استفاده کند. پس از اینکه هسته ی لینوکس بوت می شود، برنامه ی init فایل /etc/inittab را می خواند تا رفتار هر سطح اجرا را دریابد. در صورتی که کاربر مقدار دیگری را به عنوان پارامتر بوت هسته تعیین نکرده باشد، سیستم سعی خواهد کرد تا به سطح اجرای پیش فرض وارد شود.
سطوح اجرای معمول در لینوکس :
توزیع های اصلی لینوکس توافق کرده اند که سطوح اجرای زیر را به عنوان بخشی از مشخصات «مبنای اساسی لینوکس»۲ تعریف کنند:
سطوح اجرایی معمول در لینوکس :
شناسه | نام | توضیح |
0 | توقف سیستم | سیستم را خاموش می کند |
1 | مد تک کاربره۳ | مد وظایف مدیریتی |
2 | مد چندکاربره | رابط های شبکه را پیکربندی نمی کند و سرویس های شبکه را export??? / استخراج؟؟؟ نمی کند |
3 | مد چندکاربره با شبکه۱ | سیستم را به طور معمول شروع می کند |
4 | بلااستفاده/قابل تعریف توسط کاربر | برای مقاصد خاص |
5 | سیستم را به طور معمول و به همراه مدیر نمایش مناسب شروع می کند (با رابط کاربری گرافیکی) | همان سطح اجرای ۳ + مدیر نمایش |
6 | راه اندازی مجدد (ریبوت) | سیستم را راه اندازی مجدد می کند |
لینوکس دبیان / Debian :
دبیان، به همراه توزیع های مبتنی بر آن، مثل روزهای اول اوبونتو، بین سطوح ۲ تا ۵ تمایزی قائل نمی شود.
سطوح اجرایی لینوکس در دبیان :
شناسه | توضیح |
0 | توقف (خاموش کردن سیستم) |
1 | مد تک کاربره |
2-5 | چندکاربره ی کامل به همراه اعلان ورود به سیستم کنسول و همینطور مدیر نمایش اگر نصب شده باشد. |
6 | راه اندازی مجدد |
اوبونتو / Ubuntu :
اوبونتوی 6.10 (Edgy Eft) به بعد به عنوان پروسه ی سنتی init از Upstart استفاده می کنند، ولی این توزیع ها هنوز از اسکریپت های سنتی اینیت و ابزار سازگاری با SysV-rc ِ آپستارت برای شروع بیشتر سرویس ها و شبیه سازی سطوح اجرا استفاده می کنند.
لینوکس ردهت و فدورا :
ردهت و بیشتر مشتقاتش (مثل CentOS) از سطوح اجرا به شیوه ی زیر استفاده می کنند:
سطوح اجرای لینوکس ردهت / Redhat و فدورا / Fedora :
شناسه | توضیح |
0 | توقف سیستم |
1 | مد تک کاربره |
2 | مد چندکاربره با امکان ورود به سیستم تنها از طریق کنسول (بدون شبکه) |
3 | مد چندکاربره با امکان ورود به سیستم تنها از طریق کنسول |
4 | بلااستفاده / قابل تعریف توسط کاربر |
5 | مد چندکاربره با مدیر نمایش بعلاه ی لاگین از طریق کنسول (X11) |
6 | راه اندازی |
اینکه چه سرویس هایی در چه سطوح اجرایی شروع می شوند را می توان با ابزار chkconfig مدیریت کرد که پیکربندی اش را تحت /etc/rc.d نگه می دارد. /sbin/chkconfig –list تمام سرویس هایی را که توسط chkconfig کنترل می شوند را فهرست می کند و نشان می دهد که در هر سطح اجرا سرویس ها خاموش یا روشن هستند. تنظیم سرویسِ A که توسط chkconfig کنترل می شود برای سطوح X و Y و Z به سادگی زیر است: /sbin/chkconfig –level A on
لینوکس سوزی :
سوزی از تنظیماتی مشابه ردهت استفاده می کنند.
سطوح اجرای لینوکس سوزی / Suse :
سرویس هایی که تحت یک سطح اجرای خاص اجرا می شوند را می توان با YaST | System Services (runlevel)I یا با فرمان chkconfig مثل توزیع های مبتنی بر ردهت تغییر داد.
سطوح اجرای لینوکس اسلکور / Slackware :
شناسه | توضیح |
0 | توقف سیستم |
1 | مد تک کاربره |
2 | بلااستفاده ولی درست مثل سطح اجرای ۳ پیکربندی شده است |
3 | مد چندکاربره بدون مدیر نمایش |
4 | مد چندکاربره با مدیر نمایش |
5 | بلااستفاده ولی درست مثل سطح اجرای ۳ پیکربندی شده است |
6 | راه اندازی مجدد |
سطوح اجرای لینوکس آرچ / Arch :
شناسه | توضیح |
0 | توقف سیستم |
1 | تک کاربره (مد نگه داری و تعمیرات) |
2 | بلااستفاده |
3 | چندکاربره |
4 | بلااستفاده |
5 | چندکاربره با X11 |
6 | راه اندازی مجدد |
سطوح اجرای لینوکس جنتو / Gentoo :
شناسه | توضیح |
0 | توقف سیستم |
1 | مد تک کاربره |
2 | مد چندکاربره بدون شبکه |
3 | مد چندکاربره |
4 | آلیاس شده به سطح اجرای ۳ |
5 | آلیاس شده به سطح اجرای ۳ |
6 | راه اندازی مجدد |
یونیکس / Unix :
سیستم ۵ انتشارهای ۳ و ۴
سطوح اجرای سیستم 5 :
شناسه | توضیح |
0 | خاموش کردن سیستم، قطع برق سیستم اگر سخت افزار از آن پشتیبانی کند (تنها از کنسول قابل دسترسی است) |
1 | مد تک کاربره، همه ی فایل سیستم ها بجز root پیاده می شوند، و همه ی پروسه ها بجز پروسه های کنسول کشته می شوند |
2 | مد چندکاربره |
3 | مد چندکاربره با پشتیبانی از فایل سیستم های export شده ی RFS (و NFS در انتشار ۴) |
4 | چندکاربره، قابل تعریف توسط کاربر |
5 | توقف سیستم و go to firmware??? |
6 | راه اندازی مجدد |
S,s | به سطح 1 یکی است جز اینکه ترمینال جاری به عنوان کنسول سیستم عمل می کند |
سطوح اجرای سولاریس /Solaris :
شناسه | توضیح |
0 | توقف سیستم عامل؛ رفتن به اعلان OpenBoot (فقط SPARC) |
1 | مد تک کاربره که در آن فقط فایل سیستم root سوار می شود (به عنوان فقط خواندنی) |
2 | مد تک کاربره که در آن همه ی فایل سیستم های محلی سوار می شوند (خواندن و نوشتن) |
3 | مد چندکاربره؛ درست مانند سطح ۲ (سطح اجرای ۳ هر دو فایل /sbin/rc2 و /sbin/rc3 را اجرا می کند)، به علاوه ی اینکه فایل سیستم ها export می شوند و بعضی سرویس های شبکه شروع می شوند |
4 | مد چندکاربره ی جایگزین، قابل تعریف توسط کاربر |
5 | خاموش کردن سیستم، قطع برق اگر سخت افزار از آن پشتیبانی کند |
6 | راه اندازی مجدد |
HP-UX :
سطوح اجرای HP-UX :
شناسه | توضیح |
S | توقف سیستم |
s | مد تک کاربره، سیستم فقط به درون کنسول بوت می شود و در این سطح تنها فایل سیستم root سوار می شود (فقط خواندنی) |
0 | مد تک کاربره، درست مانند S بجز اینکه ترمینال جاری به عنوان کنسول سیستم عمل می کند |
1 | مد تک کاربره که در آن فقط فایل سیستم های محلی سوار می شوند (خواندنی-نوشتنی) |
2 | مد چندکاربره که در آن بیشتر دمون ها (سرویس ها) شروع می شوند و Common Desktop Environment اجرا می شود |
3 | درست مانند سطح ۲، در این سطح NFS اکسپورت می شود |
4 | مد چندکاربره که در آن VUE به جای CDE شروع می شود |
5,6 | بلااستفاده/قابل تعریف توسط کاربر |
FreeBSD، اOpenBSD و NetBSD :
مشتقات بی اس دی از مفهوم سطوح اجرا استفاده نمی کنند با وجود این در برخی نسخه ها init(8)I سطوح اجرای متداول را شبیه سازی می کند.
AIX :
AIX از مشخصات سطوح اجرای سیستم ۵ انتشار ۴ (SVR4) پیروی نمی کند. در این سیستم عامل سطوح اجرا از ۰ تا ۹ و همینطور a تا c قابل استفاده است. 0 و 1 رزور شده اند، ۲ مد چندکاربره ی عادی است و سطوح اجرای از ۳ تا ۹ آزادند و می توانند توسط مدیر سیستم تعریف شوند. سطوح اجرای از a تا c اجازه ی اجرای پروسه ها را بدون کشتن پروسه های در حال اجرا در سطحِ دیگر را می دهند.
AIX :
سطوح اجرای AIX :
شناسه | نام | توضیح |
0 | رزرو شده | |
1 | رزرو شده | |
2 | مد چند کاربره عادی | مد پیش فرض |
تشکر از مهندس طاهری
پایان
کامنت