Gdy system jest uruchomiony lub zrestartowany Linux zaczyna bootowanie aż do momentu gdy wszystkie włączone w systemd usługi wystartują i na ekranie pojawi się komunikat logowania do systemu. Proces bootowania w komputerach x86 podzielony jest na cztery główne fazy: firmwaru, boot loadera, kernela i inicjalizacji.
Faza firmware.
Firmware to BIOS lub UEFI wgrany do pamięci flash na płycie głównej. Pierwszym etapem w tej fazie jest przetestowanie systemu (power-on-self-test: POST) celem detekcji i inicjalizacji sprzętu, z którego złożony jest komputer. Instalowany jest odpowiedni sterownik karty graficznej i na ekranie wyświetlane zostają komunikaty systemowe. Firmware skanuje dostępne dyski, lokalizuje partycję z ustawioną flagą boot. Na partycji tej znajduje się 512 bajtowy obraz zawierający: boot loader (GRUB2) o rozmiarze 446 bajtów, tablicę partycji o rozmiarze 64 bajty oraz sygnaturę boot o rozmiarze 2 bajtów. Po zlokalizowaniu dysku z bootowalną partycją primary wczytywany jest boot loader – GRUB2.
Faza boot loadera (GRUB).
W RHEL 7 wprowadzono nowy boot loader – GRUB2 – który zastępuje GRUB i stare LILO. GRUB2 wspiera zarówno BIOS/MBR jak i UEFI/GPT. Po tym jak GRUB2 jest wczytany do pamięci i przejmuje kontrolę szuka on kernela w katalogu /boot. Wypakowuje, dekompresuje kernel i wczytuje do pamięci w oparciu o konfigurację z pliku /boot/grub2/grub.cfg
. W systemach UEFI GRUB2 przeszukuje natomiast katalog /boot/efi
i uruchamia kernel w oparciu o konfigurację z pliku /boot/efi/EFI/redhat/grub.efi
. Po załadowaniu kernela GRUB2 przekazuje mu kontrolę nad dalszym procesem startowania systemu.
Faza kernela.
Po przejęciu kontroli od GRUB2 kernel wypakowuje, dekompresuje i ładuje initrd (initial RAM) z katalogu /boot
. Po czym montuje ten obraz (initrd) w trybie tylko do odczytu, który teraz będzie służył jako tymczasowy główny system plików. Teraz kernel ładuje niezbędne moduły z obrazu initrd aby uzyskać dostęp do systemu plików zlokalizowanego na partycjach dysku fizycznego. Ładuje także wszystkie moduły niezbędne do przeprowadzenia procesu startowania systemu. Później kernel odmontowuje obraz initrd i montuje główny system plików w trybie do odczytu i zapisu. W tym momencie system jest gotowy do uruchamiania usług.
Faza inicjalizacji.
W RHEL7 stare schematy inicjalizacji systemy SysVinit i Upstart zastąpione zostały przez systemd. Systemd uruchamia cały system przestrzeni użytkownika, usługi sieciowe i ładuje system do określonego run levelu. Proces uruchamiania systemu jest zakończony gdy wszystkie włączone usługi zostały uruchomione, system znajduje się w zaplanowanym określonym run levelu i użytkownicy mogą się do niego zalogować.