Wéi bestëmmen a Fix Boot Themen am Linux


De Linux System boott sou séier datt de gréissten Deel vum Output ze séier scrollt fir den Text ze liesen (weist datt d'Servicer gestart ginn) op d'Konsole geschéckt. Dofir gëtt d'Observatioun vun Bootproblemer/Feeler e bësse vun enger Erausfuerderung fir eis.

An dësem Artikel wäerte mir déi verschidde Stadien an engem Linux System Bootprozess kuerz erklären, da léiere wéi een d'Bootprobleemer etabléiert an op ënnen kënnt: a Begrëffer Dateien fir ze kucken oder Kommandoen fir System Boot Messagen ze gesinn.

Resumé vum Linux Boot Prozess

Zesummegefaasst, eemol mir de Power On Knäppchen drécken, mécht de BIOS (Basic Input Output System) e Programm integréiert an engem Motherboard e POST (Power on Self Test) - wou Hardware wéi Disken, RAM (Random Access Memory), Keyboard, etc ginn gescannt. Am Fall vun engem Fehler (fehlend/fehlend Hardware), gëtt et um Bildschierm gemellt.

Wärend der POST sicht de BIOS och no de Boot-Apparat, den Disk fir opzemaachen (normalerweis déi éischt Festplack, awer mir kënnen et konfiguréieren fir eng DVD, USB, Network Card etc amplaz).

Da verbënnt de System un d'Disk a sicht no de Master Boot Record (512 Bytes an der Gréisst) déi de Bootloader späichert (446 Bytes an der Gréisst) an de Rescht vum Raum späichert Info iwwer Disk Partitionen (véier maximal) an den MBR selwer.

De Bootloader identifizéiert a weist op, souwéi lued de Kernel an d'Initrd Datei (Initialiséierung Ram Disk - bitt de Kernel Zougang zum montéierte Root Dateiesystem a Moduler/Chauffeuren, déi am /lib Verzeichnis gespäichert sinn), déi allgemeng am Verzeechnes gespäichert sinn. /boot Verzeechnes vum Dateiesystem.

Nodeems de Kernel gelueden ass, féiert en init (oder systemd op méi nei Linux Distros), den éischte Prozess mat PID 1, deen am Tour all aner Prozesser um System ufänkt. Et ass och de leschte Prozess dee beim Systemausschalt ausgefouert gëtt.

Wéi fannt Dir Linux Bootproblemer oder Fehlermeldungen

Wéi mir virdru scho gesot hunn, geschéien d'Linux Bootprozesser séier datt mir net emol däitlech de gréissten Deel vun der Ausgab, déi op d'Konsole geschéckt gëtt, liesen.

Also Notiz vu Bootproblemer/Feeler fuerdert e Systemadministrator fir a bestëmmte wichtege Dateien a Verbindung mat bestëmmte Kommandoen ze kucken. An dës enthalen:

Dëst ass méiglecherweis déi éischt Datei déi Dir wëllt kucken, fir alles ze gesinn wat sech während dem Systemboot entfalen huet.

Anstatt sou schwéier ze probéieren d'Ausgab um Bildschierm beim Boot ze verfollegen, kënne mir dës Datei kucken nodeems de Bootprozess ofgeschloss ass fir eis ze hëllefen bei der Bestëmmung an der Léisung vun Bootproblemer/Feeler.

Mir benotzen de Cat Kommando fir dësen Zweck wéi follegt (ënnert ass e Probe vun dëser Datei):

# cat /var/log/boot.log
[  OK  ] Started Load/Save RF Kill Switch Status.
[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-53e41ce9\x2ddc18\x2d458c\x2dbc08\x2d584c208ed615.device.
[DEPEND] Dependency failed for /dev/disk/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615.
[DEPEND] Dependency failed for Swap.
[  OK  ] Reached target System Initialization.
[  OK  ] Listening on UUID daemon activation socket.
[  OK  ] Started Daily Cleanup of Temporary Directories.
[  OK  ] Listening on CUPS Scheduler.
[  OK  ] Started Daily apt activities.
[  OK  ] Reached target Timers.
[  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
[  OK  ] Started ACPI Events Check.
[  OK  ] Started Trigger resolvconf update for networkd DNS.
[  OK  ] Started CUPS Scheduler.
[  OK  ] Reached target Paths.
[  OK  ] Listening on D-Bus System Message Bus Socket.
[  OK  ] Listening on ACPID Listen Socket.
         Starting Console System Startup Logging...
[  OK  ] Listening on Cockpit Web Service Socket.
[  OK  ] Reached target Sockets.
[  OK  ] Reached target Basic System.
         Starting LSB: Set the CPU Frequency Scaling governor to "ondemand"...
[  OK  ] Started ACPI event daemon.
[  OK  ] Started mintsystem.service.
         Starting Detect the available GPUs and deal with any system changes...
         Starting LSB: daemon to balance interrupts for SMP systems...
         Starting Bluetooth service...
[  OK  ] Started ClamAV virus database updater.
         Starting LSB: Starts syslogd...
[  OK  ] Started Regular background program processing daemon.
         Starting Modem Manager...
         Starting Accounts Service...
......

Vun der Ausgab uewendriwwer kënne mir gesinn datt et e Bootproblemer gëtt, déi duerch d'Linnen hei drënner uginn.

[DEPEND] Dependency failed for /dev/disk/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615.
[DEPEND] Dependency failed for Swap.

Thema: Problem mat der Swap-Partition; de System huet entweder net d'Swap Datei/Apparat/Partition gelies oder et ass net präsent.

Loosst eis iwwerpréiwen ob de System Swapraum mat gratis Kommando benotzt.

# free

total        used        free      shared  buff/cache   available
Mem:        3742792     2421060      433696      287376      888036      967000
Swap:             0           0           0

Alternativ kënne mir de Swapon Kommando ausféieren fir de System Swap Raumverbrauch Zesummefaassung ze gesinn (mir kréien keng Ausgang).

# swapon -s

Mir kënnen dëst Thema léisen andeems Dir en Tauschraum am Linux erstellt.

Bemierkung: Den Inhalt vun dëser Datei gëtt beim Systemausschalten geläscht: nei Donnéeën ginn an engem neie Boot gespäichert.

Dës Datei späichert allgemeng Systemmeldungen, och d'Messagen, déi während dem Systemboot protokolléiert sinn.

Fir et ze gesinn, Typ:

# cat /var/log/messages
Jun  4 13:04:44 tecmint syslogd (GNU inetutils 1.9.4): restart
Jun  4 13:19:55 tecmint -- MARK --
Jun  4 13:39:55 tecmint -- MARK --
Jun  4 13:59:55 tecmint -- MARK --
Jun  4 14:19:55 tecmint -- MARK --
Jun  4 14:20:17 tecmint vmunix: [ 4945.388740] i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jun  4 14:20:17 tecmint vmunix: [ 4945.388837] i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jun  4 14:20:17 tecmint vmunix: [ 4945.388903] i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jun  4 14:20:17 tecmint vmunix: [ 4945.388930] i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jun  4 14:20:17 tecmint vmunix: [ 4945.389334] i915 0000:00:02.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jun  4 14:20:17 tecmint vmunix: [ 4945.389402] pcieport 0000:00:1c.0: BAR 15: assigned [mem 0xdfa00000-0xdfbfffff 64bit pref]
.....

Well dës Datei relativ laang ka sinn, kënne mir et op Säiten kucken, de Kommando méi benotzen (wat souguer e Prozentsaz weist) wéi dëst.

# more /var/log/messages

D'Inhalter vun /var/log/messages am Géigesaz zu der viregter Datei gëtt net ofgeschaaft well et net nëmmen Bootmeldungen enthält, mee Messagen betreffend aner Systemaktivitéiten och. Also eeler Dateie ginn kompriméiert an um System gehal fir spéider Inspektioun wéi hei ënnendrënner.

# ls -l message*

-rw-r--r-- 1 root root 1206127 Jun 10 14:20 messages
-rw-r--r-- 1 root root 1419494 Jun  4 13:00 messages.1
-rw-r--r-- 1 root root  153011 May 28 09:30 messages.2.gz

De Kommando dmesg kann Operatiounen weisen nodeems de Bootprozess ofgeschloss ass, sou wéi Kommandozeiloptiounen un de Kernel iwwerginn; Hardware Komponente festgestallt, Eventer wann en neien USB-Gerät bäigefüügt gëtt, oder Feeler wéi NIC (Network Interface Card) Echec an d'Chauffeuren mellen keng Linkaktivitéit am Netz festgestallt a sou vill méi.

# dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=57b36d48-1938-43c2-bf85-e97bc9f423ea ro quiet splash
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000008ffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000090000-0x00000000000bffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x0000000040003fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040004000-0x0000000040004fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000040005000-0x0000000080b2ffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000080b30000-0x0000000080d31fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000080d32000-0x00000000ce3eefff] usable
[    0.000000] BIOS-e820: [mem 0x00000000ce3ef000-0x00000000ce5eefff] type 20
[    0.000000] BIOS-e820: [mem 0x00000000ce5ef000-0x00000000daeeefff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000daeef000-0x00000000daf9efff] ACPI NVS
....

Dëst ass nëtzlech an de meescht aktuellen Linux Distros mat Systemd: den neiste System a Service Manager. Ënnert et gëtt Systemprotokolléierung iwwer d'Journalkomponent gemaach - eng zentraliséiert Plaz fir all Messagen, déi vu verschiddene Komponenten ageloggt sinn.

Dës Messagen enthalen Kernel a Boot Messagen; Messagen aus Syslog oder verschidde Servicer. Mir kënnen et benotze fir Bootmeldungen ze iwwerpréiwen an Bootprobleemer z'etabléieren andeems Dir d'Output liest an d'Zeilen vun Interesse identifizéiert (Feeler, déi duerch roude Linnen uginn ofhängeg vun den Termintextfaarf Astellunge).

# journalctl
Jun 13 16:35:32 tecmint mtp-probe[963]: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/u
Jun 13 16:35:32 tecmint mtp-probe[963]: bus: 2, device: 5 was not an MTP device
Jun 13 16:35:54 tecmint systemd[1]: dev-disk-by\x2duuid-53e41ce9\x2ddc18\x2d458c\x2dbc08\x2d584c208ed615.
Jun 13 16:35:54 tecmint systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-53e41ce9\x2ddc18\x2d
Jun 13 16:35:54 tecmint systemd[1]: Dependency failed for /dev/disk/by-uuid/53e41ce9-dc18-458c-bc08-584c2
Jun 13 16:35:54 tecmint systemd[1]: Dependency failed for Swap.
Jun 13 16:35:54 tecmint systemd[1]: swap.target: Job swap.target/start failed with result 'dependency'.
Jun 13 16:35:54 tecmint systemd[1]: dev-disk-by\x2duuid-53e41ce9\x2ddc18\x2d458c\x2dbc08\x2d584c208ed615.
Jun 13 16:35:54 tecmint systemd[1]: dev-disk-by\x2duuid-53e41ce9\x2ddc18\x2d458c\x2dbc08\x2d584c208ed615.
Jun 13 16:35:54 tecmint systemd[1]: Reached target System Initialization.
Jun 13 16:35:54 tecmint systemd[1]: Started ACPI Events Check.
Jun 13 16:35:54 tecmint systemd[1]: Listening on CUPS Scheduler.
Jun 13 16:35:54 tecmint systemd[1]: Starting Console System Startup Logging...
Jun 13 16:35:54 tecmint systemd[1]: Started Daily Cleanup of Temporary Directories.

Dat hei uewen ass e Probe vum Kommandoausgang deen e Feeler weist dee mir scho identifizéiert hunn andeems Dir /var/log/boot.log kuckt: den Swap Partition Feeler. Fir méi Ausgangslinnen ze gesinn, dréckt einfach op [Enter] Knäppchen.

Kuckt och dës nëtzlech Guiden iwwer Linux System Boot a Servicemanagement a Relatioun mat allgemenge System- a Servicemanager:

  1. Prozessmanagement am RHEL 7: Boot, Shutdown, an alles dertëscht
  2. Gestioun vum System Startup Prozess a Servicer (SysVinit, Systemd an Upstart)
  3. D'Geschicht hannert 'init' an 'systemd': Firwat 'init' muss duerch 'systemd' ersat ginn

An dësem Artikel hu mir kuerz déi verschidde Stadien am Linux System Bootprozess erkläert wéi och geléiert wéi een Bootproblemer opstellt an eventuell léisen. Fir all Gedanken zu dësem Guide ze addéieren, benotzt de Kommentarformular hei ënnen.