Linux-da boot meselesini nädip kesgitlemeli we düzetmeli


Linux ulgamy şeýle bir çalt işleýär welin, çykyşlaryň köpüsi konsola iberilen teksti (hyzmatlaryň başlanýandygyny görkezýär) okamak üçin gaty çalt aýlanýar. Şonuň üçin ýükleme meselelerine/ýalňyşlyklaryna syn etmek biziň üçin birneme kynlaşýar.

Bu makalada Linux ulgamyny açmak prosesiniň dürli tapgyrlaryny gysgaça düşündireris, soňra nädip ýüklemeli we nädip açylmalydygyny öwreneris: faýl ýüklemek ýa-da ulgam ýükleme habarlaryny görmek buýruklary.

Linux boot prosessiniň gysgaça mazmuny

Gysgaça aýtsak, “Power On” düwmesine basanymyzdan soň, anakartda integrirlenen BIOS (Esasy Giriş Çykyş Ulgamy) programma POST (Power on Self Test) ýerine ýetirýär - bu ýerde diskler, RAM (tötänleýin giriş ýady), klawiatura, we ş.m. skanirlenýär. Analňyşlyk ýüze çykan ýagdaýynda (apparat ýetmezçiligi/näsazlyk) ekranda habar berilýär.

POST wagtynda BIOS ýükleme enjamyny, dikeljek diski gözleýär (köplenç ilkinji gaty disk, ýöne muňa derek DVD, USB, Network Card we ş.m. edip bileris).

Soňra ulgam diske birikdiriler we ýükleýjini (ululygy 446 baýt) saklaýan Master Boot Record (ululygy 512 baýt) gözlär we kosmosyň galan bölegi disk bölekleri (iň ýokary dört) we MBR hakda maglumatlary saklar. Özi.

Başlangyç ýükleýjisi, ýadrosy we initrd faýlyny kesgitlär we görkezer (başlangyç ram diski - gurnalan kök faýl ulgamyna we/lib katalogynda saklanýan modullara/draýwerlere ýadro girişini üpjün eder)./faýl ulgamynyň bukjasy.

Ernadro ýüklenenden soň, PID 1 bilen ilkinji prosesi init (ýa-da täze Linux distroslarynda systemd) ýerine ýetirýär, bu bolsa öz gezeginde ulgamdaky beýleki amallary başlaýar. Şeýle hem ulgam ýapylanda ýerine ýetiriljek iň soňky prosesdir.

Linux ýükleme meselelerini ýa-da säwlik habarlaryny nädip tapmaly

Öň hem belläp geçişimiz ýaly, Linux boot prosesi çalt bolup geçýär, hatda konsola iberilen çykyşlaryň köpüsini hem okap bilmeýäris.

Şonuň üçin ýükleme meselelerine/ýalňyşlyklaryna üns bermek ulgam dolandyryjysyny belli buýruklar bilen bilelikde käbir möhüm faýllara göz aýlamaga çagyrýar. Olara şular girýär:

Bu, ulgam ýüklemesi wagtynda bolup geçen zatlaryň hemmesini görmek isleýän ilkinji faýlyňyz bolsa gerek.

Bootükleme wagtynda ekrandaky çykyşy yzarlamak üçin gaty köp synanyşmagyň ýerine, ýükleme meselesi/ýalňyşlyklary kesgitlemekde we çözmekde bize kömek etmek üçin, ýükleme prosesi gutarandan soň bu faýly görüp bileris.

Pişik buýrugyny şu maksat bilen ulanýarys (aşakda bu faýlyň mysaly):

# 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...
......

Aboveokardaky çykyşdan aşakdaky setirlerde görkezilen ýükleme meselesiniň bardygyny görüp bileris.

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

Mesele: swap bölümi bilen baglanyşykly mesele; swap faýly/enjamy/bölümi okap bilmedi ýa-da ýok.

Ulgamyň mugt buýruk bilen swap giňişligini ulanýandygyny barlap göreliň.

# free

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

Ativea-da bolmasa, swapon giňişligini ulanmagyň gysgaça mazmunyny görmek üçin swapon buýrugyny işledip bileris (hiç hili netije almarys).

# swapon -s

Linux-da swap giňişligini döretmek arkaly bu meseläni çözüp bileris.

Bellik: Ulgam ýapylanda bu faýlyň mazmuny arassalanýar: täze maglumatlar täze ýükde saklanýar.

Bu faýl ulgam ýüklemesi wagtynda hasaba alnan habarlary goşmak bilen umumy ulgam habarlaryny saklaýar.

Muny görmek üçin ýazyň:

# 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]
.....

Bu faýl birneme uzyn bolup bilýändigi sebäpli, şuňa meňzeş has köp buýrugy (hatda göterimi görkezýär) ulanyp, sahypalarda görüp bileris.

# more /var/log/messages

Öňki faýldan tapawutlylykda/var/log/habarlaryň mazmuny ýapylmaýar, sebäbi ol diňe bir ýükleme habarlaryny däl, eýsem beýleki ulgam işlerine degişli habarlary hem öz içine alýar. Şonuň üçin köne faýllar gysylýar we aşakda görkezilişi ýaly soňraky barlag üçin ulgamda saklanýar.

# 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

Dmesg buýrugy, ýadro geçilen buýruk setiriniň opsiýalary ýaly, ýüklemek prosesi gutarandan soň amallary görkezip biler; enjam komponentleri ýüze çykaryldy, täze USB enjamy goşulanda bolup geçen wakalar ýa-da NIC (Network Interface Card) näsazlyklary we sürüjiler torda baglanyşyk işjeňliginiň ýokdugyny habar berýärler we ş.m.

# 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
....

Bu, systemd ulanyp, häzirki Linux distroslarynyň köpüsinde peýdaly: iň täze ulgam we hyzmat dolandyryjysy. Onuň aşagynda ulgam ýazgysy journalurnal komponentiniň üsti bilen amala aşyrylýar - dürli komponentler tarapyndan ýazylan ähli habarlar üçin merkezleşdirilen ýer.

Bu habarlara ýadro we ýük habarlary girýär; syslog ýa-da dürli hyzmatlardan gelen habarlar. Çykyşlary okamak we gyzyklanma setirlerini kesgitlemek (terminal tekst reňk sazlamalaryna baglylykda gyzyl çyzyklar bilen görkezilen ýalňyşlyklar) arkaly boot habarlaryny gözden geçirmek we boot meselelerini kesgitlemek üçin ulanyp bileris.

# 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.

Aboveokardakylar, /var/log/boot.log görmek arkaly eýýäm kesgitlän ýalňyşlygymyzy görkezýän buýruk çykyşynyň mysaly: swap bölüm ýalňyşlygy. Has köp çykyş setirlerini görmek üçin [Enter] düwmesine basyň.

Şeýle hem, umumy ulgam we hyzmat dolandyryjylary bilen baglanyşykly Linux ulgamynyň boot we hyzmat dolandyryşy baradaky bu peýdaly gollanmalara göz aýlaň:

  1. RHEL 7-de amallary dolandyrmak: Boot, ýapmak we arasyndaky ähli zat
  2. Ulgamyň başlangyç amalyny we hyzmatlaryny dolandyrmak (SysVinit, Systemd we Upstart)
  3. Init we systemd -iň arkasyndaky hekaýa: Näme üçin init -i systemd bilen çalyşmaly?

Bu makalada, Linux ulgamyny açmak prosesiniň dürli etaplaryny gysgaça düşündirdik, şeýle hem, boot meselesini nädip döretmelidigini we mümkin çözmelidigini öwrendik. Bu gollanma haýsydyr bir pikir goşmak üçin aşakdaky düşündiriş formuny ulanyň.