Cứu nguy CentOS Stream 9: Cách dùng Rescue Mode và Chroot để sửa lỗi GRUB

Khi màn hình đen “GRUB rescue>” xuất hiện

Bạn vừa thực hiện cập nhật Kernel hoặc thay đổi phân vùng trên server CentOS Stream 9 và gõ lệnh reboot. Thay vì màn hình đăng nhập, hệ thống lại trả về dòng chữ grub rescue> đầy ám ảnh. Mọi dịch vụ đang chạy bỗng chốc dừng lại, và áp lực đè nặng lên vai người quản trị.

Mình từng rơi vào cảnh này khi lỡ tay dọn dẹp nhầm file trong thư mục /boot. Lúc đó, ý nghĩ đầu tiên là cài lại máy, nhưng làm vậy sẽ mất sạch cấu hình phức tạp trước đó. May mắn là bộ đôi Rescue ModeChroot đã cứu mình. Chúng cho phép bạn “xâm nhập” vào hệ thống đang hỏng để sửa lỗi từ bên trong mà không làm mất một byte dữ liệu nào.

Tại sao server của bạn bỗng dưng không boot được?

Thực tế vận hành cho thấy, có 3 kịch bản phổ biến nhất khiến hệ thống Linux “đình công”:

  • Hỏng bộ nạp khởi động (GRUB): Thường do lỗi trong quá trình update Kernel hoặc bản ghi khởi động (Boot record) bị ghi đè.
  • Sai sót trong file cấu hình mount: Chỉ cần một lỗi chính tả trong /etc/fstab, OS sẽ treo cứng vì không tìm thấy phân vùng cần thiết.
  • Xung đột Driver: Kernel mới nâng cấp không tương thích với phần cứng cũ của server.

Nếu không thể SSH, bạn bắt buộc phải dùng Console (trên VM) hoặc cắm màn hình trực tiếp vào máy vật lý để thao tác.

Đừng vội cài lại máy khi gặp lỗi boot

Nhiều bạn mới làm quản trị thường chọn cách Restore Snapshot hoặc cài lại OS. Restore Snapshot rất nhanh nhưng bạn sẽ mất toàn bộ dữ liệu mới nhất kể từ bản backup gần nhất. Còn cài lại hệ điều hành? Đó là phương án tốn thời gian nhất và cực kỳ thiếu chuyên nghiệp trong môi trường Production.

Sử dụng Rescue Mode là con đường ngắn nhất. Bạn chỉ cần khởi động từ file ISO, mount ổ cứng cũ vào và dùng lệnh chroot. Lúc này, môi trường cứu hộ sẽ biến thành môi trường server thật, cho phép bạn thao tác như chưa từng có lỗi xảy ra.

Quy trình cứu hộ server CentOS Stream 9

Dưới đây là các bước mình thường áp dụng để xử lý nhanh trong khoảng 15 phút.

Bước 1: Truy cập Rescue Mode

Chuẩn bị một file ISO CentOS Stream 9 và gắn vào máy (qua USB hoặc Virtual Drive).

  1. Khởi động và chọn Boot từ ISO.
  2. Tại menu chính, di chuyển xuống mục Troubleshooting.
  3. Chọn Rescue a CentOS Stream system.

Khi màn hình hiện ra 4 lựa chọn, hãy nhấn phím 1 (Continue). Hệ thống sẽ quét các ổ đĩa và tự động mount hệ điều hành cũ vào thư mục tạm /mnt/sysroot.

# Nhấn Enter khi thấy thông báo để vào Shell
sh-5.1#

Bước 2: Dùng Chroot để “nhập hồn” vào hệ thống cũ

Lúc này bạn đang đứng ở môi trường của đĩa ISO. Để sửa file của server, bạn cần chuyển root directory về ổ cứng máy bằng lệnh sau:

chroot /mnt/sysroot

Dấu nhắc lệnh sẽ thay đổi. Giờ đây, mọi thay đổi bạn thực hiện sẽ tác động trực tiếp lên hệ thống đang bị lỗi.

Bước 3: Xử lý lỗi GRUB

Nếu lỗi khiến máy không hiện menu chọn Kernel, bạn cần cài lại GRUB. Hãy dùng lệnh lsblk để xác định chính xác tên ổ cứng (ví dụ: /dev/sda hoặc /dev/vda).

Với chuẩn BIOS cũ:

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Với chuẩn UEFI hiện đại:

dnf reinstall grub2-efi shim
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Bước 4: Chỉnh sửa file hệ thống và Reset mật khẩu

Nếu lỗi nằm ở /etc/fstab, hãy dùng vi để mở file. Xóa hoặc comment các dòng mount ổ đĩa lạ mà bạn vừa thêm vào trước khi lỗi xảy ra.

vi /etc/fstab

Tiện tay, nếu bạn quên mật khẩu root, hãy đổi luôn tại đây:

passwd root

Bước 5: Kích hoạt SELinux Relabel và khởi động lại

Đây là bước dễ bị bỏ quên nhất. Khi can thiệp từ môi trường ngoài, các nhãn bảo mật SELinux của file có thể bị sai, khiến bạn không thể login sau khi reboot.

# Yêu cầu hệ thống quét lại nhãn SELinux khi boot
touch /.autorelabel
exit
reboot

Sau khi khởi động lại, quá trình autorelabel sẽ chạy (mất khoảng 2-5 phút tùy lượng dữ liệu). Hãy kiên nhẫn chờ đợi.

Kinh nghiệm thực tế

Kỹ thuật chroot không chỉ để sửa lỗi boot. Mình từng phải xử lý gấp 5 server cần đổi IP và cấu hình lại mạng đồng loạt sau khi chuyển Datacenter. Việc dùng Rescue Mode giúp mình can thiệp sâu vào cấu hình hệ thống mà không cần quan tâm đến các rào cản dịch vụ đang chạy.

Lưu ý nhỏ: Luôn kiểm tra xem phân vùng /boot đã được mount chưa bằng lệnh ls /boot. Nếu thấy thư mục trống rỗng, bạn phải mount nó thủ công trước khi chạy các lệnh grub2-install.

Làm chủ được Rescue Mode sẽ giúp bạn giữ được sự bình tĩnh khi server gặp sự cố, vì bạn biết chắc chắn mình luôn có chìa khóa để mở lại cánh cửa vào hệ thống.

Share: