Giunsa Pagtino ug Pag-ayo ang Mga Isyu sa Boot sa Linux


Ang sistema sa Linux kusog kaayo nga ang kadaghanan sa mga output nag-scroll dayon sa pagbasa sa teksto (nagpakita sa mga serbisyo nga gisugdan) nga gipadala ngadto sa console. Busa ang pag-obserbar sa mga isyu sa boot/mga sayop nahimong gamay nga hagit alang kanato.

Sa kini nga artikulo, among ipasabut sa daklit ang lainlaing mga yugto sa proseso sa pag-boot sa sistema sa Linux, dayon mahibal-an kung giunsa ang pag-establisar ug pag-adto sa ilawom sa mga isyu sa boot: sa mga termino nga mga file nga tan-awon o mga mando aron makita ang mga mensahe sa boot sa system.

Katingbanan sa Proseso sa Boot sa Linux

Sa katingbanan, sa higayon nga atong i-press ang Power On button, ang BIOS (Basic Input Output System) usa ka programa nga gi-integrate sa motherboard mohimo ug POST (Power on Self Test) – diin ang hardware sama sa disks, RAM (Random Access Memory), keyboard, etc gi scan. Sa kaso sa usa ka sayop (nawala/malfunctioning hardware), kini gitaho sa screen.

Atol sa POST, ang BIOS mangita usab sa boot device, ang disk nga i-stat up gikan sa (kasagaran ang unang hard disk, bisan pa niana mahimo natong i-configure kini nga usa ka DVD, USB, Network Card ug uban pa).

Unya ang sistema magkonektar sa disk ug pangitaon ang Master Boot Record (512 bytes ang gidak-on) nga nagtipig sa boot loader (446 bytes ang gidak-on) ug ang nahabilin nga espasyo nagtipig impormasyon bahin sa mga partisyon sa disk (upat ka maximum) ug ang MBR. mismo.

Ang boot loader moila ug motudlo, ingon man usab sa pagkarga sa Kernel ug sa initrd file (initialization ram disk - naghatag sa kernel access sa mounted root filesystem ug modules/drivers nga gitipigan sa /lib directory), nga kasagarang gitipigan sa /boot direktoryo sa filesystem.

Human makarga ang kernel, ipatuman niini ang init (o systemd sa mas bag-ong Linux distros), ang unang proseso sa PID 1, nga maoy magsugod sa tanang ubang proseso sa sistema. Kini usab ang katapusang proseso nga ipatuman sa pagsira sa sistema.

Giunsa pagpangita ang mga isyu sa boot sa Linux o mga mensahe sa sayup

Sama sa among nahisgutan kaniadto, ang mga proseso sa pag-boot sa Linux kusog nga nahitabo nga dili namon klaro nga mabasa ang kadaghanan sa mga output nga gipadala sa console.

Mao nga ang paghinumdom sa mga isyu sa boot/mga sayup nagtawag alang sa usa ka tagdumala sa sistema nga tan-awon ang pila ka hinungdanon nga mga file kauban ang partikular nga mga mando. Ug kini naglakip sa:

Tingali kini ang una nga file nga gusto nimong tan-awon, aron makita ang tanan nga nabuksan sa panahon sa pag-boot sa system.

Imbis nga maningkamot pag-ayo sa pagsunod sa output sa screen sa panahon sa boot, mahimo natong tan-awon kini nga file human makompleto ang proseso sa pag-boot aron sa pagtabang kanato sa pagtino ug pagsulbad sa mga isyu sa boot/mga sayop.

Gigamit namo ang cat command alang niana nga katuyoan sama sa mosunod (sa ubos usa ka sample niini nga file):

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

Gikan sa output sa ibabaw, atong makita nga adunay mga isyu sa boot nga gipakita sa mga linya sa ubos.

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

Isyu: Problema sa swap partition; napakyas ang sistema sa pagbasa sa swap file/device/partition o wala kini.

Atong susihon kung ang sistema naggamit sa swap space nga adunay libre nga mando.

# free

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

Sa laing paagi, mahimo natong ipadagan ang swapon command aron tan-awon ang system swap space usage summary (wala miy makuha nga output).

# swapon -s

Masulbad namo kini nga isyu, pinaagi sa paghimo og swap space sa Linux.

Mubo nga sulat: Ang sulod niini nga payl ma-clear sa sistema sa shutdown: bag-ong data gitipigan niini sa usa ka bag-ong boot.

Kini nga file nagtipig sa mga kinatibuk-ang mensahe sa sistema, lakip ang mga mensahe nga gi-log sa panahon sa pag-boot sa system.

Aron makita kini, i-type ang:

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

Tungod kay kini nga file mahimo nga medyo taas, mahimo naton kini tan-awon sa mga panid gamit ang daghang mga mando (nga nagpakita pa sa usa ka porsyento) nga sama niini.

# more /var/log/messages

Ang mga sulod sa /var/log/messages dili sama sa miaging file wala ma-clear nga shutdown tungod kay wala lang kini sulod sa boot messages kondili mga mensahe usab mahitungod sa ubang mga kalihokan sa sistema. Mao nga ang mga tigulang nga mga file gi-compress ug gitipigan sa sistema alang sa ulahi nga pagsusi sama sa gipakita sa ubos.

# 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

Ang dmesg command mahimong magpakita sa mga operasyon sa higayon nga ang proseso sa boot makompleto, sama sa command line nga mga opsyon nga gipasa ngadto sa kernel; namatikdan nga mga sangkap sa hardware, mga panghitabo kung gidugang ang usa ka bag-ong USB device, o mga sayup sama sa pagkapakyas sa NIC (Network Interface Card) ug ang mga drayber nagreport nga wala’y nakit-an nga kalihokan sa link sa network ug daghan pa.

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

Mapuslanon kini sa kadaghanan sa karon nga mga Linux distro gamit ang systemd: ang pinakabag-o nga sistema ug service manager. Ubos niini, ang pag-log sa sistema gihimo pinaagi sa sangkap sa journal - usa ka sentralisadong lokasyon alang sa tanan nga mga mensahe nga gi-log sa lainlaing mga sangkap.

Kini nga mga mensahe naglakip sa kernel ug boot nga mga mensahe; mga mensahe gikan sa syslog o lain-laing mga serbisyo. Magamit namo kini sa pagrepaso sa mga mensahe sa boot ug pag-establisar sa mga isyu sa boot pinaagi sa pagbasa sa output ug pag-ila sa mga linya sa interes (mga sayop nga gipunting sa pula nga mga linya depende sa mga setting sa kolor sa teksto sa terminal).

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

Ang sa ibabaw usa ka sample sa command output nga nagpakita sa usa ka sayup nga nahibal-an na namo pinaagi sa pagtan-aw sa /var/log/boot.log: ang swap partition error. Aron makita ang dugang nga mga linya sa output, pindota lang ang [Enter] nga buton.

Susiha usab kining mapuslanong mga giya bahin sa Linux system boot ug service management kalabot sa komon nga sistema ug service managers:

  1. Pagdumala sa Proseso sa RHEL 7: Boot, Pag-shutdown, ug Tanan sa Taliwala
  2. Pagdumala sa Proseso ug Serbisyo sa Pagsugod sa Sistema (SysVinit, Systemd ug Upstart)
  3. Ang Istorya Luyo sa 'init' ug 'systemd': Ngano nga 'init' Kinahanglan nga pulihan sa 'systemd'

Niini nga artikulo, among gipatin-aw sa mubo ang lainlaing mga yugto sa proseso sa pag-boot sa sistema sa Linux ingon man nakakat-on unsaon pag-establisar ug posible nga masulbad ang mga isyu sa boot. Aron makadugang sa bisan unsa nga hunahuna niini nga giya, gamita ang comment form sa ubos.