Управление загрузкой
Процедура загрузки
При старте устройства происходит POST (Power-On Self Test), проверяющий работоспособность аппаратных компонентов
После этого происходит загрузка BIOS или UEFI в зависимости от системы
Независимо от типа загрузки в предыдущей стадии далее загружается GRUB
GRUB Bootloader загружает ядро, позволяя через меню при необходимости изменить параметры этой загрузки
Ядро загружается вместе с initramfs, который содержит необходимые для пуска системы драйвера
После загрузки ядра работу перехватывает systemd, который проходит через две фазы:
Старт базовых компонентов (примонтирование девайсов, разделов)
Старт сервисов и служб
Далее пользователь получает доступ к системе и возможность залогиниться
Grub2 Runtime
Runtime - параметры, применяемые только в текущем сеансе, до следующей перезагрузки
Из меню Grub2 необходимо нажать "e" для изменения настроек
При нажатии "с" совершается переход в командный режим Grub
Из командного режима "help" отобразит доступные опции
Grub2 по-умолчанию дает возможность выбрать для загрузки три последних ядра
Одной из опций является Rescue Kernel - ядро с ограниченном набором модулей, но с максимальной вероятностью безпроблемной загрузки
По-умолчанию набор опций следующий:
load_video - загрузка видеодрайвера
set gfx_payload=keep - режим видео
insmod gzio - активация модуля сжатия
linux ($root)/<kernel> - ядро для загрузки
root=/dev/mapper/rhel-root ro
crash/kernel=auto - запись дампа сбоя
lvm <volume>
rhgb - redhat graphical boot
quiet - без вывода информации
initrd /dev/initram<name>.img - initram образ
Grub2 Persistent
Persistent - настройки, которые сохраняются при перезагрузке
Данные параметры настраиваются в /etc/default/grub
После внесения изменений в настройки необходимо пересобрать grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg для BIOS систем
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg для EFI систем
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
Systemd таргеты
Таргет systemd - группа файлов инициализации загрузки
Часть трагетов - изолируемые (isolatable), они определяют конечное состояние, в котором загружается система
emergency.target - для загрузки минимального набора сервисов, используется для отладки проблем
rescue.target - также ограниченный набор сервисов, но с большим их числом
multi-user.target - обынчый запуск без графики
graphical.target - обычный запуск с графикой
При активации юнита, он добавляется к определенному таргету
[root@centos8 ~]# systemctl disable dhcpd
Removed /etc/systemd/system/multi-user.target.wants/dhcpd.service.
[root@centos8 ~]# systemctl enable dhcpd
Created symlink /etc/systemd/system/multi-user.target.wants/dhcpd.service → /usr/lib/systemd/system/dhcpd.service.
Параметры самого таргета можно посмотреть через systemctl
[root@centos8 ~]# systemctl cat multi-user.target
# /usr/lib/systemd/system/multi-user.target
# SPDX-License-Identifier: LGPL-2.1+
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Multi-User System
Documentation=man:systemd.special(7)
Requires=basic.target
Conflicts=rescue.service rescue.target
After=basic.target rescue.service rescue.target
AllowIsolate=yes
Все сервисы, которые привязаны к таргету отображаются как симлинки в /etc/systemd/system/<name>.target
[root@centos8 ~]# ls -l /etc/systemd/system/multi-user.target.wants
total 0
lrwxrwxrwx. 1 root root 35 Jan 7 12:28 atd.service -> /usr/lib/systemd/system/atd.service
lrwxrwxrwx. 1 root root 38 Jan 7 12:27 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 44 Jan 7 12:28 avahi-daemon.service -> /usr/lib/systemd/system/avahi-daemon.service
lrwxrwxrwx. 1 root root 39 Jan 7 12:26 chronyd.service -> /usr/lib/systemd/system/chronyd.service
lrwxrwxrwx. 1 root root 37 Jan 7 12:26 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 33 Jan 7 12:27 cups.path -> /usr/lib/systemd/system/cups.path
lrwxrwxrwx. 1 root root 37 Mar 20 22:12 dhcpd.service -> /usr/lib/systemd/system/dhcpd.service
lrwxrwxrwx. 1 root root 43 Jan 7 12:27 dnf-makecache.timer -> /usr/lib/systemd/system/dnf-makecache.timer
lrwxrwxrwx. 1 root root 38 Feb 17 23:23 docker.service -> /usr/lib/systemd/system/docker.service
lrwxrwxrwx. 1 root root 41 Jan 7 12:28 firewalld.service -> /usr/lib/systemd/system/firewalld.service
lrwxrwxrwx. 1 root root 42 Jan 7 12:28 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 37 Jan 7 12:27 kdump.service -> /usr/lib/systemd/system/kdump.service
lrwxrwxrwx. 1 root root 35 Jan 7 12:26 ksm.service -> /usr/lib/systemd/system/ksm.service
lrwxrwxrwx. 1 root root 40 Jan 7 12:26 ksmtuned.service -> /usr/lib/systemd/system/ksmtuned.service
lrwxrwxrwx. 1 root root 46 Jan 7 12:26 libstoragemgmt.service -> /usr/lib/systemd/system/libstoragemgmt.service
Зависимости таргетов доступны в systemctl list-dependencies
[root@centos8 ~]# systemctl list-dependencies
default.target
● ├─accounts-daemon.service
● ├─gdm.service
● ├─rtkit-daemon.service
● ├─systemd-update-utmp-runlevel.service
● ├─udisks2.service
● └─multi-user.target
● ├─atd.service
● ├─auditd.service
● ├─avahi-daemon.service
● ├─chronyd.service
● ├─crond.service
● ├─cups.path
<...>
● ├─vdo.service
● ├─vmtoolsd.service
● ├─basic.target
● │ ├─-.mount
● │ ├─microcode.service
● │ ├─paths.target
● │ ├─slices.target
● │ │ ├─-.slice
● │ │ └─system.slice
● │ ├─sockets.target
● │ │ ├─avahi-daemon.socket
● │ │ ├─cockpit.socket
● │ │ ├─cups.socket
● │ │ ├─dbus.socket
● │ │ ├─dm-event.socket
● │ │ ├─iscsid.socket
Настройка Default таргета
systemctl get-default отображает текущий таргет по-умолчанию
[root@centos8 ~]# systemctl get-default
graphical.target
systemctl set-default устанавливает таргет по-умолчанию
systemctl start graphical.target - загрузит GUI
Загрузка в нужный таргет:
В grub2 использовать systemctl.unit=<name>.target в параметрах загрузки
В текущей системе systemctl isolate <name>.target
Last updated
Was this helpful?