در این قسمت با مراحل مختلف بوت در سولاریس آشنا می شویم.

همانند سایر سیستم عامل ها فرآیند بوت در سولاریس با Bootloader آغاز شده با Kernel ادامه پیدا کرده و با user-mode پایان می گیرد.

 

Bootloader

در سیستم های مبتنی بر x86، سولاریس به طور پیش فرض با Grand Unified Bootloader یا همان GRUB، بارگذاری (load) می شود. Bootloader یک منوی بوت شامل ۲ گزینه را نمایش می دهد:

Solaris 10 10/08 s10x_u6wos_07b X86
Solaris failsafe

پس از انتخاب گزینه مورد نظر (معمولا گزینه اول)، GRUB با load کردن kernel به درون حافظه، کنترل ادامه فرآیند بوت شدن را به آن واگذار می کند. پس از انتخاب گزینه منوی بوت، GRUB اقدام به load کردن boot archive { شامل کپی از ماژول های kernel و فایل های پیکربندی مورد نیاز برای راه اندازی اولیه (startup)، می نماید. گزینه failsafe بیشتر جهت عیب زدایی و بازیابی استفاده می شود.

Kernel

کار kernel با آماده سازی و راه اندازی سخت افزار، پاک کردن کنسول و نمایش بنری مانند بنر زیر شروع می شود:

SunOS Release 5.10 Version Generic_147441-01 64-bit
Copyright © ۱۹۸۳, ۲۰۱۱, Oracle and/or its affiliates: All rights reserved

Kernel پس از راه اندازی سخت افزار، فایل سیستم root را mount کرده و (برنامه های) user-mode را اجرا می کند.

User-Mode Programs

همانند سایر سیستم عامل های خانواده UNIX، قابلیت های سولاریس نیز از برنامه های user-mode حاصل می شوند.

Kernel برنامه های مربوطه را با اجرا کردن ‎ sbin/init/ فعال می کند. این فرآیند و تنها این فرآیند همیشه دارای PID=1 می باشد. (Process ID)

مشابه دیگر سیستم عامل های خانواده UNIX، در سولاریس، init با خواندن فایل پیکربندی در ‎ etc/inittab/ برنامه ها را با در نظر گرفتن آن اجرا می کند. تفاوتی که در سولاریس نسبت به بیشتر سیستم عامل های UNIX وجود دارد آن است که inittab پیش فرض، init را مسؤل اجرای اسکریپت های موجود در دایرکتوری های ‎ etc/rc*.d/ نمی داند؛ در عوض پروسه هایی که کاربری و قابلیت های سیستم را ایجاد می کنند در سولاریس توسط Service Management Facility یا SMF فراخوانی و اجرا می شوند. از این رو init در سولاریس دارای قابلیت ویژه ای برای راه اندازی/از کار اندازی (Start/Stop ) دیمونهایی (daemons) را دارد که SMF را پیاده سازی می نمایند و در پی آن SMF اجرای اسکریپت های init را به عهده می گیرد.

کاربران آشنا با سولاریس ۹ متوجه کمتر شدن اطلاعات خروجی نمایش داده شده در سولاریس ۱۰ در طی فرآیند بوت، خواهند شد؛ دلیل این موضوع آن است که SMF در هنگام اجرای system daemons مسیر استاندارد خروجی را به جای کنسول به log file موجود در مسیر ‎ var/svc/log/ تغییر می دهد.

در انتهای فرآیند بوت و شروع به کار سیستم، SMF برنامه ttymon که مربوط به سرویس console-login خود می باشد را اجرا می نماید:

Dangeon console login:

اگر SUNWdtlog package نصب شده باشد، SMF اقدام به اجرای X Server بر روی کنسول نموده و منوی خوش آمد گویی dtlogin که بخشی از سرویس cde-login در SMF می باشد، به نمایش در خواهد آمد:

Solaris1

Grub Extensions

نسخه GRUB در سولاریس با نسخه استاندارد GNU GRUB از جهاتی متفاوت است و قابلیت های زیر را داراست:

  • قادر به خواندن فایل سیستم Solaris UFS می باشد. (این فایل سیستم با BSD UFS تفاوت دارد)
  • قادر به شناسایی دستورات ‎ $kernel و ‎ $module می باشد. (از ویرایش ۱۰/۰۸ به بعد)
  • قابلیت خواندن ZFS pools و همچنین اجرای دستور مربوط به bootfs را دارد.
  • قادر به شناسایی دستور findroot می باشد.

با در نظر گرفتن موارد بیان شده می توان دریافت که نسخه های دیگر GRUB که همراه با خود سولاریس ارایه نشده اند عموما قادر به بوت کردن Image سولاریس نمی باشند.

Modifying Boot Behavior

در سولاریس، kernel استفاده از سوﺋﻴﭽ ﻬﺎی جانبی را در فرآیند بوت مجاز می داند. لیست پارامترهای مجاز در صفحه راهنمای man 1 kernel موجود است. برخی از سوئیچ های متداول به شرح زیر می باشند:

نامتوضیح
-k
سبب اجرای kmdb یا همان kernel debugger می شود.
-s
حالت Single-user mode می باشد. تنها چند سرویس اولیه اجرا می شوند و sulogin prompt نمایش داده خواهد شد.
-v
اطلاعات بیشتری نمایش داده خواهد شد. (حالت verbose )
-m
به همراه verbose سبب نمایش اطلاعات بیشتر در هنگام اجرای SMF daemon می شود.

سوئیچ های مورد نظر را می توان برای هر یک ازگزینه های منوی GRUB انتخاب نمود. بدین ترتیب که بعد از انتخاب فرآیند مورد نظر، با زدن کلید e می توان سوﺋﻴﭻ مورد نظر را انتخاب نمود.

در شکل های زیر می توان مراحل ذکر شده را مشاهده نمود:

  1. در مرحله (شکل) اول منوی GRUB دیده می شود. با انتخاب گزینه مورد نظر و زدن کلید e می توان وارد منوی ویرایش شد.
  2. در مرحله (شکل) دوم از لیست نشان داده شده گزینه ای را که با kernel آغاز شده انتخاب می نماییم.
  3. در مرحله (شکل) سوم می توانیم از سوﺋﻴﭽ ﻬﺎی دلخواه استفاده نماییم.
  4. پس از آن با زدن کلید b سیستم را در حالت جدید بوت می کنیم. ( تغییرات ایجاد شده موقتی هستند.)
  5. برای اعمال تغییرات به صورت داﺋﻢ بایستی فایل menu.lst را ویرایش کنیم.
Solaris2

شکل (مرحله) اول

در مرحله (شکل) اول منوی GRUB دیده می شود. با انتخاب گزینه مورد نظر و زدن کلید e می توان وارد منوی ویرایش شد.

Solaris3

شکل (مرحله) دوم

در مرحله (شکل) دوم از لیست نشان داده شده گزینه ای را که با kernel آغاز شده انتخاب می نماییم.

Solaris4

شکل (مرحله) سوم

در مرحله (شکل) سوم می توانیم از سوئیچ های دلخواه استفاده نماییم.

Run Levels

در سولاریس، ۸ Run Levels تعریف شده است که هر کدام بیانگر حالت و رفتار ویژه ای از سیستم می باشند.

به طور پیش فرض سولاریس در Run Level 3 بوت می شود. دلیل این موضوع مقدار تعریف شدهٔ پیش فرض در پارامتر initdefault موجود در فایل ‎ /etc/inittab می باشد. این پارامتر را می توان به مقدار دلخواه تغییر داد.

برای تغییر Run Level هنگامی که سیستم در حال کار می باشد می توان از دستور init استفاده نمود.

حالت های مختلف Run Levels به همراه توضیح آنها در زیر بیان شده است. برای توضیحات بیشتر می توان به راهنمای inittab مراجعه کرد.

نامتوضیح
Sبیانگر Single-user mode می باشد. تنها سرویس login اجرا شونده، سرویس sulogin خواهد بود.
۰در این حالت سیستم عامل shut down خواهد شد.
۱همانند حالت S می باشد با این تفاوت که برنامه های موجود در /etc/rc1.d/ نیز اجرا خواهند شد.
۲حالت Multi-user mode می باشد. سرویسهای Local login و بعضی از برنامه های Local اجرا می شوند.
۳حالت Multi-user. تمامی سرویسها و برنامه های تنظیم شده، remote login و همچنین برنامه های تحت شبکه اجرا می شوند.
۴حالت Alternative Multi-user mode. این Run Level معمولا به طور پیش فرض پیکربندی نشده است و برای برنامه های خاص و حالت custom به کار می رود.
۵Power off
۶Reboot
نکته:
Run Level های ۰ و ۵ ظاهرا شبیه به یکدیگر عمل می کنند اما در واقع رفتار متفاوتی دارند. در حالت Run Level 0 تنها سیستم عامل down می شود اما بعضی از resourceهای سخت افزاری همچنان روشن و در حال استفاده می باشند. پس از وارد شدن به این Run Level و down شدن سیستم عامل، ماشین اصطلاحا وارد “firmware mode” می شود و منتظر می ماند تا با زدن یک کلید ماشین را Reboot نماید.[شکل زیر ]

در Run Level 5 ، سیستم عامل و تمامی resource های سخت افزاری ( و نرم افزاری) به طور کامل down می شوند و سیستم Power off می شود. مثل حالتی که برق آن قطع شود.

چند نکته کاربردی در مورد Run Level ها وجود دارد که در قسمت بعد آنها را مطرح می کنیم.

شکل زیر عملکرد Run Level 0 را نشان می دهد.

Solaris5