Pro řešení problémů se zaváděním systému je důležité porozumět procesu zavádění systému Linux. Toto jsou kroky na vysoké úrovni v procesu spouštění. Musíte si být vědomi souborů zapojených do procesu spouštění, protože chyby v těchto souborech mohou způsobit problémy se zaváděním.
Pokud se během spouštění vyskytne problém, musíte zjistit, ve které fázi procesu spouštění problém spočívá, abyste mohli podniknout příslušné kroky k vyřešení problému.
Představení systemd
systemd je nový správce systému a služeb v CentOS/RHEL 7. Je zpětně kompatibilní se SysV init skripty používanými předchozími verzemi RedHat Linuxu včetně RHEL 6. Nahrazuje Upstart jako výchozí inicializační systém.
Následující kroky shrnují, jak probíhá spouštěcí procedura v RHEL/CentOS 7.
- BIOS počítače provádí POST.
- BIOS načte MBR pro bootloader.
- Zavaděč GRUB 2 načte obraz jádra vmlinuz.
- GRUB 2 extrahuje obsah obrazu initramfs.
- Jádro načte moduly ovladačů z initramfs.
- Jádro spouští první proces systému, systemd.
- Vládu převezme systémový proces. To:
- Čte konfigurační soubory z adresáře /etc/systemd
- Čte soubor propojený pomocí /etc/systemd/system/default.target
- Uvede systém do stavu definovaného cílem systému
- Spustí /etc/rc.local
1. POST (Power on Self Test)
Ze systémového firmwaru, kterým může být moderní Universal Extended Firmware Interface (UEFI ) nebo klasický Basic Input Output System (BIOS ), provede se test POST (Power-On Self-Test) a inicializuje se hardware potřebný ke spuštění systému.
2. Výběr spouštěcího zařízení (s MBR)
– Master Boot Record (MBR) je prvních 512 bajtů spouštěcí jednotky, které systém BIOS načte do paměti.
– Dalších 64 bajtů obsahuje tabulku oddílů pro disk. Poslední dva bajty jsou „Magické číslo“, které se používá pro detekci chyb.
– MBR najde zaváděcí zařízení a nahraje zavaděč GRUB2 do paměti a přenese na něj kontrolu.
3. Načítání zavaděče (GRUB2)
– Výchozí zaváděcí program používaný na RHEL 7 je GRUB 2. GRUB je zkratka pro GRand Unified Bootloader . GRUB 2 nahrazuje starší zavaděč GRUB nazývaný také jako starší GRUB.
– Konfigurační soubor GRUB 2 se nachází na /boot/grub2/grub.cfg (Tento soubor přímo neupravujte).
– Nastavení konfigurace nabídky GRUB 2 jsou převzata z /etc/default/grub při generování grub.cfg.
– Ukázkový soubor /etc/default/grub :
# cat /etc/default/grub GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0" GRUB_DISABLE_RECOVERY="true"
– Pokud dojde ke změně některého z těchto parametrů, musíte spustit grub2-mkconfig znovu vygenerovat soubor /boot/grub2/grub.cfg.
# grub2-mkconfig –o /boot/grub2/grub.cfg
– GRUB2 prohledá komprimovaný soubor obrazu jádra nazývaný také jako vmlinuz v adresáři /boot.
– GRUB2 načte soubor obrazu jádra vmlinuz do paměti a rozbalí obsah souboru obrazu initramfs do dočasného souborového systému založeného na paměti (tmpfs).
– Počáteční RAM disk (initrd) je počáteční kořenový souborový systém, který je připojen před skutečný kořenový souborový systém.
initramfs
– Úkolem počátečního souborového systému RAM je předběžně načíst moduly blokových zařízení, například pro IDE, SCSI nebo RAID, aby pak bylo možné přistupovat ke kořenovému systému souborů, ve kterém se tyto moduly běžně nacházejí. připojený.
– Initramfs je svázán s jádrem a jádro tento initramfs připojí jako součást dvoufázového zaváděcího procesu.
– Nástroj dracut vytvoří initramfs pokaždé, když je nainstalováno nové jádro.
– Použijte příkaz lsinitrd k zobrazení obsahu obrázku vytvořeného pomocí dracut:
# lsinitrd | less
4. Načítání jádra
– Jádro spustí proces systemd s ID procesu 1 (PID 1).
– Také načte potřebné moduly ovladačů z obrazu initrd.
– Zavaděč (GRUB2) může uživateli nabídnout zaváděcí nabídku nebo jej lze nakonfigurovat tak, aby automaticky spouštěl výchozí operační systém.
– Chcete-li načtete Linux, jádro se načte společně s initramfs. Initramfs obsahuje moduly jádra pro veškerý hardware, který je nutný ke spouštění, a také počáteční skripty potřebné k přechodu do další fáze zavádění.
– Na RHEL 7 obsahuje initramfs kompletní operační systém (který může být používá se pro účely odstraňování problémů).
5. Spouštění systemd
– Jádro spustí proces systemd s ID procesu 1 (PID 1).
root 1 0 0 02:10 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23
– systemd je první proces, který se spustí po nabootování systému, a je posledním procesem, který běží, když se systém vypne.
– Řídí poslední fáze spouštění a připravuje systém k použití. Také urychluje bootování souběžným načítáním služeb.
– systemd čte soubor propojený souborem /etc/systemd/system/default.target (například /usr/lib/systemd/system/multi-user.target) k určení výchozího cíle systému (ekvivalentní úrovni běhu). Systémový cílový soubor definuje služby, které systemd spouští.
– systemd umožňuje spravovat různé typy jednotek v systému, včetně služeb (name.service) a cílů (name.target), zařízení (name.device) , body připojení systému souborů (název.připojení) a sokety (název.zásuvka).
Porovnání úrovní běhu SysV a cílových jednotek
Úroveň běhu | Cílové jednotky | Popis |
---|---|---|
0 | runlevel0.target, poweroff.target | Vypnout a vypnout |
1 | runlevel1.target, rescue.target | Nastavit záchranný shell |
2,3,4 | runlevel[234].target, multi-user.target | Nastavte negrafický víceuživatelský shell |
5 | runlevel5.target, graphical.target | Nastavte grafický víceuživatelský shell |
6 | runlevel6.target, reboot.target | Vypněte a restartujte systém |
systemd uvádí systém do stavu definovaného cílem systému a provádí úlohy inicializace systému, jako jsou:
1. Nastavení názvu hostitele
2. Inicializace sítě
3. Inicializace SELinuxu na základě jeho konfigurace
4. Tisk uvítacího banneru
5. Inicializace hardwaru systému na základě zaváděcích argumentů jádra
6. Připojení systémů souborů, včetně virtuálních systémů souborů, jako je souborový systém /proc
7. Čištění adresářů ve /var
8. Spouštění výměny
Zobrazit výchozí/aktuální cílovou jednotku
Pomocí následujícího příkazu zobrazíte, která cílová jednotka se používá ve výchozím nastavení:
# systemctl get-default graphical.target
graphical.target cílová jednotka označuje, že systém běží v grafickém stavu pro více uživatelů. Je to podobné jako spuštění úrovně 5 v inicializačním systému SysV. Můžete to ověřit pomocí starého příkazu runlevel :
# runlevel N 5
Výchozí cílovou jednotku představuje /etc/systemd/system/default.target soubor. Tento soubor je symbolickým odkazem na aktuální výchozí cílovou jednotku. Například:
# ls -lrt /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target
Změnit výchozí cílovou jednotku
Ke změně výchozí cílové jednotky použijte následující příkaz (například ke změně výchozí jednotky na multi-user.target):
# systemctl set-default multi-user.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
Všimněte si, že symbolický odkaz default.target se změnil a nyní ukazuje na jednotku multi-user.target:
# ls -lrt /etc/systemd/system/default.target lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
Níže uvedená tabulka shrnuje, kde je nakonfigurována konkrétní fáze a co můžete udělat pro odstraňování problémů, pokud se něco pokazí.
Fáze spouštění | Konfigurace |
---|---|
POSTÁVAT | Konfigurace hardwaru (F2, ESC, F10 nebo jiná klávesa) |
Vyberte spouštěcí zařízení | Konfigurace BIOS/UEFI nebo nabídka spouštění hardwaru |
Načítání zavaděče | grub2-install a úpravy /etc/defaults/grub |
Načítání jádra | Úpravy konfigurace GRUB a /etc/dracut.conf |
spuštěním /sbin/init | Zkompilováno do initramfs |
Zpracování initrd.target | Zkompilováno do initramfs |
Přepněte na kořenový souborový systém | /etc/fstab |
Spuštění výchozího cíle | /etc/systemd/system/default.target |
CentOS / RHEL 7 :Průvodce pro začátečníky k cílům systemd (náhrada úrovní spuštění SysV init)