ОС Linux. Дослідження процесу завантаження операційної системи

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи
Група:
ІТП

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська Політехніка» Кафедра ІСМ Звіт До лабораторної рботи № 4 З курсу:”Операційні системи комп’ютерних мереж” На тему:”ОС Linux. Дослідження процесу завантаження операційної системи” Мета роботи Дослідити процес початкового завантаження ОС Linux, та навчитися налаштовувати та проводити його діагностику Теоретичні відомості: Аналізуючи процес початкового завантаження ОС Linux можна зрозуміти багато особливостей роботи операційної системи. Власне правильне налаштування цього процесу дозволяє створити комфортне робоче середовище для користувача. Водночас, помилки у цьому процесі призводять до низької продуктивності системи, або ж система не запускається взагалі В цілому. процес початкового завантаження системи містить такі етапи: завантаження та ініціалізація ядра; розпізнавання та конфігурування пристроїв; створення первинних системних процесів; виконання команд оператора; виконання командних файлів; перехід у багатокористувацький режим. Формування розділів жорсткого диску Взагалі кажучи форматування жорсткого диску та створення на ньому розділів відноситься до процесу інсталяції системи, а не до процесу завантаження. Однак правильне формування розділів диску є передумовою правильного завантаження системи. Формування нових розділів на диску можна зробити, наприклад, утілітою fdisk. Рекомендується створювати окремі розділи на диску для: операційної системи – цей розділ є активним і з нього відбувається початкове завантаження даних користувачів. Окремий розділ для даних користувачів дозволяє гнучко проводити резервне архівування даних свап – розділ. Цей розділ використовується системою для свап-пам»яті Проаналізувати наявні розділи можна, наприклад використовуючи Kinfocenter->Partitions (ОС Mandriva Spring 2007, KDE 3.5). Крім наведених вище розділів може бути відображено і інші змонтовані файлові системи. Завантаження та ініціалізація ядра Процес завантаження починається однаково для різних типів ОС та апаратних платформ. POST Спочатку, відразу після включення живлення, запускається процедура самотестування комп”ютера POST (Power On Self Test). Система порівнює інформацію записану в CMOS пам”яті з тим, що є насправді. Якщо виявлені помилки, то видаються повідомлення на екран, або ж звукові повідомлення. Після правильного закінчення процедури POST система передає керування коду записаному по визначеній адресі у пам”яті. Цей код є досить простим. Головна його функція – пошук пристрою, з якого буде відбуватися завантаження. Залежно від налаштувань у CMOS BIOS пристроєм початкового завантаження може бути дискета, cdrom або жорсткий диск. Завантаження з MBR Коли пристрій завантаження знайдено, система шукає нульовий сектор (з адресою циліндр0, головка0, сектор0). та виконує код, розташований у цьому секторі. Цей код знаходить та зчитує таблицю розділів (розташовану відразу ж після нульового сектора) та знаходить в ній активний розділ. Після цього починається виконання коду записаного у першому блоці активного розділу. Для Linux цей код є завантажувачем LILO або GRUB LILO В деяких випадках завантажувач LILO розміщують безпосередньо в MBR. В цьому випадку він використовується для завантаження інших ОС. Якщо ж завантажувач занесено на початок розділу диску (такий завантажувач ще називають вторинним - secondary), то він використовується для завантаження Linux з цього розділу. Нехай LILO розташовано в MBR. Тоді підчас завантаження BIOS завантажує код LILO у пам”ять по визначеній фіксованій адресі (0x7C00) та виконується. Цей код використовує процедури BIOS завантажує у свою чергу вторинний завантажувач на адресу 0x9B000. Всі операції з відображення меню виконує вже вторинний завантажувач. GRUB Завантажувач GRUB є альтернативою до LILO. GRUB (Grand Unified Bootloader) використовується в дистрибутивах Mandriva, Ubuntu та деякіх інших. Подібно до LILO – головне призначення GRUB – завантажити ядро операційної системи. Крім цього, GRUB надає користувачам деякі інші можливості, такі як завантаження різних ОС та різних версій однієї ОС, захист процесу завантаження паролем, графічне та кольорове оформлення екрану завантаження. Як правило, завантажувач GRUB встановлюється підчас інсталяції системи. Є можливість інсталювати цей завантажувач окремо, наприклад на флеш-диск. Файли, що керують роботою завантажувача можна знайти у каталозі /boot/grub/. Головним конфігураційним файлом є menu.lst. Розглянемо приклад такого файлу. default 0 timeout 3 hiddenmenu title Ubuntu, kernel 2.6.20-15-generic root (hd0,0) kernel /boot/vmlinuz-2.6.20-15-... ro quiet splash initrd /boot/initrd.img-2.6.20-15-generic Файл має заголовок, в якому визначені загальні параметри завантажувача та додатові секції, по одній на кожен пункт меню завантажувача, що вказує на тип ОС яку потрібно завантажити. Параметр Коментар  default Визначає пункт меню який обирають за замовчуванням. Нумерація починається з 0  timeout Як довго (секунди) меню затримається на екрані, поки не буде обрано пункт за замовчуванням  hiddenmenu Якщо цей пункт є, то меню на екрані не відображається, автоматично завантажується система вказана за замовчуванням  title текст пункту меню  root Вказує завантажувачу на якому диску та розділі знайти ядро  kernel Визначає яке ядро буде завантажене  initrd Вказує завантажувачу яку програму потрібно виконати після завантаження ядра  Після завантаження ядра завантажуються та ініціалізуються драйвери для пристроів комп”ютера. Власне на цьому етапі часто виникають проблеми, якщо драйвер не відповідає наявному пристрою. Якщо всі драйвери розпізнані та ініціалізовані без помилок, то система переходить до запуску спонтанних процесів, серед яких чільне місце займає процес init. Зазвичай виконувальний код init знаходиться у /sbin каталозі. Запуск процеса init. Рівні виконання (run levels) Відразу після завантаження ядра Linux ще не готовий до роботи з користувачами. Те, що робить Linux такою потужною за набором можливостей ОС реалізовано у наборі процесів-сервісів, які виконуються у фоновому режимі. В Linux прийнято називати такі сервіси демонами. Головним завданням процесу init є автоматичний запуск демонів потрібних для певної робочої конфігурації (рівня виконання) та зворотня функція – зупинка демонів, які не потрібні для біжучого рівня виконання Рівні виконання мають числові ідентифікатори від 0 до 6 та s, S. Ідентификатор рівня виконання Призначення  0 Система зупинена  1 Однокористувацький режим (single user mode). Використовуєтся, наприклад адміністратором системи для виконання обслуговування  2 Обмежений багатокористувацький режим. Текстовий інтерфейс  3 Багатокористувацький режим. Текстовий інтерфейс  5 Режим з автоматичним запуском графічного інтерфейсу  6 Використовується для перезавантаження системи  s S Зарезервовані для використання командними скриптами для переходу системи в однокористувацький режим  Після запуску програма init зчитує конфігураційний файл /etc/inittab. У цьому файлі шукають рядок з параметром initdefault. Цей рядок визначає рівень виконання за замовчуванням. Приклад фрагменту файлу inittab для виконання за замовчуванням: l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 Кожен рядок файла inittab містить чотири колонки, розділені двокрапкою. У першій колонці вказано числовий ідентифікатор рядка. У другій колонці вказано номер рівня виконання. Третя колонка задає режим виконання командного файла (див. табл). У четвертій колонці вказано командний файл, який потрібно виконати. Як аргумент цьому файлу передається номер рівня виконання. Як видно з прикладу, командний файл знаходиться у каталозі /etc/rc.d/ (його ще називають головним -master- командним файлом, тому що залежно від рівня виконання він виконує велику кількість інших командних файлів). Яким чином командний скрипт вирішує, які демони потрібно запустити, а які – зупинити для кожного конкретного рівня виконання? У системі UNIX в каталозі rc.d можна побачити підкаталоги з назвами rc#.d, де # вказує на певний рівень виконання. У кожному підкаталозі є скріпти, що зупиняють певні демони (назви таких скриптів починаються з букви K – kill) та скрипти, що стартують певні демони (їх назви починаються з букви S – start). Після початкової букви у назві скрипта іде число. Ці числа визначають порядок запуску скриптів – скрипти з меншими номерами запускають раніше. І нарешті, назва скрипта завершується змістовною назвою сервісу, що стартує або зупиняється. Назви сервісів дозволяють системі зайвий раз не зупиняти та не запускати сервіси при переходах між рівнями. Так при переходах між рівнями зупиняють тільки ті сервіси, які не працюють на новому рівні та запускають тількі сервіси, які не є вже запущені. З використанням inittab виконуються і деякі інші функції, наприклад, ініціалізація системи після завантаження. si::sysinit:/etc/rc.d/rc.sysinit Можливі значення режимів виконання наведені у таблиці Режим Опис  boot Виконується підчас завантаження  bootwait Виконується підчас завантаження. Init очікує на завершення  initdefault Рівень виконання за замовчуванням. Звичайно запустається одразу ж після завантаження  ondemand Виконується для одного з рівнів виконання “по запиту” - a,b,c  powerwait Виконується якщо зникло живлення. Система очікує завершення команди  powerfail Виконується якщо зникло живлення. Система не очікує завершення  powerokwait Виконується, якщо init повідомили, що живлення відновлено  powerfailnow Виконується, якщо init повідомили, що зовнішнє джерело живлення (батарея) не має заряду  resume Виконується, коли init отримує від ядра сигнал “Software suspend”  sysinit Виконується підчас завантаження перед boot або bootwait  respawn Рестартує сервіс, якщо його зупинено  wait Стартує один раз при переході на рівень виконання. Очікує завершення  once Стартує один раз при переході на рівень виконання. Не очікує завершення  crtaltdel Виконується, якщо хтось на консолі натисне ctlr-alt-del  Користувач може ініцювати перехід на потрібний рівень виконання з консолі командою init N де N – номер потрібного рівня Аналіз та діагностика процесу початкового завантаження Проаналізувати процес початкового завантаження можна з використанням лог-файлу завантаження командою dmesg dmesg > bootloginfo Після виконання цієї команди у біжучому каталозі сформується файл bootloginfo з діагностичною інформацією Висновок На цій лабораторній роботі я дослідив процес початкового завантаження ОС Linux, та навчився налаштовувати та проводити його діагностику.
Антиботан аватар за замовчуванням

27.03.2013 10:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!