Skip to content

Home Загрузка Linux Управление инициализацией системы
Управление инициализацией системы

Для начала давайте разберемся, как загружается Linux. Начнем с того момента, когда загрузчик BIOS нашел загрузочное устройство, например жесткий диск. Далее загрузчик BIOS считывает первый (нулевой) сектор и передает ему управление. На этом работа загрузчика BIOS заканчивается.

В первом секторе находится главная загрузочная запись (Master Boot Record, MBR), состоящая из трех частей: первичного загрузчика, таблицы разделов диска (partition table) и флага загрузки.

Итак, из первой части MBR вызывается первичный загрузчик. Действия этого загрузчика зависят только от него самого. Предположим, что у нас установлен загрузчик LILO — намного проще рассматривать работу загрузчика на конкретном примере.

Загрузчик LILO состоит из двух частей: первая содержится в MBR, а вторая находится на диске в виде файла (файл /boot/boot.b). Задача первой части — запуск вторичного загрузчика (второй части), который и производит дальнейшую загрузку системы. Первая часть ничего не знает о файловых системах, поэтому местонахождение второй части записано в "физических координатах", т. е. явно указаны цилиндр, головка, сектор жесткого диска.

Вторая часть загрузчика более интеллектуальна. Она уже "знает", что такое файловая система, а карта размещения файлов записана в файле /boot/map. Данный файл используется для поиска ядра и образа виртуального диска. Для чего нужен виртуальный диск? Представим, что мы еще не установили Linux, а только собираемся это сделать. Вставляем загрузочный диск, и загрузчик запускает не просто инсталлятор — ведь запускается на самом деле Linux, ведь ясно виден процесс загрузки ядра. А потом уже запускается программа установки. Но ведь ядру нужно откуда-то прочитать модули поддержки устройств и файловых систем? Ведь корневая файловая система еще не создана. Все эти модули и находятся на виртуальном диске. Виртуальный диск загружается в память, ядро монтирует его как обычную файловую систему, загружает с него все необходимые модули. После этого виртуальный диск размонтируется, а вместо него монтируется обычная корневая файловая система — это в случае нормальной загрузки, а не установки Linux.

Для работы с виртуальным диском используется технология initrd (INITial Ram Disk). Файл образа виртуального диска находится в каталоге /boot и называется initrd-<версия ядра> .

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

id: <число>- initdefault :

Данная инструкция задает уровень запуска по умолчанию. Уровень запуска определяет, какие действия будут выполнены init (какие процессы будут запущены). Всего предусмотрено семь уровней запуска:

  • 0 — останов системы (ясно, что в качестве уровня по умолчанию этот уровень выступать не может);
  • 1 — однопользовательский режим (в него можно перейти сразу при загрузке, передав ядру параметр single);
  • 2 — многопользовательский режим без поддержки сети;
  • 3 — многопользовательский режим с поддержкой сети;
  • 4 — не используется;
  • 5 — графический режим с загрузкой XI 1;
  • 6 — перезагрузка системы.

В большинстве случаев, в качестве уровня запуска по умолчанию устанавливается 3 или 5.

Перейти на тот или иной уровень можно и после загрузки системы. Для этого используется команда:

# init <уровеиь__запуска>

Примечание

Здесь и далее решетка (#) перед командой означает, что команда должна быть выполнена от имени пользователя root.

 

"Вычислив" уровень запуска, init поочередно запускает сценарии из каталога /etc/rc.d/rcX.d, где X — это номер уровня запуска. Если зайти в один из этих каталогов, например в /etc/re.d/rc3.d, то увидим ссылки формата

S<номер><имя>

Номер определяет порядок запуска сценария (например, S10network запустится раньше, чем S11internet), а имя — задает имя сценария. Сами сценарии находятся в каталоге /etc/re .d/init.d.

Ссылки, начинающиеся на S — это ссылки запуска (от англ, start), при запуске соответствующих сценариев им будет передан аргумент start. Например, если init обнаружил в /etc/rc.d/rc3.d файл S10network, то он выполнит команду:

/etc/re.d/init.d/network start

Если имя ссылки начинается на букву К (от англ, kill), то это ссылка останова сервиса, например, KOlservice. Данная ссылка указывает на команду

/etc/re.d/init.d/service stop

Вы можете запустить любой сценарий из каталога initd непосредственно, передав ему параметры start (запуск), stop (останов) и другие (зависит от сервиса). А можете воспользоваться командой service:

service <имя_сервиса> <start|stop|...>

Конфигуратор system-config-services
Конфигуратор system-config-services

Здесь ммя_сервиса — это имя файла в каталоге /etc/re.d/init.d


Редактировать уровни запуска можно вручную, а можно и с помощью программ-конфигураторов. В Fedora Core (и ASPLinux) для редактирования уровней запуска используется конфигуратор system-config-services, а в Mandrake (Mandriva) можно воспользоваться конфигуратором ntsysv с параметром —level <номер сервмса>. Конфигуратор в Fedora Core более удобен. Выбрать редактируемый уровень запуска можно с помощью меню Изменить уровень.

Конфигуратор ntsysv
Конфигуратор ntsysv

Комментарии (0)

RSS feed Comments

Написать комментарий

smaller | bigger

busy
 

Регистрация




Top