Cara Menentukan dan Memperbaiki Masalah Boot di Linux

Cara Menentukan dan Memperbaiki Masalah Boot di Linux

Boot Sistem Linux begitu pantas sehingga kebanyakan skrol output terlalu cepat untuk membaca teks (menunjukkan perkhidmatan yang dimulakan) dihantar ke konsol. Oleh itu memerhatikan isu/kesilapan boot menjadi sedikit cabaran bagi kita.

Dalam artikel ini, kami akan menerangkan secara ringkas peringkat yang berbeza dalam proses boot sistem Linux, kemudian belajar bagaimana untuk menubuhkan dan sampai ke bahagian bawah isu boot: dari segi fail untuk melihat atau memerintahkan untuk melihat mesej boot sistem.

Ringkasan Proses Boot Linux

Ringkasnya, apabila kita menekan Kuasa pada butang, yang BIOS (Sistem output input asas) program yang disepadukan dalam papan induk melakukan a Jawatan (Kuasa ujian diri) - di mana perkakasan seperti cakera, ram (memori akses rawak), papan kekunci, dan lain -lain diimbas. Sekiranya berlaku ralat (perkakasan hilang/tidak berfungsi), dilaporkan di skrin.

Semasa Jawatan, The BIOS Juga mencari peranti boot, cakera untuk stat dari (biasanya cakera keras pertama, namun kami mungkin mengkonfigurasi ia menjadi DVD, USB, kad rangkaian dan sebagainya).

Maka sistem akan menyambung ke cakera dan mencari Rekod Boot Master (512 bait dalam saiz) yang menyimpan pemuat boot (446 bait dalam saiz) dan seluruh ruang kedai maklumat mengenai partisi cakera (empat maksimum) dan MBR sendiri.

Cadangan Baca: 4 Pemuat Boot Linux Terbaik

Loader boot akan mengenal pasti dan menunjuk, serta memuatkan Kernel dan fail initrd (cakera ram inisialisasi - menyediakan akses kernel ke sistem fail dan modul/pemacu yang dipasang di /lib direktori), yang biasanya disimpan di /boot Direktori sistem fail.

Selepas kernel dimuatkan, ia melaksanakan init (atau sistemd pada distros linux yang lebih baru), proses pertama dengan PID 1, yang seterusnya memulakan semua proses lain pada sistem. Ia juga merupakan proses terakhir yang akan dilaksanakan pada penutupan sistem.

Cara mengetahui masalah boot linux atau mesej ralat

Seperti yang telah kami sebutkan tadi, proses boot linux berlaku dengan cepat sehingga kami tidak dapat membaca dengan jelas sebahagian besar output yang dihantar ke konsol.

Oleh itu, ambil perhatian mengenai isu/kesilapan boot yang memerlukan pentadbir sistem untuk melihat fail penting tertentu bersempena dengan arahan tertentu. Dan ini termasuk:

/var/log/boot.Log - mesej boot sistem log

Ini mungkin fail pertama yang ingin anda lihat, untuk melihat semua yang dibentangkan semasa boot sistem.

Daripada berusaha keras untuk mengikuti output pada skrin semasa boot, kita dapat melihat fail ini setelah proses boot selesai untuk membantu kami dalam menentukan dan menyelesaikan masalah/kesilapan boot.

Kami menggunakan perintah kucing untuk tujuan itu seperti berikut (di bawah adalah sampel fail ini):

# kucing/var/log/boot.log 
Lihat log boot Linux
[OK] Memulakan Muat/Simpan RF Kill Status Switch. [Masa] Timed Out Menunggu Peranti Dev-Disk-By \ X2DUUID-53E41CE9 \ X2DDC18 \ X2D458C \ X2DBC08 \ X2D584C208ED615.peranti. [Bergantung] ketergantungan gagal untuk/dev/cakera/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615. [Bergantung] ketergantungan gagal untuk menukar. [OK] mencapai permulaan sistem sasaran. [OK] Mendengarkan soket pengaktifan daemon uuid. [OK] Memulakan pembersihan harian direktori sementara. [OK] Mendengarkan Penjadual Piala. [OK] memulakan aktiviti tepat setiap hari. [OK] mencapai pemasa sasaran. [OK] Mendengarkan Soket Pengaktifan Stack Avahi MDNS/DNS-SD. [OK] Memulakan Periksa Peristiwa ACPI. [OK] mula mencetuskan kemas kini resolvconf untuk rangkaian dns. [OK] Memulakan Penjadual Piala. [OK] mencapai laluan sasaran. [OK] Mendengarkan soket bas mesej sistem D-bas. [OK] Mendengarkan Soket Dengar Acpid. Memulakan Pembalakan Permulaan Sistem Konsol ... [OK] Mendengarkan Soket Perkhidmatan Web Kokpit. [OK] mencapai soket sasaran. [OK] mencapai sistem asas sasaran. Memulakan LSB: Tetapkan gabenor skala kekerapan CPU ke "OnDemand" ... [OK] Memulakan Acpi Event Daemon. [OK] Memulakan Mintsystem.perkhidmatan. Bermula Mengesan GPU yang ada dan berurusan dengan perubahan sistem ... Memulakan LSB: Daemon untuk mengimbangi gangguan untuk sistem SMP ... Memulakan perkhidmatan Bluetooth ... [OK] Memulakan Pembengkakan Pangkalan Data Virus Clamav. Memulakan LSB: Memulakan Syslogd ... [OK] Memulakan Daemon Pemprosesan Program Latar Belakang Biasa. Memulakan Pengurus Modem ... Memulakan Perkhidmatan Akaun .. 

Dari output di atas, kita dapat melihat bahawa terdapat masalah boot yang ditunjukkan oleh garis di bawah.

[Bergantung] ketergantungan gagal untuk/dev/cakera/by-uuid/53e41ce9-dc18-458c-bc08-584c208ed615. [Bergantung] ketergantungan gagal untuk menukar. 

Isu: Masalah dengan partition swap; Sistem sama ada gagal membaca fail swap/peranti/partition atau tidak hadir.

Mari kita periksa sama ada sistem menggunakan ruang swap dengan arahan percuma.

# percuma Jumlah Buff/Cache yang Digunakan Percuma MEM: 3742792 2421060 433696 287376 888036 967000 SWAP: 0 0 0 

Sebagai alternatif, kita mungkin menjalankan perintah swapon Untuk melihat Ringkasan Penggunaan Ruang Swap Sistem (kami tidak akan mendapat output).

# swapon -s 

Kami dapat menyelesaikan masalah ini, dengan mewujudkan ruang swap di Linux.

Catatan: Kandungan fail ini dibersihkan pada penutupan sistem: Data baru disimpan di dalamnya pada boot baru.

/var/log/mesej - log sistem umum

Fail ini menyimpan mesej sistem umum, termasuk mesej yang dilog masuk semasa boot sistem.

Untuk melihatnya, taip:

# kucing/var/log/mesej 
Lihat mesej log sistem
4 Jun 13:04:44 Tecmint Syslogd (GNU Inetutils 1.9.4): mulakan semula Jun 4 13:19:55 Tecmint - Mark - 4 Jun 13:39:55 Tecmint - Mark - 4 Jun 13:59:55 Tecmint - Mark - 4 Jun 14:19:55 Tecmint - Mark - 4 Jun 14:20:17 Tecmint VMunix: [4945.388740] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 bendera 0x2] mempunyai penjajaran palsu 4 Jun 14 14:20:17 Tecmint Vmunix: [4945.388837] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 bendera 0x2] mempunyai penjajaran palsu 4 Jun 14 14:20:17 Tecmint Vmunix: [4945.388903] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 bendera 0x2] mempunyai penjajaran palsu 4 Jun 14 14:20:17 Tecmint Vmunix: [4945.388930] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 bendera 0x2] mempunyai penjajaran palsu 4 Jun 14 14:20:17 Tecmint Vmunix: [4945.389334] I915 0000: 00: 02.0: Bar 6: [??? 0x00000000 bendera 0x2] mempunyai penjajaran palsu 4 Jun 14 14:20:17 Tecmint Vmunix: [4945.389402] pcieport 0000: 00: 1c.0: Bar 15: Ditugaskan [MEM 0xdfa00000-0xdfbfffff 64bit pref] .. 

Kerana fail ini mungkin agak panjang, kita dapat melihatnya di halaman menggunakan lebih banyak arahan (yang bahkan menunjukkan peratusan) seperti ini.

# Lagi/var/log/mesej 

Kandungan /var/log/mesej Tidak seperti fail sebelumnya tidak dibersihkan penutupan kerana ia bukan sahaja mengandungi mesej boot tetapi mesej mengenai aktiviti sistem lain juga. Jadi fail yang lebih lama dimampatkan dan disimpan pada sistem untuk pemeriksaan kemudian seperti yang ditunjukkan di bawah.

# ls -l mesej* -RW-R-R-- Root Root 1206127 10 Jun 14:20 Mesej -RW-R-R-- 1 Root Root 1419494 Jun 4 13:00 Mesej.1 -rw-r-r-- akar akar 153011 28 Mei 09:30 mesej.2.Gz 

DMESG - Menunjukkan mesej kernel

Perintah DMESG boleh menunjukkan operasi sebaik sahaja proses boot selesai, seperti pilihan baris arahan yang diserahkan kepada kernel; Komponen perkakasan dikesan, peristiwa apabila peranti USB baru ditambah, atau kesilapan seperti kegagalan NIC (Network Interface Card) dan pemandu melaporkan tiada aktiviti pautan yang dikesan pada rangkaian dan banyak lagi.

# dmesg 
Tunjukkan mesej kernel
[0.000000] Inisiasi cpuset subsys cgroup [0.000000] Inisiasi CGROUP Subsys CPU [0.000000] memulakan cgroup subsys cpuacct [0.000000] Linux Versi 4.4.0-21-generik ([dilindungi e-mel]) (GCC Versi 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-generik 4.4.6) [0.000000] baris arahan: boot_image =/boot/vmlinuz-4.4.0-21-Generic Root = UUID = 57B36D48-1938-43C2-BF85-E97BC9F423EA RO Splash Tenang [0.000000] kernel disokong CPU: [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: Menyokong ciri XSAVE 0x01: 'X87 Point Floating Registers' [0.000000] x86/FPU: Menyokong ciri XSAVE 0x02: 'SSE Registers' [0.000000] x86/FPU: Menyokong ciri XSAVE 0x04: 'AVX Registers' [0.000000] x86/FPU: Ciri -ciri XState Enabled 0x7, saiz konteks adalah 832 bait, menggunakan format 'standard'. [0.000000] x86/FPU: Menggunakan suis konteks FPU 'bersemangat'. [0.000000] E820: peta ram fizikal yang disediakan bios: [0.000000] BIOS-E820: [MEM 0x0000000000000000-0x00000000000008fff].000000] BIOS-E820: [MEM 0x0000000000090000-0x0000000000000BFFFF] Reserved [0.000000] BIOS-E820: [MEM 0x000000000000100000-0x0000000000001FFFFFF] Guna [0.000000] BIOS-E820: [MEM 0x0000000020000000-0x000000000000201FFFF] Reserved [0.000000] BIOS-E820: [MEM 0x0000000020200000-0x00000000000040003FFF] digunakan [0.000000] BIOS-E820: [MEM 0x0000000040004000-0x00000000000040004fff] Reserved [0.000000] BIOS-E820: [MEM 0x0000000040005000-0x000000000080b2ffff] Guna [0.000000] BIOS-E820: [MEM 0x0000000080B30000-0x000000000080D31FFF] Reserved [0.000000] BIOS-E820: [MEM 0x0000000080D32000-0x0000000000ce3eefff] Guna [0.000000] BIOS-E820: [MEM 0x00000000CE3EF000-0x0000000000CE5EEFFF] Jenis 20 [0.000000] BIOS-E820: [MEM 0x00000000CE5ef000-0x00000000000000daeeefff] Reserved [0.000000] BIOS-E820: [MEM 0x00000000daeef000-0x0000000000daf9efff] ACPI NVS .. 

Journalctl - Kandungan pertanyaan jurnal Systemd

Ini berguna dalam distros Linux paling terkini menggunakan SystemD: sistem terbaru dan pengurus perkhidmatan. Di bawahnya, pembalakan sistem dilakukan melalui komponen jurnal - lokasi terpusat untuk semua mesej yang dilog oleh komponen yang berbeza.

Mesej -mesej ini termasuk mesej kernel dan boot; mesej dari syslog atau pelbagai perkhidmatan. Kami boleh menggunakannya untuk mengkaji semula mesej boot dan menubuhkan isu boot dengan membaca melalui output dan mengenal pasti garis minat (kesilapan yang ditunjukkan oleh garis merah bergantung pada tetapan warna teks terminal).

# Journalctl 
Tunjukkan kandungan sistemd
13 Jun 16:35:32 Tecmint MTP-Probe [963]: Memeriksa Bas 2, Peranti 5: "/Sys/Peranti/PCI0000: 00/0000: 00: 1d.0/U Jun 13 16:35:32 Tecmint MTP-Probe [963]: Bus: 2, Peranti: 5 bukan peranti MTP 13 Jun 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid -53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 Jun 16:35:54 Tecmint Systemd [1]: Timed Out Device untuk peranti Dev-Disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d Jun 13 16:35:54 Tecmint Systemd [1] Disk/BY-UUID/53E41CE9-DC18-458C-BC08-584C2 13 Jun 16:35:54 Tecmint Systemd [1]: Ketergantungan gagal untuk menukar. 13 Jun 16:35:54 Tecmint Systemd [1]: Swap.Sasaran: pertukaran pekerjaan.Sasaran/Mula gagal dengan hasil 'ketergantungan'. 13 Jun 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 Jun 16:35:54 Tecmint Systemd [1]: Dev-Disk-by \ x2duuid-53e41ce9 \ x2ddc18 \ x2d458c \ x2dbc08 \ x2d584c208ed615. 13 Jun 16:35:54 Tecmint Systemd [1]: Mencapai Inisialisasi Sistem Sasaran. 13 Jun 16:35:54 TECMINT Systemd [1]: Memulakan Acara Acpi Cek. 13 Jun 16:35:54 Tecmint Systemd [1]: Mendengarkan Penjadual Piala. 13 Jun 16:35:54 Tecmint Systemd [1]: Memulakan Sistem Konsol Permulaan Pembalakan ... 13 Jun 16:35:54 Tecmint Systemd [1]: Memulakan pembersihan harian direktori sementara. 

Di atas adalah contoh output arahan yang menunjukkan ralat yang telah kita kenali dengan melihat /var/log/boot.log: ralat partition swap. Untuk melihat lebih banyak baris output, hanya tekan [Masukkan] butang.

Juga lihat panduan berguna ini mengenai boot sistem Linux dan pengurusan perkhidmatan berhubung dengan sistem biasa dan pengurus perkhidmatan:

  1. Pengurusan Proses di RHEL 7: Boot, Shutdown, dan segala -galanya di antara
  2. Menguruskan Proses dan Perkhidmatan Permulaan Sistem (SYSVINIT, SYSTEMD dan UPSTART)
  3. Cerita di belakang 'init' dan 'systemd': mengapa 'init' perlu digantikan dengan 'systemd'

Dalam artikel ini, kami menerangkan secara ringkas tahap yang berbeza dalam proses boot sistem linux serta belajar bagaimana untuk menubuhkan dan mungkin menyelesaikan masalah boot. Untuk menambah pemikiran kepada panduan ini, gunakan borang komen di bawah.