ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

8 минут чтени€

»так, у нас загрузилось €дро операционной системы. ƒалее отрабатывают системы инициализации операционной системы. “ри варианта: SysV, systemd, Upstart.


Init в стиле SysV

Init в стиле SysV данна€ процедура инициализации, сама€ стара€ она более классический Unix вариант инициализации операционной системы. ƒл€ того, чтобы пон€ть, как происходит инициализаци€ необходимо пон€ть, что такое режимы загрузки (они же runlevel), разобратьс€ как между ними переключатс€, рассмотреть работу со службами.

ќбычно есть 7 уровней выполнени€ по умолчанию:

  1. ¬ыключение
  2. ќднопользовательский режим (чаще всего используетс€ дл€ отладки и настройки операционной системы)
  3. Debian\Ubuntu по умолчанию
  4. RedHat\Suse по умолчанию текстовый режим.
  5. WildCard (программируемый режим, можно сюда поставить любой)
  6. RedHat\Suse GUI (Graphical User Interface)
  7. ѕерезагрузка.

Ќо существуют операционные системы, где 10 уровней по умолчанию.  онечно речь идет о самых распространенных €драх и сборках *nix образных операционных системах.

ƒл€ дальнейших по€снений, как работает инициализаци€ в стиле sysV нам необходим операционна€ система CentOS 5.4 или ниже, потому что в более новых операционных системах данный процесс давно уже заменен. ќтроем файл настроек текстовым редактором vi или любым другим удобным дл€ вас.

vi /etc/inittab

ћы можем увидеть содержание файла. “е самые уровни о которых шла речь выше. ѕлюс прописан уровень используемые при загрузке по умолчанию. —трочка id:3:initdefault:

id:3:initdefault:

ћы данный параметр можем отредактировать и например сказать, чтобы операционна€ система загружалась по умолчанию в Single Mode например.

операционна€ система загружалась по умолчанию в Single Mode

≈сли мы посмотрим далее файл, мы можем увидеть настройку, котора€ описывает действи€ нажати€ клавиш Ctrl+alt-delete. ј также нагл€дно прописано, что запуск определенного уровн€ - это запуск определЄнного скрипта. ¬се скрипты запускаютс€ из папки /etc/rc.d/

¬се дальнейшие варианты инициализации растут, вот из этого варианта. » этой процедуры инициализации. ѕерейдем в директорию, где лежат все скрипты инициализации и выполн€ютс€ данные скрипты при старте системы.

скрипты инициализации

¬ данной папке куча скриптов, которые запускают определенные службы, например, ssh запускает демона ssh дл€ подключени€ клиентом по 22 порту. “.е здесь куча служб и запускаютс€ они этими скриптами. ≈сли мы например хотим остановить какую нибудь службу то набираем ./rsync stop , ну и соответственно ./rsync start дл€ запуска данной службы. јналогично мы можем управл€ть через команду service, например: service rsync restart . ѕоднимемс€ на уровень выше cd ..

Ќайдем все файлы, которые начинаютс€ с rc. ƒл€ этого набираем: ls -l | grep rc. ¬ результате мы увидим несколько скриптов.

ls  -l | grep rc

ѕосмотрим rc3.d . ј дл€ этого перейдем в эту директорию. ¬ ней можно увидеть кучу скриптов. ¬ вариации Ubuntu современной и затем в вариации CentOS 5.4

ѕосмотрим rc3.d ls

“е скрипты, которые начинаютс€ с буквы K, эти скрипты при старте убивают сервис, те скрипты, которые имеют первой букву S запускают сервис. Ќу и соответственно пор€дковый номер исполнени€ скрипта в очереди. ƒл€ каждого runlevel свой набор скриптов.

ќсновные команды

  • Init управление инициализацией с помощью нее можно перемещатьс€ между runlevel.
  • Telinit управление процессом init , в старых дистрибутива использовалась именно эта команда.
  • Wall вывод сообщени€ пользовател€м системы
  • Halt - выключение компьютера
  • Reboot перезагрузка компьютера
  • Shutdown - запланированное выключение
Service service_name start|stop|reload|restart

ƒл€ того, чтобы перемещатьс€ по уровн€м загрузки, нам необходимо пон€ть на каком уровне мы находимс€ сейчас. Ќабираем runlevel . —оответственно, если мы хотим переключитс€ telinit 1 отрабатывают скипты мы попадаем в однопользовательский режим 1.

ƒл€ того, чтобы послать сообщение все пользовател€м на данной машине необходимо набрать с соблюдением регистра wall "Abrakadabra". ” всех пользователей по€витс€ данное сообщение на экране.

ƒл€ выключени€ сейчас компьютера можно использовать shutdown h now.


Init в стиле Systemd

Init в стиле Systemd более современна€ система инициализации операционной системы Linux.

Ќеобходимым элементом работы системы systemd , €вл€ютс€ Unit. Unit- это модуль которыми оперирует systemd:

  • .service службы
  • .mount точки монтировани€
  • .device устройства
  • .socket сокеты

≈сли при работе в консоли мы не указывает расширение юнита, то в принципе system может догадатьс€ в каком случае, что используетс€. ¬ операционной системе существуют 2 папки в которых хран€тс€ Unit:

  • /usr/lib/systemd директори€ с Units по умолчанию, в которой создаютс€ units при установке какого либо программного обеспечени€.
  • /etc/systemd директори€ с управл€емыми Units. “ут лежат те Unit которыми может управл€ть админ, добавл€ть , редактировать.

ѕосмотрим, что находитс€ в данных директори€х переходим в /usr/lib/system

переходим в /usr/lib/system

Ќам интересны 2 директории system и user.

2 директории system и user

—одержимое папки system выгл€дит вот так. ¬ данной директории лежат все необходимые Units дл€ системы в директории user дл€ пользовател€.  артинка будет примерно аналогична€.

ƒиректори€ /etc/systemd.

/etc/systemd

“ут точно также есть две папки system и user, а также конфигурационные фалы. ƒанные конфигурационные файлы и отвечают за настройку systemd. Ёто те файлы которые пришли на замену /etc/inittab, предыдущей версии инициализации операционной системы. ‘айлы юнитов в директори€х system и user мы можем редактировать дл€ каких-то своих целей и даже писать targets.

ƒалее мы можем посмотреть запущенные Units. ƒл€ этого мы можем выполнить systemctl команду, она отвечает за все действи€ с systemd. ƒл€ примера команда systemctl list-units нам выведет все запущенные Units, сокеты ,устройства ,точки монтировани€.

systemctl list-units

ћожно посмотреть юниты, которые не стартанули systemd failed. ј также мы можем управл€ть юнитами systemctl status|start|stop|restart crond.

“ак же Systemd работает с Target (цел€ми).

Systemd работает с Target

≈сть target которые работают так же как runlevel в классической процедуре инициализации, они не пронумерованы в отличии от runlevel у них есть конкретные имена. ¬ табличке можно посмотреть какие target соотнос€тс€ с какими runlevel. »х этих target может быть несколько, потому что target бывают не только загрузочные. ƒанна€ система использовани€ target обратно совместима€ с системой инициализации. ƒл€ переключени€ мы можем использовать команду telinit. —ами по себе target есть нека€ группировка юнитов, последовательность вызова юнитов. Ёто может быть target последовательного вызова нескольких служб и ниже сто€щий target.

“екущий уровень мы можем посмотреть командой runlevel. ѕо умолчанию это будет 3. ƒалее мы можем написать systemctl list-units --type=target

systemctl list-units --type=target

» можно увидеть, что находимс€ на 3-м уровне также т.к target соответствует. “ак же мы можем переключатс€ между runlevel командой telinit. Ќапример, дл€ перехода в однопользовательский режим telinit 1. ј так же мы можем использовать через синтаксис systemctl isolate reboot.target.

ƒл€ того чтобы поставить какой-то загрузочный target по умолчанию, необходимо отредактировать загрузчик, вставить параметры €дра, которые будут запускатьс€. »ли сделать проще командой systemctl set-default f multi-user.target (использование например 3 runlevel по умолчанию).

ќдной из особенностей system €вл€етс€ интересна€ система журналировани€ journald. ƒемон журналов. Ёта система уникальна тем, что собирает информацию из разных источников событий и прив€зывает их к конкретным юнитам и сервисам. Ѕлагодар€ этому мы можем всю диагностическую информацию просматривать в одном месте. —оответственно находить неисправности и их устран€ть.

–аботает следующим образом:

  • Journalctl f - показывает событи€ по мере их возникновени€.
  • Journalctl n 10 вывод последних 10 событий

»нициализаци€ Init в стиле

»нициализаци€ Init в стиле upstart это система инициализации, в том стиле котора€ задумывалась дл€ Ubuntu, и заменила процедуру инициализации, котора€ пришла из Unix стандартную init процедуру. ѕроцедура инициализации upstart контролирует инициализацию демонов и служб в течении загрузки системы и их остановку если у нас система выключаетс€ или нужно переключитс€ в другой режим. ќсновное отличие от классической процедуры инициализации в том, что задачи и службы останавливаютс€ по событи€м и сами событи€ могут генерироватьс€ задачами и службами, могут прин€ты быть от любого процесса системы. ћогут быть службы перезапущены в автоматическом режиме если они вдруг были завершены в аварийном режиме. ≈ще одно отличие в том, что у данного режима инициализации есть задачи (tasks). ќсновными пон€ти€ми €вл€ютс€ службы и задачи. ќсновное отличие службы от задачи в том, что служба перезапускаетс€ если была аварийно завершена, а задача нет.

ѕроцесс инициализации системы по upstart берет конфигурацию из файлов каталога /etc/init каталог файлов-заданий (jobs).  аждый файл отвечает за запуск каждого задани€ или службы и должен заканчиватьс€ с расширением .conf . ”ровни инициализации остались те же самые. ќпределение и переключение между уровн€ми выполн€ютс€ теми же командами, описанными выше. »зменилс€ файл, в котором мы описываем runlevel запуска по умолчанию. » дл€ управлени€ upstart используетс€ утилита initctl.

дл€ управлени€ upstart используетс€ утилита initctl

 ак мы видим в каталоге /etc/init наход€тс€ конфигурационные файлы Jobs.  аждый отвечает за запуск отдельной службы. —мотрим файл конфигурации простейшего файрвола операционной системы cat ufw.conf

файл конфигурации простейшего файрвола операционной системы

 ак мы видим ufw стартует при условии, описанном start on, выключаетс€ на определенных runlevel. ‘айл конфигурации с runlevel по умолчанию находитс€ в файле cat /etc/init/rc-sysinit.conf

”правл€ютс€ службы простыми командами status ufw \ start ufw \ stop ufw. ¬ данной статье мы рассмотрели различные вариации инициализации. ƒумаю, информаци€ будет очень полезной.