Hướng Dẫn Cứu Boot VPS Ubuntu Bằng SystemRescue Và Khôi Phục GRUB
Quy trình cứu VPS Ubuntu không khởi động do mất GRUB hoặc thư mục /boot bằng SystemRescue 13.01, áp dụng cho ổ GPT chạy Legacy BIOS.
VPS Ubuntu có thể không khởi động sau khi phân vùng, kernel hoặc GRUB bị hỏng. Trong trường hợp hệ thống mất cả thư mục /boot, việc chỉ chạy lại update-grub thường chưa đủ vì máy không còn kernel và initramfs để nạp hệ điều hành.
Bài viết này hướng dẫn quy trình cứu hộ bằng SystemRescue 13.01, dựa trên một ca phục hồi thành công với Ubuntu 24.04 LTS, ổ VirtIO /dev/vda, bảng phân vùng GPT và firmware Legacy BIOS.
Cảnh báo quan trọng: các lệnh tạo phân vùng và grub-install có thể làm VPS không thể boot nếu chọn sai ổ hoặc sai sector. Hãy xác nhận cấu trúc đĩa thực tế trước khi chạy. Trong ví dụ này, GRUB được cài vào toàn bộ ổ /dev/vda, không phải /dev/vda1 hoặc /dev/vda2.
1. Phạm Vi Áp Dụng
Quy trình dưới đây được viết cho cấu trúc mẫu sau. Nếu VPS của bạn khác cấu trúc này, hãy thay đúng tên thiết bị và cách cài GRUB tương ứng.
| Thành phần | Ca mẫu | Khi hệ thống khác |
|---|---|---|
| Ổ hệ thống | /dev/vda | Có thể là /dev/sda hoặc /dev/nvme0n1 |
| Root filesystem | /dev/vda1, ext4, label root | Chọn đúng phân vùng chứa /etc/os-release |
| Firmware | Legacy BIOS | Nếu là UEFI, không dùng target i386-pc |
| Partition table | GPT | Ổ MBR không cần phân vùng bios_grub |
| Hệ điều hành | Ubuntu 24.04 LTS | RHEL, AlmaLinux và Rocky Linux dùng tên lệnh GRUB khác |
2. Boot VPS Từ ISO SystemRescue
- Gắn file
systemrescue-13.01-amd64.isovào VPS từ bảng điều khiển của nhà cung cấp. - Đưa CD/DVD/ISO lên đầu thứ tự boot.
- Chọn Boot SystemRescue using default options.
- Đợi đến dấu nhắc
[root@sysrescue ~]#. SystemRescue sẽ tự đăng nhập bằng quyền root.
Bạn có thể thử mục Boot a Linux operating system installed on the disk (findroot) trước. Nếu vẫn không vào được Ubuntu, hãy quay lại chế độ boot mặc định và tiếp tục các bước bên dưới.
3. Nhận Diện Ổ Đĩa, Phân Vùng Root Và Firmware
Trước khi thay đổi bất kỳ dữ liệu nào, hãy dùng các lệnh chỉ đọc sau để xác nhận tên ổ, filesystem, UUID và chế độ firmware:
lsblk -f
lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,UUID,MOUNTPOINTS
fdisk -l /dev/vda
test -d /sys/firmware/efi && echo UEFI || echo BIOSTrong ca mẫu, kết quả cần nhận diện gồm:
/dev/vdadung lượng 25 GiB là ổ VirtIO của VPS./dev/vda1dùng ext4, labelrootvà chứa Ubuntu.Disklabel type: gptxác nhận ổ dùng GPT.- Kết quả
BIOSxác nhận ISO đang boot ở chế độ Legacy BIOS.
Tiếp theo, mount phân vùng root và kiểm tra đúng hệ điều hành:
mount /dev/vda1 /mnt
cat /mnt/etc/os-release
cat /mnt/etc/fstab
ls -lah /mnt/bootỞ ca mẫu, /etc/os-release trả về Ubuntu 24.04.4 LTS, còn /mnt/boot báo No such file or directory. Điều này cho thấy thư mục boot đã mất.
Nếu /etc/fstab có dòng mount riêng cho /boot, bạn phải tìm và mount đúng phân vùng đó. Không tự tạo /boot trên root theo bước 4.
4. Tạo Phân Vùng BIOS Boot Trên Ổ GPT
Legacy BIOS kết hợp với GPT cần một phân vùng nhỏ kiểu EF02 để GRUB lưu core.img. Trong ca mẫu, phân vùng root bắt đầu từ sector 4096, vì vậy có thể dùng vùng trống từ sector 2048 đến 4095, tương đương 1 MiB.
4.1. Sao Lưu Bảng Phân Vùng GPT
sgdisk --backup=/mnt/root/vda-gpt-before-grub.bin /dev/vdaKhi thành công, lệnh sẽ trả về The operation has completed successfully.. Hãy giữ file backup này cho đến khi xác nhận VPS đã hoạt động ổn định.
4.2. Tạo BIOS Boot Partition
sgdisk -n 2:2048:4095 -t 2:ef02 -c 2:bios_grub /dev/vda
partprobe /dev/vda
lsblk -o NAME,SIZE,FSTYPE,PARTTYPE,PARTLABELKết quả đúng là xuất hiện /dev/vda2 với dung lượng khoảng 1 MiB và nhãn bios_grub. Không format và không mount phân vùng này.
Dải sector 2048:4095 chỉ hợp lệ khi fdisk -l cho thấy phân vùng đầu tiên bắt đầu tại sector 4096. Nếu phân vùng đầu bắt đầu ở 2048, không được chạy nguyên lệnh trên vì vùng trống không tồn tại.
5. Tạo Lại /boot, Bind Mount Và Chroot
Chỉ tạo lại thư mục /boot sau khi đã chắc chắn đây không phải một phân vùng riêng trong /etc/fstab. Sau đó bind mount các filesystem cần thiết và chuyển vào hệ điều hành đang lỗi bằng chroot.
mkdir -p /mnt/boot
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount -t proc proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /run /mnt/run
mount --make-rslave /mnt/run
chroot /mnt /bin/bashBên trong chroot, kiểm tra mạng, cập nhật danh sách gói và xác định kernel đang được cài:
apt-get update
dpkg -l 'linux-image*'Tiền tố ii nghĩa là gói đã được cài. Ca mẫu có linux-image-6.8.0-111-generic, nhưng các file trong /boot đã mất nên cần cài lại đúng gói kernel này.
Thông báo DBus dạng ServiceUnknown: The name is not activatable thường có thể bỏ qua trong chroot nếu apt-get update vẫn tải được danh sách gói và kết thúc bằng Reading package lists... Done.
6. Phục Hồi Kernel Và Initramfs
Thay phiên bản kernel trong lệnh dưới đây nếu kết quả dpkg -l trên VPS của bạn khác ca mẫu:
DEBIAN_FRONTEND=noninteractive apt-get install --reinstall -y linux-image-6.8.0-111-generic grub-pc grub-pc-bin
update-initramfs -u -k 6.8.0-111-genericTrong môi trường rescue có thể xuất hiện một số cảnh báo nhưng không nhất thiết làm quá trình thất bại:
MD subsystem is not loadedhoặc cảnh báomdadm.confkhi VPS không dùng RAID.- Cảnh báo DBus vì systemd không chạy đầy đủ trong chroot.
- Cảnh báo thiếu file cấu hình kernel, miễn là cuối cùng vẫn tạo được
vmlinuzvàinitrd.img.
7. Cài Lại GRUB Và Tạo Menu Boot
grub-install --target=i386-pc --recheck /dev/vda
update-grub
ls -lh /bootDấu hiệu thành công: lệnh trả về Installation finished. No error reported., tìm thấy Linux image và initrd image trong /boot, sau đó kết thúc bằng done.
Thư mục /boot phải có tối thiểu:
vmlinuz-6.8.0-111-genericinitrd.img-6.8.0-111-generic- Thư mục
/boot/grub
8. Thoát Chroot, Tháo ISO Và Khởi Động Lại
exit
sync
umount -R /mnt
poweroff- Eject hoặc unmount ISO SystemRescue trong bảng điều khiển VPS.
- Giữ firmware ở Legacy BIOS, không chuyển sang UEFI.
- Đặt ổ cứng làm thiết bị boot đầu tiên rồi bật VPS.
- Sau khi Ubuntu khởi động, chạy các lệnh kiểm tra bên dưới.
uname -r
lsblk
systemctl --failedCác Lỗi Thường Gặp Khi Cứu Boot VPS
Problem opening /dev/v for reading
Tên thiết bị bị gõ thiếu do cửa sổ console hẹp. Hãy nhập lại và bảo đảm tên ổ kết thúc đầy đủ bằng /dev/vda. Việc dòng lệnh tự xuống hàng trên màn hình không ảnh hưởng, miễn là bạn không nhấn Enter giữa tên ổ.
grub-install: embedding is not possible
Ổ GPT đang chạy BIOS nhưng chưa có phân vùng bios_grub, hoặc kernel chưa nhận phân vùng vừa tạo. Kiểm tra lại bằng lsblk, chạy partprobe /dev/vda rồi thử lại.
update-grub không tìm thấy Linux image
Bạn chưa phục hồi đúng gói kernel. Xác định phiên bản bằng dpkg -l 'linux-image*', cài lại đúng gói có trạng thái ii, sau đó chạy lại update-initramfs và update-grub.
apt-get update báo lỗi DNS
Kiểm tra kết nối mạng của môi trường rescue và cấu hình DNS hợp lệ cho chroot. Không reboot khi kernel vẫn chưa xuất hiện trong /boot.
VPS tiếp tục vào SystemRescue sau khi reboot
ISO vẫn đang được gắn hoặc đứng trước ổ cứng trong boot order. Hãy eject ISO và chọn boot từ disk.
Bản Lệnh Rút Gọn Cho Đúng Ca Mẫu
Chỉ dùng nguyên khối lệnh dưới đây sau khi xác nhận root là /dev/vda1, phân vùng root bắt đầu ở sector 4096, firmware là BIOS, disklabel là GPT và /boot không phải phân vùng riêng.
mount /dev/vda1 /mnt
sgdisk --backup=/mnt/root/vda-gpt-before-grub.bin /dev/vda
sgdisk -n 2:2048:4095 -t 2:ef02 -c 2:bios_grub /dev/vda
partprobe /dev/vda
mkdir -p /mnt/boot
mount --rbind /dev /mnt/dev
mount --make-rslave /mnt/dev
mount -t proc proc /mnt/proc
mount --rbind /sys /mnt/sys
mount --make-rslave /mnt/sys
mount --rbind /run /mnt/run
mount --make-rslave /mnt/run
chroot /mnt /bin/bashapt-get update
DEBIAN_FRONTEND=noninteractive apt-get install --reinstall -y linux-image-6.8.0-111-generic grub-pc grub-pc-bin
update-initramfs -u -k 6.8.0-111-generic
grub-install --target=i386-pc --recheck /dev/vda
update-grub
ls -lh /boot
exit
sync
umount -R /mnt
poweroffCâu hỏi thường gặp
Có thể dùng hướng dẫn này cho VPS UEFI không?
Không. Bài viết áp dụng cho GPT chạy Legacy BIOS và dùng grub-install target i386-pc. VPS UEFI cần xác định và mount đúng EFI System Partition rồi cài GRUB theo chế độ UEFI.
Có được cài GRUB vào /dev/vda1 không?
Không. Trong cấu trúc mẫu, GRUB phải được cài vào toàn bộ ổ /dev/vda.
Có cần format phân vùng bios_grub không?
Không. Phân vùng EF02 chỉ dành cho GRUB lưu core.img, không format và không mount.
Khi nào có thể tháo ISO SystemRescue?
Chỉ tháo ISO sau khi grub-install và update-grub thành công, đồng thời /boot đã có vmlinuz, initrd.img và thư mục grub.
VPSTTT – Nhà Cung Cấp Giải Pháp Hạ Tầng Số Toàn Diện
VPSTTT là nhà cung cấp giải pháp hạ tầng số tại Việt Nam, phục vụ nhu cầu triển khai, vận hành và lưu trữ dữ liệu của cá nhân, lập trình viên và doanh nghiệp. Hệ sinh thái dịch vụ gồm VPS Việt Nam, VPS quốc tế, VPS Anti DDoS, Hosting cPanel, máy chủ riêng, thuê Rack, Proxy IPv4/IPv6, S3 MinIO và Cloud Storage.
Bên cạnh việc cung cấp tài nguyên hạ tầng, VPSTTT còn tập trung hỗ trợ khách hàng trong quá trình triển khai, cấu hình và xử lý các sự cố thực tế. Nội dung trên Blog VPSTTT được xây dựng từ những tình huống thường gặp khi vận hành VPS, máy chủ và hệ thống trực tuyến, giúp người đọc có thể hiểu nguyên nhân và áp dụng giải pháp rõ ràng hơn.
VPSTTT – Hạ tầng ổn định, giải pháp linh hoạt và đồng hành trong suốt quá trình vận hành.
Thông Tin Liên Hệ Đội Ngũ VPSTTT
Website: https://vpsttt.com
Facebook: https://www.facebook.com/trang.vpsttt/
Zalo OA: https://zalo.me/vpstttgroup
Hotline: 0328 812 674
Kết Luận
Khi VPS Ubuntu mất GRUB hoặc mất dữ liệu trong /boot, SystemRescue cho phép bạn kiểm tra ổ đĩa, chroot vào hệ thống, phục hồi kernel và cài lại bootloader mà không cần cài mới hệ điều hành. Yếu tố quan trọng nhất là xác định đúng firmware, bảng phân vùng, phân vùng root và khoảng sector trống trước khi thay đổi GPT.
Nếu cấu trúc VPS không giống ca mẫu hoặc dữ liệu trên máy có giá trị cao, bạn nên tạo snapshot và liên hệ kỹ thuật trước khi thao tác.
◉ 180
◉ 138
◉ 126