Quá trình khởi động hệ điều hành Linux

Các giai đoạn chính trong quá trình khởi động Linux

1. Giai đoạn nạp nhân (Kernel Boot)
Khi bật nguồn, hệ thống thực hiện kiểm tra phần cứng qua BIOS/UEFI và nạp trình nạp khởi động (bootloader) từ thiết bị được chỉ định — thường là ổ cứng. Trình nạp này (như GRUB) sẽ tải nhân Linux vào bộ nhớ và chuyển quyền điều khiển cho nhân.

2. Khởi tạo tiến trình init
Sau khi nhân được nạp, tiến trình đầu tiên init (hoặc systemd trên các bản phân phối hiện đại) được khởi chạy. Đây là gốc của mọi tiến trình khác trong hệ thống.

Trên các phiên bản Linux cũ (trước systemd), init đọc tệp cấu hình /etc/inittab để xác định mức chạy (runlevel). Các mức chạy phổ biến gồm:

  • 0: Tắt hệ thống — không nên đặt làm mặc định.
  • 1: Chế độ đơn người dùng, chỉ có quyền root, dùng để bảo trì.
  • 2: Đa người dùng, không hỗ trợ NFS.
  • 3: Đa người dùng đầy đủ với NFS, giao diện dòng lệnh.
  • 4: Dự phòng, không sử dụng.
  • 5: Giao diện đồ họa (GUI).
  • 6: Khởi động lại — không nên đặt làm mặc định.

Từ CentOS/RHEL 7 trở đi, hệ thống sử dụng systemd thay vì init. Mức chạy được thay thế bằng các target unit.

Xem mức chạy hiện tại:

[root@localhost ~]# systemctl get-default

Đặt mặc định sang chế độ dòng lệnh:

[root@localhost ~]# systemctl set-default multi-user.target

Đặt mặc định sang giao diện đồ họa:

[root@localhost ~]# systemctl set-default graphical.target

Kết quả của lệnh trên là tạo liên kết mềm tại /etc/systemd/system/default.target trỏ đến target tương ứng. Ví dụ nội dung của graphical.target:

[Unit]
Description=Graphical Interface
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service
Conflicts=rescue.service rescue.target
After=multi-user.target display-manager.service
AllowIsolate=yes

Để chuyển đổi tạm thời giữa các chế độ mà không thay đổi mặc định, có thể dùng:

[root@localhost ~]# telinit 3   # Chuyển sang CLI
[root@localhost ~]# telinit 5   # Chuyển sang GUI

Lưu ý: Lệnh init vẫn hoạt động nhưng telinit là lựa chọn rõ ràng hơn trong môi trường systemd.

3. Giai đoạn khởi tạo hệ thống
Hệ thống thực thi các script khởi động trong thư mục /etc/rc.d/ (hoặc thông qua các service unit của systemd) để kích hoạt phân vùng swap, kiểm tra hệ thống tập tin, nạp module phần cứng và khởi động các dịch vụ nền cần thiết.

4. Thiết lập các terminal ảo
Sau khi hoàn tất khởi tạo, hệ thống mở sẵn một số terminal ảo (thường là 6 cái, từ tty1 đến tty6) để người dùng có thể đăng nhập qua bàn phím.

5. Đăng nhập người dùng
Người dùng có thể đăng nhập theo ba cách:

  • Dòng lệnh (CLI) – trực tiếp tại máy hoặc qua terminal ảo.
  • Giao diện đồ họa (GUI) – nếu hệ thống được cấu hình ở mức chạy 5.
  • SSH – đăng nhập từ xa qua mạng.
Chế độ đăng nhập cục bộ (CLI hoặc GUI) phụ thuộc vào target mặc định đã cấu hình.

Tắt máy và khởi động lại

Quy trình tắt máy: Đồng bộ dữ liệu (sync) → Dừng dịch vụ → Tắt phần cứng.
Các lệnh tắt máy:

[root@localhost ~]# shutdown -h now
[root@localhost ~]# poweroff
[root@localhost ~]# halt
[root@localhost ~]# systemctl poweroff

Lệnh halt dừng CPU nhưng không nhất thiết ngắt điện; poweroff gửi tín hiệu ACPI để tắt nguồn hoàn toàn.

Hủy lệnh tắt máy đã lên lịch:

[root@localhost ~]# shutdown -c

Khởi động lại:

[root@localhost ~]# reboot
[root@localhost ~]# shutdown -r now
[root@localhost ~]# systemctl reboot

Hoặc dùng mức chạy:

[root@localhost ~]# telinit 6   # Tương đương reboot

Giải thích dấu nhắc lệnh

[root@localhost ~]#
  • root: tên tài khoản đang đăng nhập.
  • @: ký hiệu "tại".
  • localhost: tên máy chủ hiện tại.
  • ~: thư mục home của người dùng.
  • #: dấu nhắc của người dùng root (quyền superuser); $ dành cho người dùng thường.

Thẻ: linux systemd boot-process runlevel target-unit

Đăng vào ngày 5 tháng 7 lúc 21:15