Аппаратный загрузчик запускает дисковый загрузчик GRUB2

  Дисковый загрузчик читает конфиг /boot/grub2/grub.cfg
  [общается с заказчиком] и загружает ядро linux + INIT-ram-disk

    Ядро linux монтирует RAM-disk, подгружает с него дравера
    монтирует ROOT, и запускает Процесс Init (или Процесс SystemD)

       Процесс Init    читает конфиг /etc/inittab
       Процесс SystemD читает конфиг /etc/systemd/system/*
       и в соответствии с ним запустает все остальное




        Boot,   bootstrapping   -   слова, обозначающие  сейчас
"Загрузить/пнуть, процесс начальной  загрузки", на  самом  деле
произошли  из  английской фразы "Pull itself up by its own boot
straps" (Поднять себя за шнурки собственных ботинок)

     Начинается все с Boot-prom'a - небольшой программы, которая
хранится  в   нестираемой   памяти   компьютера    и   начинает
выполняться сразу после включения.

      Естественно, boot-prom умеет делать многое: форматировать
диски, инсталлировать  операционную  систему,  запускать  тесты
hardware.  Однако главное его предназначение - найти на диске и
запустить на выполнение файл /unix - ядро операционной системы.
И  своего  собственного  разума  на  это ему обычно не хватает,
поэтому  он  в  первую  очередь  загружает  с  жесткого   диска
"загрузчика   операционной   системы",  а  уж  тот  делает  все
остальное.




 BIOS  загружает  с  загрузочного  диска  блок  начальной загрузки активного
раздела.

 Он   запускает  загрузчик  GRUB2.  Тот  читает  свои  настроечные  файлы  в
/boot/grub2,  подгружает  дополнительные  модули  и  драверы,  дает  выбрать
пользователю пункт меню загрузки и загружает ядро и init-ramdisk описанные в
/boot/grub2/grub.cfg

Основные настройки заданы в файле /etc/default/grub , после их изменения:
 grub2-mkconfig -o /boot/grub2/grub.cfg'

     Загрузка в single mode

  Boot: ... root=/dev/sda2 ...   single

     Загрузка в еще более single user:

  Boot: linux ... init=/bin/sh

  mount -n -o remount /
  passwd root
  pvconv
  insmod de4x5
  ifconfig eth0  195.232.171.30
  route add -net 195.232.171.0 gw 195.232.171.30
  insmod nfs







Ядро инициализирует себя и после этого  запускает процесс init.
А init - все остальные процессы,  программы, которые необходимы
для нормального функционирования операционной системы.

Все дальнейшие  действия в системе определяются этим процессом.
Все, что нужно делать init-у, определяет специальная таблица.

Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ".
Уровень выполнения определяет состояние и поведение всей систе-
мы. Уровень обозначается цифрой (или буквой) 0,1,2,3,4,5,6,s,S

   0        - prom монитор - Полный останов системы;
1, s, S     - single user mode. Однопользовательский режим;
   2        - многопользовательский режим без NFS-сервера;
   3        - многопользовательский режим с NFS-сервером;
   6        - перезагрузка;




bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc   > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc    > /dev/console 2>&1
r0:0:wait:/etc/rc0       > /dev/console 2>&1
r2:23:wait:/etc/rc2      > /dev/console 2>&1
r3:3:wait:/etc/rc3       > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor  console console
t1:23:respawn:/etc/sysmonitor     tty01   9600
t2:23:off:/etc/sysmonitor         tty02   9600

        Формат таблицы:

ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда

ИМЯ: - просто имя строчки - они все должны быть разными
вид_действия:

  sysinit   запустить один раз после начальной загрузки;

            на соответствующем уровне выполнения:
  wait    - запустить один раз и дожидаться, пока не окончится;
  respawn - запустить параллельно, а если окончится, перезапус-
            кать снова;
  off     - ничего не делать (просто игнорировать эту строку).


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


        Сперва init запускает процессы, которые "sysinit"

        Отработав все строки "sysinit" уровня,  init  идет  все
дальше  по  /etc/inittab  и обнаруживает строку initdefault 3 -
она заставляет его "перейти" на уровень 3.



       Перейдя  на  уровень  выполнения  3, init и отрабатывает
первую  встретившуюся  строчку  с  уровнем  "3"  -  запускается
командный  файл  /etc/rc2  -  загляните в него. Там все просто:
/etc/rc2  берет  и  выполняет  командные  файлы  /etc/rc2.d/S*,
лежащие  в  каталоге  /etc/rc2.d.  Каждый  файл  выполняется  с
параметром "start"

       Отработав /etc/rc2, init точно таким же образом запускает
файл /etc/rc3. Вслед за этим он запускает  несколько  процессов
sysmonitor  -  по  одному  на каждый имеющийся терминал. Это те
самые  процессы,  которые  говорят  на  терминал:   "Login:   "
Пользователь, войдя  на  терминал, некоторое время работает, но
как только он  "уходит"  из  системы,  на  указанном  терминале
ничего  не остается. init тут же выполняет действие "respawn" -
перезапускает на терминал sysmonitor - и  опять  жизнерадостное
"Login: " появляется на терминале.



        По умолчанию init устанавливает уровень выполнения 5.
При начальной загрузке отрабатывается файл
/etc/rc.d/rc.S

        Затем для перехода в многопользовательский режим
/etc/rc.d/rc.M
        из которого запускаются файлы
/etc/rc.d/rc.inet1  устанавливающий сетевые интерфейсы
/etc/rc.d/rc.inet2  запускающий сетевые сервисы
/etc/rc.d/rc.local  запускающий  несколько  полезных  программ и
                    демонов - например, поддержка мыши,   httpd,
                    русификация  консоля и т.п.



Используется стандартная технология rc-файлов System V

RC-каталоги:
/etc/rc.d/rc[0123456].d/
/etc/rc.d/init.d/

Конфигурационные параметры для RC-команд:
/etc/sysconfig/




Last-modified: Fri, 30 Jun 2023 10:26:17 GMT