Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Процедура загрузки ОС Linux




ОС Linux работает в 2-х режимах: однопользовательском (режим пользователя root, в этом режиме настраивается ОС) и многопользовательский (режим работы всех пользователей).

После включения питания компьютера и завершения тестирования аппаратной части BIOS считывает из первого сектора загрузочного диска короткую программу загрузчик. Эта программа запускает основной системный загрузчик (например, LILO), который, в свою очередь, загружает в память ядро системы vmlinuz - x.y.z- a, которое обычно хранится в файле в каталоге /boot. Здесь x.y.z --- это номер версии ядра, а вместо символа "а" часто стоит указание на какие то конкретные модификации ядра.

Сразу после загрузки ядро монтирует корневую файловую систему и запускает процесс init. Процесс init --- это программа, которая ответственна за продолжение процедуры загрузки, и перевод системы от начального состояния, возникающего после загрузки ядра, в стандартное состояние обработки запросов многих пользователей. Процесс init выполняет еще массу различных операций, необходимых для дальнейшей работы системы: проверку и монтирование файловых систем, запуск различных служб (демонов), запуск процедур регистрации, оболочек пользователей на различных терминалах и т. д.

Точный список этих операций зависит от так называемого уровня выполнения (run level). Уровень выполнения определяет перечень действий, выполняемых процессом init, и состояние системы после загрузки, т. е. конфигурацию запущенных процессов. Уровень выполнения идентифицируется одним символом. В ОС Linux существует 8 основных уровней выполнения:

0- остановка системы;

1- однопользовательский режим (для специальных случаев администрирования);

2 - многопользовательский режим без NFS (то же, что и 3, если компьютер не работает с сетью);

3 - полный многопользовательский режим;

4 - использование не регламентировано;

5 - обычно используется для запуска системы в графическом режиме;

6 - перезагрузка системы;

S (или s) --- примерно то же, что и однопользовательский режим, но S и s

используются в основном в скриптах.

Как видите, уровни 0, 1 и 6 зарезервированы для особых случаев. Относительно того, как использовать уровни со 2 по 5, единого мнения не существует.

Первым делом после старта процесс считывает свой конфигурационный файл /etc/inittab. Этот файл состоит из отдельных строк. Если строка начинается со знака или пуста, то она игнорируется.

Обработка файла /etc/inittab процессом init начинается в однопользовательском режиме (уровень 1), в котором единственным пользователем является пользователь root, работающий с консоли. Первым делом init находит строку, которая определяет, какой уровень выполнения запускается по умолчанию.

Далее выполняет команды, указанные в строке с ключевым словом sysinit. В стандартной конфигурации здесь выполняется скрипт rc.sysinit из каталога /etc/rc.d. После этого процесс init просматривает файл /etc/inittab и выполняет скрипты, соответствующие однопользовательскому уровню (1 во втором поле строки), всем уровням (строки с пустым вторым полем) и уровню, заданному по умолчанию.

Следующая важная функция, которую выполняет этот процесс (на уровнях со 2 по 5) --- запуск шести виртуальных консолей (процессов getty), чтобы предоставить пользователям возможность регистрироваться в системе с терминалов. Для этого init порождает процессы, именуемые getty процессами, и следит за тем, какой из процессов открывает какой терминал. Каждый getty процесс устанавливает свою группу процессов, используя вызов системной функции setpgrp, открывает отдельную терминальную линию и обычно приостанавливается во время выполнения функции open до тех пор, пока машина не получит аппаратную связь с терминалом. Когда функция open возвращает управление, getty процесс исполняет программу login (регистрации в системе), которая требует от пользователей, чтобы они идентифицировали себя указанием регистрационного имени и пароля. Если пользователь зарегистрировался успешно, программа login, запускает командный процессор shell и пользователь приступает к работе. Этот вызов shell именуется "login shell" (регистрационный shell, регистрационный интерпретатор команд). Процесс, связанный с shell, имеет тот же идентификатор, что и начальный getty процесс, поэтому login shell является процессом, возглавляющим группу процессов.

Если пользователь не смог успешно зарегистрироваться, программа регистрации завершается через определенный промежуток времени, закрывая открытую терминальную линию, а процесс init порождает для этой линии следующий getty – процесс открывающий терминал, вместо прекратившего существование.

После завершения загрузки init продолжает работать в фоновом режиме, отслеживая изменения в состоянии системы.

Таким образом, процесс начальной загрузки init постоянно находится в оперативной памяти и при получении соответствующих сигналов повторно выполняет цикл чтения из файла /etc/inittab о том, что нужно делать, при чем этот набор инструкций различен для разных уровней выполнения.

Когда суперпользователь останавливает систему (командой shutdown), именно init завершает все другие исполняющиеся процессы, размонтирует все файловые системы и останавливает процессор.

 





Поделиться с друзьями:


Дата добавления: 2015-11-05; Мы поможем в написании ваших работ!; просмотров: 448 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Велико ли, мало ли дело, его надо делать. © Неизвестно
==> читать все изречения...

2524 - | 2183 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.