Sổ tay kỹ thuật

Linux không boot – emergency mode, fstab sai, GRUB, initramfs, fsck

troubleshooting#linux#boot#grub#systemd· cập nhật 2026-11-06

Dùng khi máy Ubuntu rơi vào emergency mode, dừng ở prompt initramfs hoặc grub, hoặc không boot sau khi sửa fstab, đổi disk, nâng kernel.

Sửa trang này
Mục lục

Triệu chứng chính: màn hình You are in emergency mode. After logging in, type "journalctl -xb"..., prompt (initramfs), prompt grub> / grub rescue>, hoặc kernel panic VFS: Unable to mount root fs. Cần console (iDRAC/iLO, console VM, cloud serial console); SSH thường không có.

Lỗi thường gặp

Triệu chứng Nguyên nhân Cách xử lý
Emergency mode ngay sau khi sửa /etc/fstab Sai UUID, sai fstype, disk dữ liệu bị gỡ Sửa fstab (bước 2), thêm nofail cho disk không phải root
Emergency mode, log có Dependency failed for /srv/data Mount unit lỗi, disk hỏng hoặc chưa sẵn sàng systemctl --failed, journalctl -xb -u srv-data.mount
Prompt (initramfs), báo UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY Filesystem root lỗi (mất điện, disk lỗi) fsck -y /dev/<root> ngay trong initramfs rồi exit
(initramfs) báo ALERT! UUID=... does not exist Đổi controller/disk, initramfs thiếu driver, LVM chưa activate blkid, lvm vgchange -ay, sau đó boot lại và update-initramfs -u
grub rescue> / error: unknown filesystem GRUB không tìm thấy /boot (partition đổi, disk đổi thứ tự) Boot live ISO → chroot → grub-install + update-grub
grub> (không có menu) Thiếu/hỏng grub.cfg Boot thủ công hoặc chroot và update-grub
Kernel mới panic, kernel cũ boot được initramfs của kernel mới lỗi, module/driver Chọn kernel cũ ở Advanced options, update-initramfs -u -k <ver>
Boot rất chậm, dừng ~90 giây với A start job is running for /dev/disk/by-uuid/... Device trong fstab không tồn tại Sửa/xoá dòng đó, hoặc nofail,x-systemd.device-timeout=10s
/ mount read-only Kernel remount ro vì lỗi FS Xem dmesg, fsck lần boot sau; kiểm tra disk bằng smartctl -a
Quên mật khẩu root / sudo hỏng sudoers lỗi, user bị khoá Boot vào rescue/init=/bin/bash (bước 3), sửa rồi reboot

Các bước khoanh vùng

flowchart TD A["Máy không boot"] --> B{"Thấy menu GRUB?"} B -->|"grub rescue / grub>"| C["Live ISO, chroot, grub-install, update-grub"] B -->|Có| D{"Dừng ở đâu?"} D -->|"(initramfs)"| E["fsck root, kiểm tra UUID / LVM"] D -->|"emergency mode"| F["journalctl -xb, sửa fstab"] D -->|"kernel panic"| G["Chọn kernel cũ, update-initramfs"]

1. Hiện menu GRUB và sửa tham số kernel tạm thời

  • BIOS: giữ Shift khi boot; UEFI: nhấn Esc (lặp lại) ngay sau logo firmware.
  • Chọn entry, nhấn e, sửa dòng bắt đầu bằng linux, nhấn Ctrl-x (hoặc F10) để boot. Thay đổi chỉ áp cho lần boot này.
Thêm vào cuối dòng linux Kết quả
systemd.unit=rescue.target Single-user, đã mount filesystem, có root shell
systemd.unit=emergency.target Tối thiểu nhất, / mount read-only, không mount gì khác
init=/bin/bash Bỏ qua systemd, shell root ngay; / read-only
nomodeset Bỏ driver đồ hoạ khi màn hình đen

2. Sửa fstab từ emergency mode

journalctl -xb -p err                   # lỗi của lần boot này
systemctl --failed                      # unit mount nào hỏng
mount -o remount,rw /                   # root đang ro thì remount rw để sửa
lsblk -f                                # UUID thật của các device
blkid
nano /etc/fstab                         # sửa UUID, thêm nofail hoặc comment dòng lỗi
findmnt --verify                        # kiểm tra fstab
systemctl daemon-reload && mount -a     # thử mount, không lỗi mới reboot
reboot

3. Shell từ init=/bin/bash

mount -o remount,rw /
passwd root                              # hoặc sửa /etc/fstab, /etc/sudoers.d/*
sync
exec /sbin/init                          # hoặc: reboot -f

4. Từ prompt initramfs

# Gõ tại prompt (initramfs), shell busybox
blkid                                    # thấy root device không?
lvm vgchange -ay                         # root trên LVM chưa active
fsck -y /dev/mapper/ubuntu--vg-ubuntu--lv
exit                                     # tiếp tục boot

Không chạy fsck trên filesystem đang mount read-write: hỏng dữ liệu. Chạy từ initramfs, emergency mode (root ro) hoặc live ISO.

5. Chroot từ live ISO để sửa GRUB / initramfs

# Root trên /dev/sda2 (LVM: vgchange -ay rồi dùng /dev/mapper/...), EFI trên /dev/sda1
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi                   # chỉ với UEFI
for d in dev proc sys run; do sudo mount --bind /$d /mnt/$d; done
sudo chroot /mnt
grub-install /dev/sda                                # BIOS; UEFI: grub-install --target=x86_64-efi --efi-directory=/boot/efi
update-initramfs -u -k all
update-grub
exit
sudo umount -R /mnt && sudo reboot

Cấu hình đúng

/etc/fstab
# Root và /boot/efi: không nofail. Disk dữ liệu, NFS: nofail + timeout ngắn
UUID=3f1c2a9e-0000-4000-8000-000000000001  /srv/data  ext4  defaults,nofail,x-systemd.device-timeout=10s  0  2
198.51.100.30:/export/backup              /mnt/nfs   nfs   defaults,nofail,_netdev                         0  0
  • Sửa fstab xong luôn chạy findmnt --verify và mount -a trước khi reboot.
  • Giữ ít nhất 2 kernel (apt autoremove mặc định giữ kernel đang chạy và bản trước) để còn đường lùi.
  • GRUB_TIMEOUT_STYLE=menu và GRUB_TIMEOUT=5 trong /etc/default/grub (rồi update-grub) để luôn thấy menu trên server khó vào console.

Kiểm tra nhanh

journalctl --list-boots                     # boot lỗi có ghi log không (journal bền)
journalctl -b -1 -p err                     # lỗi của lần boot trước
systemctl --failed
findmnt --verify
lsblk -f; cat /etc/fstab
ls /boot/vmlinuz-* /boot/initrd.img-*       # kernel và initramfs có đủ cặp

Liên quan: LVM và ổ đĩa, journalctl cheatsheet.