Yadda ake Ƙaddara da Gyara Abubuwan Boot a cikin Linux


Tsarin Linux yana yin takalma da sauri wanda yawancin abubuwan fitarwa suna gungurawa da sauri don karanta rubutun (an fara nuna sabis) zuwa na'ura wasan bidiyo. Don haka lura da batutuwan boot/kurakurai ya zama ɗan ƙalubale a gare mu.

A cikin wannan labarin, za mu taƙaita matakai daban-daban a cikin tsarin boot na tsarin Linux, sannan mu koyi yadda ake kafawa da kuma zuwa kasan batutuwan boot: a cikin sharuddan fayiloli don dubawa ko umarni don duba saƙonnin taya na tsarin.

Takaitaccen Tsarin Tsarin Boot na Linux

A taƙaice, da zarar mun danna maɓallin Power On, BIOS (Basic Input Output System) shirin da aka haɗa a cikin motherboard yana yin POST (Power on Self Test) - inda hardware kamar diski, RAM (Random Access Memory), keyboard, da dai sauransu ana leka. Idan akwai kuskure (bace/warewar kayan aiki), ana ba da rahoto akan allon.

A lokacin POST, BIOS kuma yana neman na'urar taya, faifan don ƙididdigewa daga (yawanci diski na farko, duk da haka muna iya saita shi ya zama DVD, USB, Katin Network da sauransu maimakon).

Sa'an nan kuma tsarin zai haɗa zuwa faifai kuma bincika Master Boot Record (512 bytes a girman) wanda ke adana bootloader (446 bytes a girman) da sauran sararin samaniya yana adana bayanai game da sassan diski (mafi girman hudu) da MBR. kanta.

Mai ɗaukar boot ɗin zai gano kuma yana nunawa, haka kuma ya ɗora Kernel da fayil initrd (farawar ram disk - yana ba da damar kernel zuwa tushen fayil ɗin da aka ɗora da kayayyaki/direbobi da aka adana a cikin/lib directory), waɗanda galibi ana adana su a cikin/boot directory na tsarin fayil.

Bayan an ɗora kwaya, yana aiwatar da init (ko tsarin da aka tsara akan sabon Linux distros), tsari na farko tare da PID 1, wanda hakan zai fara duk sauran hanyoyin da ke kan tsarin. Hakanan shine tsari na ƙarshe da za'a aiwatar akan tsarin kashewa.

Yadda ake Nemo Matsalolin Boot na Linux ko Saƙonnin Kuskure

Kamar yadda muka ambata a baya, tafiyar matakai na boot na Linux yana faruwa da sauri wanda ba ma iya karanta yawancin abubuwan da aka aika zuwa na'ura wasan bidiyo.

Don haka yin la'akari da batutuwan boot/kurakurai yana kira ga mai sarrafa tsarin don duba wasu mahimman fayiloli tare da takamaiman umarni. Kuma waɗannan sun haɗa da:

Wataƙila wannan shine farkon fayil ɗin da kuke son dubawa, don duba duk abubuwan da suka bayyana yayin boot ɗin tsarin.

Maimakon ƙoƙari sosai don bin abubuwan da aka fitar akan allon yayin taya, za mu iya duba wannan fayil ɗin bayan an kammala aikin taya don taimaka mana wajen tantancewa da warware matsalolin taya/kurakurai.

Muna amfani da umarnin cat don wannan dalili kamar haka (a ƙasa akwai samfurin wannan fayil):

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

Daga fitarwar da ke sama, zamu iya ganin cewa akwai batutuwan taya da aka nuna ta layin da ke ƙasa.

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

Matsala: Matsala tare da ɓangaren musanya; tsarin ko dai ya kasa karanta fayil ɗin musanya/na'ura/bangare ko kuma ba ya nan.

Bari mu bincika idan tsarin yana amfani da sararin swap tare da umarni kyauta.

# free

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

A madadin, za mu iya gudanar da umarnin swapon don duba tsarin musanyar sararin samaniya (ba za mu sami wani fitarwa ba).

# swapon -s

Za mu iya warware wannan batu, ta hanyar ƙirƙirar wurin musanyawa a cikin Linux.

Lura: Ana share abun cikin wannan fayil ɗin a lokacin rufewar tsarin: ana adana sabbin bayanai a cikin sa akan sabon taya.

Wannan fayil ɗin yana adana saƙonnin tsarin gaba ɗaya, gami da saƙon da aka shigar yayin boot ɗin tsarin.

Don duba shi, rubuta:

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

Saboda wannan fayil ɗin na iya zama ɗan tsayi, muna iya duba shi a cikin shafuka ta amfani da ƙarin umarni (wanda har ma yana nuna kashi) kamar wannan.

# more /var/log/messages

Abubuwan da ke cikin /var/log/saƙonni sabanin fayil ɗin da ya gabata ba a share kashewa ba saboda baya ƙunshe da saƙonnin taya kawai amma saƙonnin game da sauran ayyukan tsarin kuma. Don haka tsofaffin fayiloli ana matsawa kuma ana ajiye su akan tsarin don dubawa daga baya kamar yadda aka nuna a ƙasa.

# 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

Umurnin dmesg na iya nuna ayyuka da zarar an kammala aikin taya, kamar zaɓuɓɓukan layin umarni da aka wuce zuwa kernel; Abubuwan da aka gano kayan aikin, abubuwan da suka faru lokacin da aka ƙara sabuwar na'urar USB, ko kurakurai kamar gazawar NIC (Katin Interface Card) kuma direbobi suna ba da rahoton wani aikin haɗin gwiwa da aka gano akan hanyar sadarwar da ƙari mai yawa.

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

Wannan yana da amfani a yawancin distros na Linux na yanzu ta amfani da systemd: sabon tsarin da manajan sabis. A ƙarƙashinsa, ana yin rajistar tsarin ta hanyar ɓangaren mujallu - wurin da aka keɓe don duk saƙonnin da aka haɗa ta sassa daban-daban.

Waɗannan saƙonnin sun haɗa da kernel da saƙonnin taya; saƙonni daga syslog ko ayyuka daban-daban. Za mu iya amfani da shi don nazarin saƙonnin taya da kafa batutuwan taya ta hanyar karantawa ta hanyar fitarwa da kuma gano layin sha'awa (kurakurai da aka nuna ta hanyar layin ja dangane da saitunan launi na ƙarshe).

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

Abin da ke sama shine samfurin fitarwar umarni yana nuna kuskuren da muka riga muka gano ta hanyar duba /var/log/boot.log: kuskuren ɓangarori na swap. Don duba ƙarin layukan fitarwa, kawai danna maɓallin [Enter].

Hakanan duba waɗannan jagororin masu amfani game da boot ɗin tsarin Linux da sarrafa sabis dangane da tsarin gama gari da manajan sabis:

  1. Gudanar da tsari a cikin RHEL 7: Boot, Rufewa, da Duk abin da ke Tsakanin
  2. Sarrafa Tsari da Sabis na Farawa Tsari (SysVinit, Systemd da Upstart)
  3. Labarin Bayan ‘init’ da ‘systemd’: Me yasa ‘init’ ke Bukatar a Maye gurbinsu da ‘systemd’

A cikin wannan labarin, mun yi bayani a takaice matakai daban-daban a cikin tsarin boot na tsarin Linux tare da koyon yadda ake kafawa da yiwuwar warware matsalolin boot. Don ƙara kowane tunani zuwa wannan jagorar, yi amfani da fam ɗin sharhin da ke ƙasa.