Khởi tạo Hệ thống Linux – Hiểu Quy Trình Boot để Xử Lý Sự Cố
Quy trình khởi động (boot process) trong Linux diễn ra rất nhanh và phần lớn ở chế độ nền. Tuy nhiên, nắm rõ các giai đoạn này là điều bắt buộc đối với quản trị viên hệ thống và kỹ sư bảo mật khi cần khắc phục sự cố máy chủ hoặc ứng dụng không thể khởi động đúng cách. 1. Các Giai Đoạn Chính của Quá Trình Khởi Động
Trình tự chung trong quy trình boot Linux:
2. Bootloader – Thành Phần Khởi Động Kernel
Tham số khởi động được bootloader ghi vào file /proc/cmdline, ví dụ:
BOOT_IMAGE=/boot/vmlinuz-4.4.0-22-generic root=UUID=339228c9-cbc3-4503-950f-40415e03779f ro quiet splash
Trong đó:
3. Khởi tạo User-Space: SysVinit vs systemd
Sau khi kernel khởi chạy, Linux chuyển sang khởi tạo user-space:
4. Run Level và Target
Run level mô tả chế độ hoạt động của hệ thống:
Trong systemd, run level được thay bằng target (ví dụ: graphical.target, multi-user.target).
5. Nhận biết Hệ thống Đang Dùng Cơ Chế Khởi Động Nào
6. Câu hỏi ôn tập
Câu 1: Tệp nào chứa tham số khởi động từ bootloader?
✅ /proc/cmdline
Câu 2: Bước cuối cùng trong quá trình khởi động là gì?
✅ Khởi động các quy trình người dùng (user-space processes)
Quy trình khởi động (boot process) trong Linux diễn ra rất nhanh và phần lớn ở chế độ nền. Tuy nhiên, nắm rõ các giai đoạn này là điều bắt buộc đối với quản trị viên hệ thống và kỹ sư bảo mật khi cần khắc phục sự cố máy chủ hoặc ứng dụng không thể khởi động đúng cách. 1. Các Giai Đoạn Chính của Quá Trình Khởi Động
Trình tự chung trong quy trình boot Linux:
- Kiểm tra phần cứng (POST – Power-On Self Test)
Thực hiện bởi BIOS hoặc UEFI để xác minh tình trạng phần cứng cơ bản. - Phát hiện bus thiết bị
Xác định các bus giao tiếp như PCI, USB, SATA để nhận diện phần cứng. - Phát hiện thiết bị
Xác định các thiết bị lưu trữ, card mạng, GPU… - Khởi tạo các subsystem của kernel
Kernel Linux được tải vào bộ nhớ, bắt đầu khởi tạo driver và dịch vụ lõi. - Mount hệ thống tệp gốc (root filesystem)
Tại đây, hệ điều hành có thể truy cập các file hệ thống cần thiết để khởi chạy user-space. - Khởi động các quy trình user-space
Bao gồm các dịch vụ (services) và daemon chạy nền.
2. Bootloader – Thành Phần Khởi Động Kernel
- GRUB (GNU GRUB) và LILO là hai bootloader phổ biến.
- Bootloader phải tương tác với BIOS hoặc UEFI để đọc ổ đĩa khởi động, do lúc này chưa có driver OS.
- BIOS/UEFI thực hiện kiểm tra cơ bản, tìm ổ đĩa boot, đọc bảng phân vùng, và chạy mã bootstrap nhỏ.
- Nhiệm vụ chính: tải kernel vào RAM và truyền tham số khởi động.
Tham số khởi động được bootloader ghi vào file /proc/cmdline, ví dụ:
BOOT_IMAGE=/boot/vmlinuz-4.4.0-22-generic root=UUID=339228c9-cbc3-4503-950f-40415e03779f ro quiet splash
Trong đó:
- BOOT_IMAGE – đường dẫn kernel.
- root – ổ đĩa chứa root filesystem (UUID hoặc /dev/sda1).
- Các tham số khác như ro (read-only ban đầu), quiet (ẩn log), splash (màn hình đồ họa khởi động).
3. Khởi tạo User-Space: SysVinit vs systemd
Sau khi kernel khởi chạy, Linux chuyển sang khởi tạo user-space:
- System V init (SysVinit) – Cơ chế truyền thống.
- File cấu hình: /etc/inittab.
- Khởi động tuần tự các script trong /etc/rcX.d (X là số runlevel).
- Script bắt đầu bằng S để start service, K để kill/dừng service.
- systemd – Cơ chế hiện đại.
- Cấu trúc: /etc/systemd/.
- Khởi động song song → giảm thời gian boot.
- Hỗ trợ khởi chạy dịch vụ theo nhu cầu (on-demand).
- Quản lý cả việc mount filesystem và các target (thay thế runlevel).
4. Run Level và Target
Run level mô tả chế độ hoạt động của hệ thống:
| 0 | Halt (tắt máy) |
| 1 | Single-user mode (bảo trì/khẩn cấp) |
| 2 | Multi-user, không GUI |
| 3 | Multi-user + mạng, không GUI |
| 4 | Không tiêu chuẩn (custom) |
| 5 | Multi-user + GUI |
| 6 | Reboot |
Trong systemd, run level được thay bằng target (ví dụ: graphical.target, multi-user.target).
5. Nhận biết Hệ thống Đang Dùng Cơ Chế Khởi Động Nào
- Có thư mục /etc/systemd → Dùng systemd.
- Có file /etc/inittab → Dùng System V init.
6. Câu hỏi ôn tập
Câu 1: Tệp nào chứa tham số khởi động từ bootloader?
✅ /proc/cmdline
Câu 2: Bước cuối cùng trong quá trình khởi động là gì?
✅ Khởi động các quy trình người dùng (user-space processes)