تغییر RunLevel در سیستم های Init لینوکسی

تغییر RunLevel ها در لینوکس
تغییر RunLevel ها در لینوکس

ران لول چیه ؟؟

ران لول ها در لینوکس در واقع سطح اجراهایی هستن که کاربر بسته به نیاز خودش میتونه از اونا استفاده کنه

پیشنهاد میکنیم قبل از شروع کار ی نگا به این مقاله بندازید


چی چیز هایی رو میخوای بهمون بگی ؟؟

قرار بهتون بگیم که چطوری :

  • به صورت پیشفرض ران لول خودتون رو در init تنظیم کنید (در حال ساخت مقاله )
  • ران لول خودتون رو در init به صورت زنده عوض کنید

تغییر ران لول در سیستم های Init

تنظیم ران لول در سیستم های init به سه صورت انجام میشه :

  • تنظیم ران لول از طریق ترمینال
  • تغییر ران لول قبل از بالا اومدن کرنل
  • تغییر ران لول از فایل etc/inittab/

1: تنظیم ران لول به از طریق ترمینال :

برای اینکه ببینید تو چه ران لولی هستید میتونید از دستور زیر استفاده کنید

runlevel

برای من اینو نشون داد

تغییر ران لول از طریق ترمینال
تغییر ران لول از طریق ترمینال

حرف N به معنای بوت سیستم هست و عدد ۵ ران لولی هست گه داخلش قرار دارم

اگه نمیدونید این اعداد چه مفهومی دارن این مقاله رو بخونید

حالا من تصمیم دارم برم توی ران لول ۳ (چند کاربره با نتورک ) برای تغییر ران لول کافیه این دستور رو بزنید

telinit 3

نکته : این روش تو سیستم های systemd قابل اجرا هست ولی پیشنهاد نمیشه

حالا اگه دوباره دستور runlevel رو بزنید خروجی به این صورت میشه :

تغییر ران لول توی سیستم های init به صورت ترمینال
تغییر ران لول توی سیستم های init به صورت ترمینال

همینطور که میبینید صفحه ی سیستم سیاه شده چون من وارد ران لول ۳ (چند کاربره با نتورک ) شدم

حالا برای برگشتن به ران لول ۵ (محیط گرافیکی با نتورک و چند کاربره) دوباره دستور telinit رو میزنم

telinit 5

۲: تنظیم ران لول قبل از بالا اومدن کرنل

توی این روش لازم هست که منوی بوت لودر خودتون که معمولا grub هست را فعال کنیم تا در زمان ریستارت و روشن شدن سیستم منو برای شما نمایش داده بشه اگه بلد نیستید که چطوری منوی بوت لودر سیستم خودتون رو نمایش بدید این مقاله به شما کمک میکنه

نکته : پیشنهاد میکنیم برای بالا رفتن امنیت سیستم از ماشین مجازی مثل ویرچوال باکس برای اینکار استفاده کنید

خب زمامی که سیستم رو ریستارت کردید با همچین صحنه ای رو به رو میشید :

منوی گراب برای انتخاب سیستم عامل
منوی گراب برای انتخاب سیستم عامل

سیستم عامل من اوبونتو هست و به صورت پیشفرض توزیع سیستم عالم روی اوبونتو تنظیم شده .

خب بگذریم !

الان با زدن کلید E وارد هیچین صفحه ای میشیم :

تنظیم سیستم عامل توسط بوت لودر
تنظیم سیستم عامل توسط بوت لودر

در اینجا تنظیمات سیستمون هست که قبل از رسیدن به کرنل و اجرای کاملش میتونیم بررسی کنیم

ما با این قسمت کار داریم :

تنظیم ران لول در بوت لودر
تنظیم ران لول در بوت لودر

در قسمتی که من با فلش در تصویر مشخص کرده ام میبینید که عدد ۳ نوشته شده است درواقع خطی که مشاهده میکنید مربوط به چگونه بالا اومدن سیستم عامل شماست که من با وارد کردن عدد ۳ در انتهای خط گفتم که میخوام سیستمم با ران لول 3 (چند کاربره با نتورک ) بالا بیاد

نکته : این روش همیشگی نیست و بعد ی خاموش روشن کردن سیستم تنظیمات بوت لودر از بین میرود


خب الان که کارمون تموم شده میتونم طبق دستور عمل با زدن کلید Ctrl + x سیستم رو اجرا کنم


تغییر ران لول از فایل etc/inittab/

خب الان رسیدیم به روش اخر :)))) ی نفس عمیق بکشید

خوب حالا بریم ادامه ....

نکته : این روش به صورت default و پیشفرض هست یعنی زمانی که سیستم رو روش میکنید به صورت پیشفرض ران لولتون چیزی میشه که اینجا تنظیم کرده اید :)

با ی ویرایشگر فایل زیر رو باز کنید (ویرایشگر من nano هست )

sudo /etc/inittab

نکته : این فایل در سیستم های جدید وجود نداره چون به جای init از systemd یا upstart استفاده میکنن

خب اگه فایل رو باز کنید با همچین چیزی رو به رو میشید

کد های داخل فایل etc/inittab/
کد های داخل فایل etc/inittab/

این سورس ها رو نگا کنید :

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
#l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

در واقع به این صورت میشه :

id:runlevel:action:process
  • id : ی مقدار هست و میتونه هر عددی جاش باشه
  • runlevel : ران لولی که میخوایم رو اجرا میکنیم
  • action : کارمون رو به صورتی که تعریف کردیم انجام میده به عنوان مثال میگیم که فقط یکبار انجامش بده
  • process : پروسه ای رو که میخوایم اجرا میکنه به عنوان مثال میگیم که فایل etc/init/rc6 رو اجرا کنه


خب سرتون رو درد نیارم فقط اینکه برای دیدن اینکه موقع اجرای ران لول چه اتفاقاتی میفته وارد ادرس زیر بشید :

cd /etc/init.d

از فایل هایی که با rc تو حروفشون هست ی لیست میگیریم :

ls rc*

لیستتون شبیه به این میشه :

rc6.d
 rc5.d 
rc4.d 
rc3.d 
rc2.d
 rc1.d


هر کدوم از این اعداد به ران لول خودشون برمیگردن به عنوان مثال rc2.d برای ران لول 2 (چند کاربره بدون نتورک) هست

حالا اگه فولدر rc2.d رو باز کنیم همچین چیزی رو میبینید :

ماژول ها و سرویس هایی که تو ران لول ۲ اجرا میشن
ماژول ها و سرویس هایی که تو ران لول ۲ اجرا میشن
  • اگه اول فایل ها کلمه S باشه یعنی ماژور مورد نظر Start میشه
  • اگه اول فایل ها کلمه K باشه یعنی ماژول مورد نظر Kill یا خاموش میشه



تمام :)

منبع : از دروس LIPC استاد میرمیرایی (جادی)