Что такое уровень запуска 'S' в Debian / Ubuntu для

8

Согласно Википедии , «S» должен быть стандартным уровнем запуска: «однопользовательский режим». Но если я не ошибаюсь, однопользовательский режим в Debian - уровень запуска 1. В одной из статей Debian я обнаружил, что «S» - это уровень запуска, «который система использует на своем пути к другому уровню выполнения». Интересно...

На самом деле, я всегда в значительной степени игнорировал этот уровень запуска, но сегодня я играл с Firestarter (да, действительно, с брандмауэром для конечного пользователя) только потому, что мне было любопытно, какие правила брандмауэра он будет генерировать. Но затем я заметил, что он создает загрузочный хук в /etc/rcS.d, и я подумал: а может, у моего брандмауэрного сценария это тоже есть?

Обновить

Теперь я еще больше заинтересован в том, чтобы узнать, что на самом деле происходит в Debian / Ubuntu , потому что пакет Shorewall (который является сильно «Debianized») также создает свой (только!) Загрузочный хук в rcS.d!

Крис Лерчер
источник

Ответы:

3

Я смотрю на уровни запуска следующим образом:

 S - true single user mode usually drops you into a minimal root shell
 1 - Administrative mode, you get a standard login request before access
 2 - Multi-user without TCP/IP networking -- could use serial ports for other logins
 3 - Multi-user with TCP/IP networking and text 
 4 - To be determined by the system owner
 5 - Multi-User with TCP/IP networking and graphic console 
 6 - reboot
 0 - shutdown and power down

Таким образом, брандмауэр действительно необходим, если TCP / IP запущен и работает, и это обычно происходит только в состоянии инициализации 3.

Якорь,
источник
1
Вся эта концепция уровня запуска является наследием прошлого. В настоящее время это обычно однопользовательский режим (для обслуживания) и используется какой-то другой обычный режим (например, 2 или 5 в зависимости от дистрибутива). Я действительно не вижу варианта использования для чего-либо еще.
cтамас
На самом деле, что еще хуже, новейшие дистрибутивы покончили с уровнями выполнения все вместе (в настоящее время поддерживаются как устаревшие вопросы) и собираются в именованные состояния с зависимостями под ними (см. Fedora 15).
mdpc
3

Все вышеперечисленное, кажется, огибает прямой ответ на заданный вопрос.

Из всего, что я могу найти, rcS.dсценарии реализованы так же, как S« запуск », а не « одиночный ».

Все они запускаются во время загрузки. Если затем вы захотите использовать уровень запуска 1, сценарии rc1.dбудут запущены (которые могут быть довольно пустыми, учитывая всю работу, которую мы только что выполнили rcS)

Более того, rcSсценарии запускаются на пути к такому rc3- так эффективно система переводит себя в однопользовательский режим, затем пересматривает и решает, что она ДЕЙСТВИТЕЛЬНО должна делать. Очень запутанно и в основном плохо документировано.

В качестве доказательства, если вы посмотрите /etc/inittab, вы найдете:

 # Boot-time system configuration/initialization script.<br>
 # This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

затем следуют многие строки, напоминающие:

l3:3:wait:/etc/init.d/rc 3
Дэвид Коллиер
источник
1

Уровень запуска 1 также известен как уровень запуска s.

В системах на основе Debian это однопользовательский / минимальный режим . Смотрите Debian Runlevel :

Уровень запуска - это цифра от 0 до 6 или буква S. Уровни запуска 0, 6 и S зарезервированы для выключения, перезагрузки и однопользовательского режима соответственно.

jonasjacek
источник
0

S для однопользовательского режима.

http://wiki.debian.org/RunLevel

dmourati
источник
Так что, если скрипт имеет только хук запуска на уровне запуска S (например, Shorewall), и я загружаюсь на уровень запуска '2', начнется ли последовательность загрузки сценарием?
Крис Лерчер
В Linux, если ваше состояние по умолчанию (как описано в / etc / inittab) равно N, в отличие от UNIX, только элементы 'S' в /etc/rc.d/rcN.d (это расположение может отличаться в зависимости от дистрибутива Linux) будет выполняться во время запуска, никакой другой каталог init не будет использоваться.
MDPC
Обычно вы устанавливаете уровень запуска по умолчанию в inittab. Числа увеличиваются. Итак, для вашего примера, если ваш init настроен только на S, что совпадает с уровнем запуска 1. При загрузке ваша система запустится с уровня запуска 1 и увеличит выполнение всех сценариев инициализации для этого уровня, затем увеличит уровень запуска и будет повторяться до тех пор, пока получает уровень запуска по умолчанию, указанный в inittab. Вот два. Поэтому все, что было настроено для включения в 1 или 2, будет включено.
Дмурати
1
Обратите внимание, что мой вопрос относится к Debian / Ubuntu! Я просто попробовал следующее: я вставил простой скрипт /etc/rcS.dи /etc/rc2.dкаждый записывал короткое сообщение (с отметкой времени) в файл журнала. Результат: после загрузки у меня появляется сообщение для rcS, а через 5 секунд - сообщение для rc2.
Крис Лерчер
Чтобы изменить уровень запуска по умолчанию, в который будет загружаться система, измените переменную DEFAULT_RUNLEVEL в файле /etc/init/rc-sysinit.conf. Например, чтобы система по умолчанию
загружалась
0

В дополнение к ответу, предоставленному mdpc, на уровне выполнения 1 демоны (службы) не запускаются.

Ясир - TechToolbox
источник