Пару месяцев назад Linux Foundation объявил о LFCS (Сертифицированный системный администратор Linux Foundation), увлекательная новая программа, цель которой - позволить людям со всех концов света пройти сертификацию для выполнения базовых и промежуточных задач системного администрирования в системах Linux. Это включает в себя поддержку уже работающих систем и сервисов, а также поиск и анализ проблем из первых рук, а также возможность решать, когда поднимать проблемы перед инженерными группами.
В следующем видео описывается краткое введение в программу сертификации Linux Foundation.
Этот пост является частью 7 серии из 10 руководств, в этой части мы объясним, как управлять процессом запуска системы Linux и службами, которые необходимы для сертификационного экзамена LFCS.
Процесс загрузки системы Linux состоит из нескольких фаз, каждая из которых представлена отдельным компонентом. На следующей диаграмме кратко описан процесс загрузки и показаны все основные задействованные компоненты.
Когда вы нажимаете Мощность на вашем компьютере, прошивка, которая хранится в EEPROM микросхема на материнской плате инициализирует СООБЩЕНИЕ (Самотестирование при включении) для проверки состояния аппаратных ресурсов системы. Когда СООБЩЕНИЕ закончится, микропрограмма выполнит поиск и загрузит 1 этап загрузчик, расположенный в MBR или в EFI раздел первого доступного диска и передает ему управление.
В MBR находится в первом секторе диска, помеченном как загрузочный в BIOS настройки и 512 байтов размером.
Следующая команда выполняет резервное копирование MBR (в этом примере /dev/sda это первый жесткий диск). Полученный файл, mbr.bkp может пригодиться в случае повреждения таблицы разделов, например, при невозможности загрузки системы.
Конечно, чтобы использовать его позже, если возникнет необходимость, нам нужно будет сохранить его и хранить в другом месте (например, USB диск, например). Этот файл поможет нам восстановить MBR и снова заставит нас работать, если и только если мы тем временем не изменим компоновку жесткого диска.
# dd if = / dev / sda of = mbr.bkp bs = 512 count = 1.
# dd if = mbr.bkp of = / dev / sda bs = 512 count = 1.
Для систем, использующих EFI/UEFI микропрограммное обеспечение UEFI считывает его настройки, чтобы определить, какое приложение UEFI должно быть запущено и откуда (т. е. на каком диске и в каком разделе расположен раздел EFI).
Далее 2 этап загрузчик (он же менеджер загрузки) загружается и запускается. GRUB [GR и унифицированная загрузка] - наиболее часто используемый менеджер загрузки в Linux. Одну из двух различных версий можно найти в большинстве используемых сегодня систем.
Хотя цели LFCS экзамен не требует явных знаний о GRUB внутренности, если вы смелы и можете позволить себе испортить свою систему (вы можете сначала попробовать это на виртуальной машине, на всякий случай), вам нужно запустить.
# update-grub.
В виде корень после изменения конфигурации GRUB, чтобы применить изменения.
В основном, GRUB загружает значение по умолчанию ядро и initrd или initramfs изображение. Вкратце, initrd или initramfs помогают выполнить обнаружение оборудования, загрузку модуля ядра и обнаружение устройств, необходимых для монтирования реальной корневой файловой системы.
Как только настоящая корневая файловая система запущена, ядро запускает системный и сервисный менеджер (в этом или systemd, чей идентификатор процесса или PID всегда 1), чтобы начать обычный процесс загрузки пользовательского пространства для представления пользовательского интерфейса.
Оба в этом и systemd - это демоны (фоновые процессы), которые управляют другими демонами в качестве первой службы, которая запускается (во время загрузки), и последней службы, которая завершается (во время завершения работы).
Концепция чего-либо уровни выполнения в Linux определяет различные способы использования системы, контролируя, какие службы работают. Другими словами, уровень выполнения контролирует, какие задачи могут быть выполнены в текущем состоянии выполнения = уровень выполнения (а какие - нет).
Традиционно этот процесс запуска выполнялся на основе соглашений, которые возникли в Система V UNIX, когда система передает исполняемые наборы сценариев, которые запускают и останавливают службы, когда машина переходит на определенный уровень выполнения (другими словами, это другой режим работы системы).
На каждом уровне выполнения отдельные службы могут быть настроены на запуск или отключение во время работы. Последние версии некоторых основных дистрибутивов уходят от Система V стандарт в пользу довольно новой службы и системного менеджера, называемого systemd (что означает системный демон), но обычно поддерживает sysv команды для совместимости. Это означает, что вы можете запускать большинство известных sysv Инструменты init в дистрибутиве на основе systemd.
Читайте также: Почему systemd заменяет init в Linux
Помимо запуска системного процесса, в этом смотрит на /etc/inittab файл, чтобы решить, какой уровень запуска необходимо ввести.
Уровень выполнения | Описание |
0 | Остановите систему. Уровень выполнения 0 - это особое переходное состояние, используемое для быстрого завершения работы системы. |
1 | Этот уровень запуска, также называемый s или S, иногда называют режимом обслуживания. Какие службы, если таковые имеются, запускаются на этом уровне выполнения, зависят от дистрибутива. Обычно он используется для низкоуровневого обслуживания системы, которое может быть нарушено нормальной работой системы. |
2 | Многопользовательский. В системах Debian и производных это уровень запуска по умолчанию, включающий-если доступно- графический вход. В системах на базе Red Hat это многопользовательский режим без сети. |
3 | В системах на базе Red-Hat это многопользовательский режим по умолчанию, в котором работает все, кроме графической среды. Этот уровень выполнения, а также уровни 4 и 5 обычно не используются в системах на основе Debian. |
4 | Обычно не используется по умолчанию и поэтому доступен для настройки. |
5 | В системах на базе Red-Hat полный многопользовательский режим с графическим интерфейсом пользователя. Этот уровень выполнения аналогичен уровню 3, но с доступным графическим интерфейсом пользователя. |
6 | Перезагрузите систему. |
Чтобы переключаться между уровнями выполнения, мы можем просто выполнить изменение уровня выполнения, используя в этом команда: init N (где N - один из перечисленных выше уровней выполнения). Обратите внимание, что это не рекомендуемый способ перевода работающей системы на другой уровень запуска, поскольку он не предупреждает существующих пользователей, вошедших в систему (что приводит к потере работы и завершению процессов ненормально).
Вместо этого неисправность следует использовать команду для перезапуска системы (которая сначала отправляет предупреждающее сообщение всем вошедшим в систему пользователям и блокирует любые дальнейшие входы в систему; затем он сигнализирует init, что нужно переключить уровни выполнения); однако уровень запуска по умолчанию (тот, на котором будет загружаться система) должен быть отредактирован в /etc/inittab файл первым.
По этой причине выполните следующие действия, чтобы правильно переключаться между уровнями выполнения. Как root, найдите следующую строку в /etc/inittab.
id: 2: initdefault:
и измените номер 2 для желаемого уровня выполнения с помощью предпочитаемого текстового редактора, например vim (описанного в Как использовать редактор vi / vim в Linux - Часть 2 этой серии).
Далее запускаем как root.
# выключение -r сейчас.
Тот последний команда перезапустит систему, заставив ее запуститься на указанном уровне выполнения во время следующей загрузки, и запустит сценарии, расположенные в /etc/rc[runlevel].d каталог, чтобы решить, какие службы следует запускать, а какие нет. Например, для уровня выполнения 2 в следующей системе.
Чтобы включить или отключить системные службы при загрузке, мы будем использовать команда chkconfig в CentOS / openSUSE и sysv-rc-conf в Debian и производных. Этот инструмент также может показать нам, каково предварительно сконфигурированное состояние службы для определенного уровня выполнения.
Читайте также: Как остановить и отключить нежелательные службы в Linux
Список конфигурации уровня запуска для службы.
# chkconfig --list [название службы] # chkconfig - list postfix. # chkconfig --list mysqld.
На изображении выше мы видим, что постфикс настроен на запуск, когда система переходит на уровни запуска 2 через 5, в то время как mysqld будет работать по умолчанию для уровней запуска 2 через 4. Теперь предположим, что это не ожидаемое поведение.
Например, нам нужно включить mysqld для уровня запуска 5 также и отключите postfix для уровней выполнения 4 и 5. Вот что мы будем делать в каждом случае (выполняем следующие команды от имени пользователя root).
# chkconfig --level [уровень (и)] обслуживание включено. # chkconfig --level 5 mysqld on.
# chkconfig --level [уровень (и)] сервис выключен. # chkconfig --level 45 postfix off.
Теперь мы будем выполнять аналогичные задачи в На основе Debian система с использованием sysv-rc-conf.
Настройка службы для автоматического запуска на определенном уровне выполнения и предотвращения ее запуска на всех остальных.
1. Давайте воспользуемся следующей командой, чтобы узнать, на каких уровнях выполнения мдадм настроен на запуск.
# ls -l /etc/rc[0-6 ].d | grep -E 'rc [0-6] | mdadm'
2. Мы будем использовать sysv-rc-conf чтобы предотвратить запуск mdadm на всех уровнях выполнения, кроме 2. Просто установите или снимите флажок (с помощью пробела), если хотите (вы можете перемещаться вверх, вниз, влево и вправо с помощью клавиш со стрелками).
# sysv-rc-conf.
Затем нажмите q бросить курить.
3. Мы перезапустим систему и снова запустим команду из ШАГ 1.
# ls -l /etc/rc[0-6 ].d | grep -E 'rc [0-6] | mdadm'
На изображении выше мы видим, что мдадм настроен на запуск только на уровне запуска 2.
systemd - это еще один диспетчер служб и систем, который внедряется в нескольких основных дистрибутивах Linux. Он направлен на то, чтобы во время запуска системы параллельно выполнялась дополнительная обработка (в отличие от сисвинит, который всегда имеет тенденцию быть медленнее, потому что он запускает процессы по одному, проверяет, зависит ли одно от другого, и ожидает запуска демонов, чтобы можно было запустить больше сервисов), и служить в качестве динамического управления ресурсами для работающего система.
Таким образом, службы запускаются при необходимости (чтобы избежать использования системных ресурсов) вместо того, чтобы запускаться без веской причины во время загрузки.
Просмотр статуса всех процессов, запущенных в вашей системе, как systemd родной и SysV services выполните следующую команду.
# systemctl.
В НАГРУЗКА столбец показывает, является ли определение единицы измерения (см. ЕДИНИЦА ИЗМЕРЕНИЯ столбец, который показывает, что служба или что-либо, поддерживаемое systemd) были правильно загружены, в то время как АКТИВНЫЙ и SUB столбцы показывают текущий статус такого объекта.
Когда АКТИВНЫЙ столбец указывает, что статус подразделения отличается от активного, мы можем проверить, что произошло, используя.
# systemctl status [unit]
Например, на изображении выше media-samba.mount находится в неисправном состоянии. Давайте работать.
# systemctl status media-samba.mount.
Мы видим, что media-samba.mount не удалось, потому что процесс монтирования на хосте dev1 не удалось найти общий сетевой ресурс на //192.168.0.10/gacanepa.
Как только сетевой ресурс //192.168.0.10/gacanepa становится доступным, давайте попробуем запустить, затем остановимся и, наконец, перезапустим устройство media-samba.mount. После выполнения каждого действия давайте запустим systemctl status media-samba.mount, чтобы проверить его статус.
# systemctl start media-samba.mount. # systemctl status media-samba.mount. # systemctl stop media-samba.mount. # systemctl перезапустить media-samba.mount. # systemctl status media-samba.mount.
Под systemd вы можете включить или отключить службу при ее загрузке.
# systemctl enable [service] # включить службу # systemctl disable [service] # запретить запуск службы при загрузке.
Процесс включения или отключения автоматического запуска службы при загрузке заключается в добавлении или удалении символических ссылок в /etc/systemd/system/multi-user.target.wants каталог.
Кроме того, вы можете узнать текущий статус службы (включен или отключен) с помощью команды.
# systemctl включен [служба]
Например,
# systemctl включен postfix.service.
Кроме того, вы можете перезагрузить или выключить систему с помощью.
# перезагрузка systemctl. # systemctl shutdown.
Выскочка является заменой на основе событий /sbin/init daemon и был рожден из-за необходимости запускать службы только тогда, когда они нужны (а также контролировать их во время они работают) и обрабатывают события по мере их возникновения, таким образом превосходя классический, основанный на зависимостях sysvinit система.
Первоначально он был разработан для дистрибутива Ubuntu, но используется в Red Hat Enterprise Linux. 6.0. Хотя он был предназначен для развертывания во всех дистрибутивах Linux в качестве замены для сисвинит, со временем его затмила systemd. 14 февраля 2014 года Марк Шаттлворт (основатель Canonical Ltd.) объявил, что в будущих выпусках Ubuntu в качестве демона инициализации по умолчанию будет использоваться systemd.
Поскольку SysV Сценарий запуска для системы был настолько распространен в течение длительного времени, что большое количество пакетов программного обеспечения включает сценарии запуска SysV. Для размещения таких пакетов Upstart предоставляет режим совместимости: он запускает сценарии запуска SysV в обычных местах (/etc/rc.d/rc?.d, /etc/init.d/rc?.d, /etc/rc?.dили аналогичное место). Таким образом, если мы устанавливаем пакет, который еще не включает скрипт конфигурации Upstart, он все равно должен запускаться обычным способом.
Кроме того, если мы установили такие утилиты, как chkconfig, вы должны иметь возможность использовать их для управления службами на основе SysV так же, как и в системах на основе sysvinit.
Сценарии Upstart также поддерживают запуск или остановку служб на основе более широкого набора действий, чем сценарии запуска SysV; например, Upstart может запускать службу всякий раз, когда подключено определенное аппаратное устройство.
Система, использующая Upstart и его собственные сценарии, исключительно заменяет /etc/inittab файл и специфичный для уровня запуска SysV каталоги сценариев запуска с .conf скрипты в /etc/init каталог.
Эти * .conf скрипты (также известные как определения заданий) обычно состоят из следующего:
Например,
# Моя тестовая служба - описание демонстрации сценария Upstart "Здесь идет описание" Моя тестовая служба "автора" Дэйва Налла <[электронная почта защищена]>" # Станцы # # Станцы определяют, когда и как процесс запускается и останавливается. # См. Список строф здесь: http://upstart.ubuntu.com/wiki/Stanzas#respawn. # Когда запускать службу. начать на уровне выполнения [2345] # Когда останавливать службу. остановить на уровне выполнения [016] # Автоматически перезапускать процесс в случае сбоя. респаун. # Укажите рабочий каталог. chdir / home / dave / myfiles. # Укажите процесс / команду (при необходимости добавьте аргументы) для запуска. exec bash backup.sh arg1 arg2.
Чтобы применить изменения, вам нужно будет сказать выскочке, чтобы он перезагрузил свою конфигурацию.
# initctl reload-configuration.
Затем начните свою работу, введя следующую команду.
$ sudo start yourjobname.
Где ваше имя это имя задания, которое было добавлено ранее с yourjobname.conf сценарий.
Более полное и подробное справочное руководство по Upstart доступно на веб-сайте проекта в меню «Кулинарная книга”.
Знание процесса загрузки Linux необходимо, чтобы помочь вам в решении задач по устранению неполадок, а также в адаптации производительности компьютера и запущенных служб к вашим потребностям.
В этой статье мы разобрали, что происходит с момента нажатия кнопки Мощность переключитесь, чтобы включить машину, пока не получите полностью рабочий пользовательский интерфейс. Я надеюсь, что вы научились читать его так же много, как я, когда составлял его. Не стесняйтесь оставлять свои комментарии или вопросы ниже. Мы всегда ждем ответа от наших читателей!