GNU/Linux >> Belajar Linux >  >> Cent OS

CentOS / RHEL 7 :Proses booting

Penting untuk memahami proses boot Linux untuk memecahkan masalah boot. Ini adalah langkah-langkah tingkat tinggi dalam proses boot. Anda perlu mengetahui file yang terlibat dalam proses boot karena kesalahan dalam file ini dapat menyebabkan masalah boot.

Jika ada masalah saat booting, Anda perlu mengidentifikasi di fase proses boot mana masalahnya berada sehingga Anda dapat mengambil tindakan yang tepat untuk memperbaiki masalah tersebut.

Pengenalan systemd

sistemd adalah sistem dan manajer layanan baru di CentOS/RHEL 7. Ini kompatibel dengan skrip init SysV yang digunakan oleh versi RedHat Linux sebelumnya termasuk RHEL 6. Ini menggantikan Pemula sebagai sistem inisialisasi default.

Langkah-langkah berikut merangkum bagaimana prosedur boot terjadi di RHEL/CentOS 7.

  1. BIOS komputer melakukan POST.
  2. BIOS membaca MBR untuk bootloader.
  3. bootloader GRUB 2 memuat imej kernel vmlinuz.
  4. GRUB 2 mengekstrak konten gambar initramfs.
  5. Kernel memuat modul driver dari initramfs.
  6. Kernel memulai proses pertama sistem, systemd.
  7. Proses systemd mengambil alih. Ini:
    • Membaca file konfigurasi dari direktori /etc/systemd
    • Membaca file yang ditautkan oleh /etc/systemd/system/default.target
    • Membawa sistem ke status yang ditentukan oleh target sistem
    • Mengeksekusi /etc/rc.local

1. POST (Power on Self Test)

Dari firmware sistem, yang dapat berupa Antarmuka Firmware Perpanjangan Universal modern (UEFI ) atau Sistem Output Input Dasar klasik (BIOS ), Power-On Self-Test (POST) dijalankan, dan perangkat keras yang diperlukan untuk memulai sistem diinisialisasi.

2. Memilih perangkat yang dapat di-boot (Dengan MBR)

– Master Boot Record (MBR) adalah 512 byte pertama dari drive boot yang dibacakan ke memori oleh BIOS.
– 64 byte berikutnya berisi tabel partisi untuk disk. Dua byte terakhir adalah “Angka Ajaib” yang digunakan untuk deteksi kesalahan.

– MBR menemukan perangkat yang dapat di-boot dan memuat boot loader GRUB2 ke dalam memori dan mentransfer kontrol ke sana.

3. Memuat pemuat boot (GRUB2)

– Program bootloader default yang digunakan pada RHEL 7 adalah GRUB 2. GRUB adalah singkatan dari GRand Unified Bootloader . GRUB 2 menggantikan bootloader GRUB lama yang juga disebut sebagai GRUB lawas.
– File konfigurasi GRUB 2 terletak di /boot/grub2/grub.cfg (Jangan mengedit file ini secara langsung).

– Pengaturan konfigurasi menu GRUB 2 diambil dari /etc/default/grub saat membuat grub.cfg.
– Contoh file /etc/default/grub :

# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"

– Jika ada perubahan pada salah satu parameter ini, Anda perlu menjalankan grub2-mkconfig untuk membuat ulang file /boot/grub2/grub.cfg.

# grub2-mkconfig –o /boot/grub2/grub.cfg

– GRUB2 mencari file image kernel terkompresi yang juga disebut sebagai vmlinuz di direktori /boot.
– GRUB2 memuat file image kernel vmlinuz ke dalam memori dan mengekstrak isi file image initramfs ke dalam sistem file sementara berbasis memori (tmpfs).
– Disk RAM awal (initrd) adalah sistem file root awal yang dipasang sebelum sistem file root sebenarnya.

initramfs
– Tugas sistem file RAM awal adalah memuat modul perangkat blok, seperti untuk IDE, SCSI, atau RAID, sehingga sistem file root, tempat modul-modul tersebut biasanya berada, kemudian dapat diakses dan mount.
– Initramfs terikat ke kernel dan kernel me-mount initramfs ini sebagai bagian dari proses boot dua tahap.
– Utilitas dracut membuat initramfs setiap kali kernel baru diinstal.
– Gunakan perintah lsinitrd untuk melihat isi gambar yang dibuat oleh dracut:

# lsinitrd | less

4. Memuat kernel

– Kernel memulai proses systemd dengan ID proses 1 (PID 1).

– Ini juga memuat modul driver yang diperlukan dari image initrd.
– Boot loader (GRUB2) dapat menyajikan menu boot kepada pengguna, atau dapat dikonfigurasi untuk memulai sistem operasi default secara otomatis.
– Untuk memuat Linux, kernel dimuat bersama dengan initramfs. Initramfs berisi modul kernel untuk semua perangkat keras yang diperlukan untuk boot, serta skrip awal yang diperlukan untuk melanjutkan ke tahap boot berikutnya.
– Pada RHEL 7, initramfs berisi sistem operasional lengkap (yang mungkin digunakan untuk tujuan pemecahan masalah).

5. Memulai systemd

– Kernel memulai proses systemd dengan ID proses 1 (PID 1).

root          1      0  0 02:10 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 23

– systemd adalah proses pertama yang dimulai setelah sistem boot, dan merupakan proses terakhir yang berjalan saat sistem dimatikan.
– Ini mengontrol tahap akhir booting dan mempersiapkan sistem untuk digunakan. Ini juga mempercepat boot dengan memuat layanan secara bersamaan.
– systemd membaca file yang ditautkan oleh /etc/systemd/system/default.target (misalnya, /usr/lib/systemd/system/multi-user.target) untuk menentukan target sistem default (setara dengan run level). File target sistem mendefinisikan layanan yang dimulai systemd.
– systemd memungkinkan Anda untuk mengelola berbagai jenis unit pada sistem, termasuk layanan (name.service) dan target (name.target), perangkat (name.device) , titik pemasangan sistem file (name.mount), dan soket (name.socket).

Perbandingan SysV Run Level dan Target Unit

Tingkat Jalan Unit Sasaran Deskripsi
0 runlevel0.target, matikan.target Matikan dan matikan
1 runlevel1.target, rescue.target Siapkan cangkang penyelamat
2,3,4 runlevel[234].target, multi-pengguna.target Siapkan shell multi-pengguna nongrafis
5 runlevel5.target, grafis.target Siapkan shell grafis multi-pengguna
6 runlevel6.target, reboot.target Matikan dan reboot sistem

systemd membawa sistem ke status yang ditentukan oleh target sistem, melakukan tugas inisialisasi sistem seperti:
1. Menyetel nama host
2. Inisialisasi jaringan
3. Inisialisasi SELinux berdasarkan konfigurasinya
4. Mencetak spanduk selamat datang
5. Menginisialisasi perangkat keras sistem berdasarkan argumen boot kernel
6. Memasang sistem file, termasuk sistem file virtual seperti sistem file /proc
7. Membersihkan direktori di /var
8. Mulai bertukar

Lihat unit target default/saat ini

Gunakan perintah berikut untuk melihat unit target mana yang digunakan secara default:

# systemctl get-default
graphical.target

grafis.target unit target menunjukkan bahwa sistem berjalan dalam keadaan grafis, multi-pengguna. Ini mirip dengan menjalankan level 5 dalam sistem init SysV. Anda dapat memverifikasi ini menggunakan perintah lama runlevel :

# runlevel
N 5

Unit target default diwakili oleh /etc/systemd/system/default.target mengajukan. File ini adalah tautan simbolis ke unit target default saat ini. Misalnya :

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 36 Sep 23 20:01 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

Ubah unit target default

Gunakan perintah berikut untuk mengubah unit target default (misalnya, untuk mengubah default ke unit multi-pengguna.target):

# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

Perhatikan bahwa tautan simbolis default.target telah berubah, dan sekarang mengarah ke unit multi-pengguna.target:

# ls -lrt /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 41 Sep 24 11:58 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

Tabel di bawah ini merangkum di mana fase tertentu dikonfigurasi dan apa yang dapat Anda lakukan untuk memecahkan masalah jika terjadi kesalahan.

Fase Booting Konfigurasi
POSTING Konfigurasi Perangkat Keras (F2, ESC, F10 atau kunci lain)
Pilih Perangkat yang dapat di-boot Konfigurasi BIOS/UEFI atau menu boot perangkat keras
Memuat boot loader instal grub2 dan edit ke /etc/defaults/grub
Memuat kernel Mengedit konfigurasi GRUB dan /etc/dracut.conf
mulai /sbin/init Dikompilasi menjadi initramfs
Memproses initrd.target Dikompilasi menjadi initramfs
Beralih ke sistem file root /etc/fstab
Menjalankan target default /etc/systemd/system/default.target
CentOS / RHEL 7 :Panduan pemula untuk systemd
CentOS / RHEL 7 :Panduan pemula untuk target systemd (penggantian level run init SysV)


Cent OS
  1. Mode Pengguna Tunggal di CentOS 7 / RHEL 7

  2. Cara menonaktifkan ACPI di CentOS/RHEL 7

  3. Cara men-debug proses boot systemd di CentOS/RHEL 7 dan 8

  1. Instal Skype di Sistem CentOS 7 - Proses Langkah demi Langkah?

  2. Tidak Dapat Mem-boot OS Linux dengan Auditd (CentOS/RHEL)

  3. Memperbaiki masalah sistem file saat Boot di CentOS/RHEL 7 dan 8

  1. Cara menginstal dan mengkonfigurasi R pada Sistem Linux RHEL 8 / CentOS 8

  2. RHEL 8 / CentOS 8 memulihkan kata sandi root

  3. Cara Debug proses boot systemd di CentOS/RHEL 7 dan 8