Сколько уровней выполнения используется в linux

Обновлено: 02.07.2024

ОС Linux имеет шесть уровней выполнения, а также три уровня выполнения по требованию.

Программа init переключает систему в нужный режим работы (на нужный уровень выполнения), и ее имеет право использовать только пользователь root. Для переключения на уровень n достаточно ввести команду:

Иногда, при небольшом изменении файла /etc/inittab, нужно заново перечитать таблицу инициализации (inittab). Для этого воспользуйтесь командой:

Помните, что вы в любой момент можете изменить файл /etc/inittab и перечитать его заново командой

Для перехода на первый уровень выполнения можно также использовать параметр s программы

Описание уровней приведено в табл. 5.4.

Уровни выполнения Таблица 5.4

Уровень Описание 0 Останов системы 1 Административный (однопользовательский) режим. Обычно используется пользователем root для восстановления системы после сбоя 2 Многопользовательский режим, но без использования сети 3 Многопользовательский режим, допускается работа в сети 4 Не используется 5 Многопользовательский режим. Поддержка сети. Автоматический запуск системы X Window 6 Перезагрузка системы

Файл /etc/inittab описывает, какие процессы должны запускаться во время загрузки и на протяжении нормальной работы системы. Программа init переключает уровни выполнения системы. Корректными номерами уровней системы являются 0…6, а также А, В и С.

Каждая строка файла /etc/inittab должна быть записана в формате:

Поле «Id» (идентификатор) — уникальная последовательность из четырех символов (в старых дистрибутивах длина имени идентификатора ограничена двумя символами).

Поле «уровни выполнения» — перечень уровней выполнения, для которых будет выполнено указанное действие.

Поле «действие» — задает действие, которое будет выполнено.

Поле «процесс» — определяет процесс, который будет выполнен.

В качестве значений поля «уровни_выполнения» могут быть указаны номера уровней выполнения без каких-либо разделителей. Например, значение данного поля 1235 означает, что указанное действие будет применено к уровням 1, 2, 3 и 5. В качестве дополнительных уровней, которые называются уровнями по требованию (ondemand), могут быть указаны уровни А, В и С.

В качестве действия может быть указано одно из действий, описанных в табл. 5.5

Действия над процессами, задаваемые в файле /etc/inittab Таблица 5.5

Действие Описание wait Процесс будет запущен на одном из указанных уровней выполнения, и программа init будет ждать его завершения respawn Процесс будет перезапущен после его завершения once Процесс будет запущен всего один раз на одном из указанных уровней выполнения boot Процесс будет запущен во время загрузки системы. Поле «уровни_выполнения» будет проигнорировано bootwait То же, что и boot, но программа init будет ждать завершения процесса off Не выполняет никаких действий ondemand Процесс будет запущен в режиме по требованию, то есть он будет выполнен, когда будет вызван один из уровней по требованию (А, В, С) initdefault Определяет уровень выполнения по умолчанию. Если он не указан, при загрузке программа init попросит вас ввести уровень выполнения sysinit Процесс будет запущен во время загрузки, но перед выполнением процессов, которые запускаются с помощью действия boot или bootwait powerwait Процесс будет запущен, когда исчезнет напряжение в сети. Естественно, для корректной работы этой записи нужен источник бесперебойного питания, от которого система и получит уведомление об исчезновении напряжения. Программа init будет ждать завершения этого процесса powerfail То же, что и powerwait, но программа init не будет ждать завершения процесса powerokwait Процесс будет запущен сразу после того, как программа init получит сведения о том, что питание восстановлено ctrlaltdel С помощью этого действия можно установить реакцию системы на нажатие комбинации клавиш Ctrl+Alt+Del

Теперь рассмотрим листинг обычного файла /etc/inittab (см. листинг 5.2).

Листинг 5.2. Файл /etc/inittab

ca::ctrlaltdel:/sbin/shutdown –t3 –r now

pf::powerfail:/sbin/shutdown –f –h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown –c "Power Restored; Shutdown Cancelled"

Рассмотрим подробно приведенный пример. Самая первая строка определяет уровень выполнения по умолчанию. Очень рекомендую вам установить это значение. Во-первых, вводить уровень загрузки каждый раз при запуске системы не очень удобно. Во-вторых, если не установлен уровень выполнения по умолчанию, система не сможет запускаться автоматически: при загрузке она будет ждать ввода номера уровня выполнения. Для загрузки системы подойдут два уровня: или 3, или 5. Я рекомендую использовать третий уровень выполнения, использовать уровень выполнения 5 нужно только в том случае, если вы хотите, чтобы система X Window запускалась автоматически при старте системы.

Затем указываются программы, которые будут выполнены во время системной инициализации (sysinit). В нашем случае будет запушен сценарий загрузки системы /etc/re.d/rc.sysinit.

Далее следуют описания действий для каждого из уровней выполнения. Например, для уровня выполнения номер 5 будет запущен сценарий /etc/re.d/rc с параметром 5. Программа init будет ждать завершения процесса /etc/re.d/rc.

Программа /sbin/update будет запускаться на каждом из уровней выполнения один раз.

Реакция на нажатие комбинаций клавиш Ctrl+Alt+Del устанавливается с помощью действия ctrlaltdel. Будет запущена программа shutdown для немедленной (now) перезагрузки (-r) системы. Задержка перед переключением на шестой уровень (перезагрузка) составит три секунды (-t3).

Наглядным примером для действия respawn может послужить система X Window. Можете провести такой эксперимент: перейдите на уровень выполнения 5: init 5

Если уровень 5 уже активен, этого делать, естественно, не нужно. Находясь в системе X Window, нажмите Ctrl+Alt+Backspace — эта комбинация клавиш используется для экстренного останова системы X Window. После останова система X Window будет перезапущена.

Данный текст является ознакомительным фрагментом.

Продолжение на ЛитРес

Уровни защиты

Уровни защиты AS/400 предназначены для широкого применения в различных областях человеческой деятельности. Соответственно, и требования к их защищенности варьируются от уровня ее полного отсутствия до уровня защиты, сертифицированной правительством. Задавая


Обычная последовательность загрузки в Linux состоит из нескольких этапов:

  • Завершает процедуру загрузки.
  • Имеет процесс с номером 1 (ID1).
  • Запускает системные процессы (как описано в /etc/inittab).
  • Не является частью ядра, он принадлежит пользовательскому пространству (/sbin/init).
  • Никогда не умирает: он управляет жизненным циклом операционной системы (например -перезагрузка, выключение).

Существует много альтернатив для процесса init, обычно он устанавливается с одной из следующих программ запуска:

При построении, эти проекты генерируют процесс init и набор общих инструментов, таких как telinit или initctl.

При загрузке init проверяет файл конфигурации inittab для параметра runlevel. Это значение изменяется от 0 до 6, и для каждого из них выполняется определенный набор действий. Данные уровни можно переопределить, но об этом немного позже.

Сейчас, init программа может юзать 10 уровней инициализации, но больше всего используются следующии сем:

-=== INIT ===-

  • Запуск на 0 уровне: /etc/rc.d/rc0.d
  • Запуск на 1 уровне: /etc/rc.d/rc1.d
  • Запуск на 2 уровне: /etc/rc.d/rc2.d
  • Запуск на 3 уровне: /etc/rc.d/rc3.d
  • Запуск на 4 уровне: /etc/rc.d/rc4.d
  • Запуск на 5 уровне: /etc/rc.d/rc5.d
  • Запуск на 6 уровне: /etc/rc.d/rc6.d

В этих каталогах имена программ начинаются с S или K, за которыми следуют порядковый номер и имя программы.
Программы, которые начинающиеся с S, выполняются в системе Start, а программы начинающиеся с K, выполняются в системе Kill. Номер последовательности указывает, когда программа будет выполнена.

-=== SYSTEMD ===-

В последних версиях Linux-систем, таких как RHEL 7, Ubuntu 16.04 LTS, концепция уровней запуска была заменена с init на systemd. Вот список целей (targets) Systemd в дистрибутивах Linux, которые были распространены вместе с Systemd в качестве менеджера по умолчанию:

  • runlevel0.target, poweroff.target – Выключение ОС.
  • runlevel1.target, rescue.target – Однопользовательский режим (single user mode).
  • runlevel2.target, multi-user.target – Не используется.
  • runlevel3.target, multi-user.target –Многопользовательский режим (multiuser mode). Нормальный режим работы сервера.
  • runlevel4.target, multi-user.target –Не используется.
  • runlevel5.target,graphical.target – Уровень запуска графического интерфейса.
  • runlevel6.target,reboot.target – Перезапуск ОС.

Перейдем к примерам.

Использование/Переключение runlevel в Unix/Linux

Приведу примеры использования в init и systemd.

-=== INIT ===-

Пользователь root (суперюзверь), может выполнить следующую команду для выключения сервера:

Пользователь root (суперюзверь), может выполнить следующую команду для перезагрузки сервера:

Собственно, таким образом сожно переключатся между init-уровнями.

-=== SYSTEMD ===-

Если вы хотите изменить RunLevel, например на runlevel3.target, установите его, как показано ниже:

Или, чтобы установить multi-user.target по умолчанию, используйте следующую команду:

Вы используете команду systemctl isolate для изменения цели. Например, измените на multi-user.target (уровень запуска 3):

Или, чтобы перейти в другой таргет (цель или target), только в текущем сеансе, выполните следующую команду:

И чтобы вернуться к графический режим (уровень 5-го уровня):

Редактирование runlevel в Unix/Linux

Приведу примеры использования в init.

-=== INIT ===-

Для этого, открываем файл:

Сохраните и закройте файл. Перезагрузите свою систему, чтобы войти в свой новый уровень запуска.

Дополнительные сведения вы можете получить:

Проверка runlevel в Unix/Linux

Приведу примеры использования в init и systemd.

-=== INIT ===-

Чтобы проверить уровень запуска вашей ОС, вы можете использовать команду runlevel без аргументов (Только для Linux ОС):

Или, можно использовать:

Чтобы узнать, какие службы запущены на каком из уровнях, вы можете использовать:

Или с использование параметра:

-=== SYSTEMD ===-

В системах Linux, которые используют Systemd в качестве сервис-менеджера по умолчанию, вы можете найти ран-левел с помощью команды:

Используйте следующую команду, чтобы проверить runlevel:

Чтобы узнать, какие службы запущены на каком из уровнях, вы можете использовать:

Вышеуказанная команда покажет только активные цели.

Чтобы просмотреть все загруженные объекты (активные и неактивные), запустите:

Проверьте статус конкретной службы, например, демон SSH:

Проверьте, активна ли служба(работает ли она), на пример с SSH:

Для использования помощи, используйте:

Добавить сервис/службу в runlevel в Unix/Linux

Приведу примеры использования в init и systemd.

-=== INIT ===-

Например, вам нужно добавить службу (сервис) nginx на 2-й уровень, для этого вы можете выполнить:

Не сильно сложно, верно?

-=== SYSTEMD ===-

Включим службу в автозапуск при запуске ОС, например для SSH:

Проверьте, включена ли она в автозапуск следующей командой:

Чтобы убрать службу (пример с SSH) выполните:

Для оставновки службы:

Чтобы предотвратить запуск службы вручную, используйте подкоманду:

Маскированные службы не могут быть запущены с помощью команды запуска systemctl до тех пор, пока она не будет открыта:

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Вы когда-нибудь интересовались различными этапами загрузки операционной системы? Что происходит, когда вы включаете свой компьютер?

Этапы процесса загрузки Linux условно можно разделить на:

Загрузка BIOS (POST).

Первый этап загрузки (MBR или GPT).

Второй этап загрузки (GRUB2).

Инициализация главного процесса (init или systemd).

Уровни выполнения (runlevels).

Сейчас мы их и рассмотрим.

Загрузка BIOS (POST)

Вы можете использовать функциональные клавиши (F1-F12) в режиме BIOS, чтобы задать приоритет загрузки устройств, настроить параметры аппаратного обеспечения компьютера или восстановить заданные по умолчанию значения параметров компьютера. В меню BIOS вы найдете номер версии BIOS, наименование поставщика BIOS, тип вашего процессора и другую подробную информацию о системе.


Меню загрузки в BIOS (Boot Manager) представляет собой список, в котором вы можете выбрать загружаемую операционную систему. Если на вашем компьютере установлено несколько дистрибутивов Linux или других операционных систем, вы можете добавить их в меню загрузки. Последняя установленная ОС будет показана в верхней части Boot Manager.

На следующем рисунке вы можете видеть, что на моем компьютере установлены Ubuntu и Windows. Я могу выбрать любую операционную систему (из доступных) для загрузки.



Первый этап загрузки (MBR или GPT)

Как только MBR обнаруживает загрузчик второго этапа, то передает управление на него.

Примечание: Стоит отметить, что сейчас все чаще вместо MBR используется более современная технология — GPT.

Второй этап загрузки (GRUB2)

Задача загрузчика второго этапа состоит в том, чтобы найти ядро системы и загрузить его в память.


Конфигурационными файлами загрузчика GRUB обычно являются файлы /boot/grub/grub.conf или /etc/grub.conf. Как только загрузчик находит ядро, то загружает его в оперативную память и передает ему дальнейшее управление.

Инициализация ядра

Большинство новых пользователей Linux считают, что Linux — это операционная система. Но на самом деле Linux — это ядро. Ядро часто называют сердцем операционной системы. Оно играет очень важную роль в процессе загрузки Linux. Ядро Linux находится в каталоге /boot и отвечает за взаимодействие между основными компонентами компьютера и операционной системой.


Файлы ядра Linux

Инициализации главного процесса (init или systemd)


Примечание: В системе инициализации SysV главным процессом является процесс init, а в системе инициализации systemd — (одноименный) процесс systemd.

Уровни выполнения (runlevels)

Runlevel 0 — завершает работу системы.

Runlevel 3 — многопользовательский режим с поддержкой сети, но без графического интерфейса. Чаще всего серверные версии Linux работают именно на этом уровне выполнения.

Runlevel 4 — не используется. Пользователь может настраивать этот уровень исходя из его целей.

Runlevel 5 — схож с режимом 3, но здесь запускается графический интерфейс. В этом режиме работают десктопные версии Linux.

Runlevel 6 — перезагружает систему.

Примечание: В системах семейства Debian уровни выполнения выстроены немного иначе. Например, Ubuntu в режиме командой строки запускается с уровнем выполнения 5.

В процессе загрузки Linux состояние уровня выполнения представлено буквенно-цифровым кодом. Если вы посмотрите на скриншот, приведенный ниже, вы увидите, что мой текущий уровень выполнения равен N 5 ; это означает, что мой компьютер уже завершил процесс загрузки, и работает в многопользовательском режиме с графическим интерфейсом.

Узнать текущий режим уровня выполнения можно с помощью следующей команды:


Если вам по какой-либо причине потребуется изменить уровень выполнения, то это можно сделать с помощью следующей команды:

sudo telinit [номер_уровня]

Заключение

Данный урок является лишь общим обзором процесса загрузки Linux, тем не менее для новичков он уже должен внести понимание о том, что происходит с системой Linux при нажатии кнопки включения на компьютере.

Посмею предположить, что каждого интересовало хоть когда-либо то, что происходит за занавесом заставок и загрузочных экранов с момента включения питания компьютера к моменту, когда предлагается войти в систему.

Я предлагаю вам познакомиться со следующими уровнями типичной загрузки Linux:

1. BIOS

  • BIOS отвечает за базовый ввод/вывод данных с устройств/на устройства.
  • Делает некоторые проверки целостности устройств. К тому же, за тестирование работоспособности электроники отвечает POST (Power-on self-test, он же «тест на адекватность себя самого», выполняющийся как этап пре-загрузки), который управляется BIOS
  • Ищет, загружает и выполняет программу-загрузчик ОС
  • Берет загрузчик из флопика, сидюка или жесткого диска. Во время загрузки BIOS'а вы можете нажать на кнопку (обычно это F12 или F2 или Del, зависит от платформы), если вам требуется внести некоторые изменения касательно настройки железа.
  • Как только загрузчик был обнаружен и загружен в память, BIOS передает управление ему.
  • Короче говоря, BIOS загружает и выполняет загрузочную запись (MBR).

2. MBR

  • MBR — это главная загрузочная запись, хранящаяся на жестком диске
  • Она размещена в 1-м секторе загрузочного диска, например /dev/hda или /dev/sda
  • MBR занимает меньше, чем 512 байтов. Она состоит из трех компонентов: 1) главная загрузочная информация, «живущая» в первых 446 байтах; 2) информация о таблице разделов — в следующих 64 байтах; 3) и последние 2 байта нужны для проверки корректности mbr.
  • Она содержит информацию о GRUB'е (или LILO).
  • Простыми словами — MBR загружает и выполняет загрузчик GRUB.

3. GRUB

  • GRUB — Grand Unified Bootloader.
  • Если в вашей системе установлено более, чем одно ядро, у вас есть возможность выбирать, которое из них должен выполняться
  • GRUB отображает красивую анимацию plymouth заставку, и, подождав несколько секунд интерактивного воздействия пользователя, если он не нажал ни одной клавиши, он загружает ядро, установленное по умолчанию в файле конфигурации grub.
  • GRUB понимает, что такое файловая система (древние загрузчики Linux'а, например, LILO этого не понимают).
  • Конфигурационный файл Grub обычно лежит по пути /boot/grub/grub.conf (так же /etc/grub.conf может быть символьной ссылкой на него). Вот пример файла конфигурации для CentOS:

4. Ядро или Kernel

  • Ядро монтирует файловую систему в соответствии с настройкой «root=» в фале grub.conf
  • Выполняет программу /sbin/init
  • Поскольку init — это первый процесс, запущенный ядром Linux, поэтому она имеет идентификатор процесса (PID) №1. Можете выполнить «ps -ef | grep init» и убедиться в этом.
  • initrd — это Initial RAM Disk, он же временный диск в оперативной памяти
  • initrd используется самим ядром в качестве временной корневой файловой системы, пока kernel не загрузится в реальную примонтированную файловую систему. Этот временный диск также содержит необходимые для загрузки драйверы, позволяющие получить доступ к разделам дисков и другому оборудованию

5. Init

  • Смотрит в файл /etc/inittab для того, чтобы определить уровень выполнения (run level).
  • Есть следующие уровни выполнения:
    • 0 – прервать выполнение
    • 1 – Однопользовательский режим, так называемый «Single user mode», или иными словами, консоль восстановления
    • 2 – Многопользовательский режим без поддержки NFS
    • 3 – Полноценный многопользовательский режим
    • 4 – не используется
    • 5 – X11
    • 6 – перезагрузка

    6. Уровень выполнения программ (Runlevel)

    Вот и все. Возможно, некоторым из вас это не ново и особого интереса не было при чтении статью, поскольку она более ориентирована на начально-средний уровень знакомства з Линуксом.
    В таком случае могу лишь сказать, что «повторение — мать учения» (с).

    Дополнения, исправления, уточнения

      : «Ну скажем прямо — так грузятся далеко не все дистры». С ним согласилось большинство, отмечая и bsd-style init, u-boot, и хоть initrd в статье пропущен, стоить заметить, что он нужен ядру не во всех дистрибутивах. Также отмечено, что в slackware поддержка rc.d осуществляется только в качестве совместимости, а встраиваемые системы грузятся иначе. На декстопах иногда бывает EFI, а кроме того Linux популярен в мире embedded и там ещё куча разных платформ. Линукс в телефоне вообще иначе грузится. , ссылая на википедию: Еще хочется сделать замечание по поводу MBR, первого сектора и пр. Все несколько усложнилось за последние годы. Сейчас уместней говорить о EFI.

    Читайте также: