Cara Menentukan dan Memperbaiki Masalah Booting di Linux


Sistem Linux melakukan booting dengan sangat cepat sehingga sebagian besar output bergulir terlalu cepat untuk membaca teks (menunjukkan layanan sedang dimulai) yang dikirim ke konsol. Oleh karena itu mengamati masalah/kesalahan booting menjadi sedikit tantangan bagi kami.

Pada artikel ini, kami akan menjelaskan secara singkat berbagai tahapan dalam proses booting sistem Linux, kemudian mempelajari cara menetapkan dan memahami masalah booting: dalam hal file yang harus diperiksa atau perintah untuk melihat pesan boot sistem.

Ringkasan Proses Boot Linux

Singkatnya, setelah kita menekan tombol Power On, BIOS (Basic Input Output System) sebuah program yang terintegrasi dalam motherboard akan melakukan >POST (Power on Self Test) – di mana perangkat keras seperti disk, RAM (Random Access Memory), keyboard, dll dipindai. Jika terjadi kesalahan (perangkat keras hilang/tidak berfungsi), hal ini dilaporkan di layar.

Selama POST, BIOS juga mencari perangkat boot, disk yang akan digunakan untuk memulai (biasanya hard disk pertama, namun kita dapat mengonfigurasinya menjadi DVD, USB , Kartu Jaringan, dll).

Kemudian sistem akan terhubung ke disk dan mencari Master Boot Record (berukuran 512 byte) yang menyimpan boot loader (berukuran 446 byte) dan sisa ruang menyimpan info tentang partisi disk (maksimal empat) dan MBR itu sendiri.

Disarankan Baca: 4 Boot Loader Linux Terbaik

Boot loader akan mengidentifikasi dan menunjuk ke, serta memuat Kernel dan file initrd (inisialisasi ram disk – memberikan akses kernel ke sistem file root yang terpasang dan modul/driver yang disimpan di / direktori lib), yang umumnya disimpan di direktori /boot sistem file.

Setelah kernel dimuat, kernel mengeksekusi init (atau systemd pada distro Linux yang lebih baru), proses pertama dengan PID 1, yang selanjutnya memulai semua proses lain pada sistem. Ini juga merupakan proses terakhir yang dijalankan pada saat sistem dimatikan.

Cara Mengetahui Masalah Boot Linux atau Pesan Kesalahan

Seperti yang kami sebutkan sebelumnya, proses booting Linux terjadi dengan cepat sehingga kami bahkan tidak dapat membaca dengan jelas sebagian besar keluaran yang dikirim ke konsol.

Jadi mencatat masalah/kesalahan boot memerlukan administrator sistem untuk melihat file penting tertentu bersama dengan perintah tertentu. Dan ini termasuk:

/var/log/boot.log – Mencatat Pesan Boot Sistem

Ini mungkin file pertama yang ingin Anda periksa, untuk melihat semua yang terjadi selama boot sistem.

Daripada berusaha keras mengikuti keluaran di layar saat boot, kita dapat melihat file ini setelah proses boot selesai untuk membantu kita dalam menentukan dan menyelesaikan masalah/kesalahan boot.

Kami menggunakan perintah cat untuk tujuan itu sebagai berikut (di bawah ini adalah contoh file ini):

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

Dari output di atas, kita dapat melihat bahwa ada masalah booting yang ditunjukkan oleh baris di bawah ini.

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

Masalah: Masalah dengan partisi swap; sistem gagal membaca file swap/perangkat/partisi atau tidak ada.

Mari kita periksa apakah sistem menggunakan ruang swap dengan perintah gratis.

free

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

Alternatifnya, kita dapat menjalankan perintah swapon untuk melihat ringkasan penggunaan ruang swap sistem (kita tidak akan mendapatkan keluaran apa pun).

swapon -s

Kita dapat mengatasi masalah ini dengan membuat ruang swap di Linux.

Catatan: Konten file ini dihapus saat sistem dimatikan: data baru disimpan di dalamnya saat boot baru.

/var/log/mesages – Log Sistem Umum

File ini menyimpan pesan sistem umum, termasuk pesan yang dicatat selama boot sistem.

Untuk melihatnya, ketik:

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

Karena file ini mungkin relatif panjang, kita dapat melihatnya di halaman menggunakan perintah lebih lanjut (yang bahkan menunjukkan persentase) seperti ini.

more /var/log/messages

Isi dari /var/log/messages tidak seperti file sebelumnya, tidak dibersihkan karena tidak hanya berisi pesan boot tetapi juga pesan mengenai aktivitas sistem lainnya. Jadi file lama dikompresi dan disimpan di sistem untuk diperiksa nanti seperti yang ditunjukkan di bawah ini.

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 – Menampilkan Pesan Kernel

Perintah dmesg dapat menampilkan operasi setelah proses boot selesai, seperti opsi baris perintah yang diteruskan ke kernel; komponen perangkat keras terdeteksi, peristiwa ketika perangkat USB baru ditambahkan, atau kesalahan seperti kegagalan NIC (Kartu Antarmuka Jaringan) dan driver melaporkan tidak ada aktivitas tautan yang terdeteksi di jaringan dan banyak lagi.

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 (buildd@lgw01-21) (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
....

journalctl – Isi Kueri Jurnal Systemd

Ini berguna di sebagian besar distro Linux saat ini yang menggunakan systemd: manajer sistem dan layanan terbaru. Di bawahnya, pencatatan sistem dilakukan melalui komponen jurnal – lokasi terpusat untuk semua pesan yang dicatat oleh komponen berbeda.

Pesan-pesan ini termasuk pesan kernel dan boot; pesan dari syslog atau berbagai layanan. Kita dapat menggunakannya untuk meninjau pesan boot dan menentukan masalah boot dengan membaca output dan mengidentifikasi baris yang diinginkan (kesalahan ditunjukkan dengan garis merah tergantung pada pengaturan warna teks 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.

Di atas adalah contoh keluaran perintah yang menunjukkan kesalahan yang telah kami identifikasi dengan melihat /var/log/boot.log: kesalahan partisi swap. Untuk melihat jalur keluaran lainnya, cukup tekan tombol [Enter].

Lihat juga panduan berguna tentang boot sistem Linux dan manajemen layanan sehubungan dengan manajer sistem dan layanan umum:

  1. Manajemen Proses di RHEL 7: Boot, Shutdown, dan Segala Sesuatu di Antaranya
  2. Mengelola Proses dan Layanan Startup Sistem (SysVinit, Systemd, dan Pemula)
  3. Kisah Dibalik 'init' dan 'systemd': Mengapa 'init' Perlu Diganti dengan 'systemd'

Pada artikel ini, kami menjelaskan secara singkat berbagai tahapan dalam proses booting sistem Linux serta mempelajari cara membuat dan kemungkinan menyelesaikan masalah booting. Untuk menambahkan pemikiran apa pun pada panduan ini, gunakan formulir komentar di bawah.