Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 無法啟動故障完整修復指南:從 GRUB 到 SystemRescue

編輯:Linux 教學

故障分類與切入點

現象可能原因首要工具
GRUB 不出現 / error: no such partitionMBR/GPT 損壞、分區表錯誤、Windows 覆寫Live USB + grub-install
GRUB 救援模式 (grub>)grub.cfg 遺失、路徑錯誤、核心檔案缺失GRUB 內建指令 + 重建配置
Kernel panic / VFS: Unable to mount rootinitramfs 缺少驅動、root= 參數錯誤、檔案系統損壞重建 initramfs / 修正 kernel 參數
進入 emergency modefstab 錯誤、磁碟損壞、服務啟動失敗journalctl -xb / fsck / 修正 fstab
黑畫面 / 閃爍 / 圖形介面不啟動顯卡驅動、Wayland/X11 配置、顯示管理器nomodeset / 重裝驅動 / 切換 DM

一、通用修復流程:Live USB chroot 大法

  1. 準備與目標系統架構相同的 Live USB(Ubuntu/Fedora/Arch ISO)
  2. 開機進入 Live 環境,確認網路可用(下載套件用)
  3. 掛載目標系統分區:
# 假設:/dev/sda2 = /, /dev/sda1 = /boot/efi (UEFI) 或 /boot (BIOS 獨立分區)
TARGET=/mnt/fix
mkdir -p $TARGET
mount /dev/sda2 $TARGET
mount /dev/sda1 $TARGET/boot/efi  # UEFI
# 若 /boot 獨立分區在 /dev/sda3
# mount /dev/sda3 $TARGET/boot

# 掛載虛擬檔案系統
for d in dev proc sys run; do mount --bind /$d $TARGET/$d; done

# 進入 chroot
chroot $TARGET

二、GRUB 修復詳解

BIOS/MBR 系統

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

UEFI 系統

# 確認 EFI 分區掛載於 /boot/efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linux --recheck
grub-mkconfig -o /boot/grub/grub.cfg

# 若 shim/簽名鏈損壞
dnf reinstall shim-x64 grub2-efi-x64 grub2-common -y  # Fedora/RHEL
apt install --reinstall shim-signed grub-efi-amd64-signed -y  # Ubuntu/Debian

GRUB 救援模式手動開機

ls                           # 列出 (hd0,gpt1), (hd0,gpt2) ...
set prefix=(hd0,gpt2)/boot/grub
set root=(hd0,gpt2)
insmod normal
normal
# 進入選單後選擇啟動,進入系統再執行 grub-install

三、Kernel Panic / Initramfs 修復

# 1. 確認核心版本
KVER=$(ls /lib/modules | sort -V | tail -1)

# 2. 重建 initramfs
# Fedora/RHEL/CentOS
dracut --force --kver $KVER /boot/initramfs-$KVER.img $KVER
# Debian/Ubuntu
update-initramfs -u -k $KVER
# Arch
mkinitcpio -k $KVER -g /boot/initramfs-$KVER.img

# 3. 重建 GRUB 選單 (確保新 initramfs 被引用)
grub-mkconfig -o /boot/grub/grub.cfg

四、Emergency Mode / fstab 錯誤

# 1. 檢查 journal
journalctl -xb | grep -i -e error -e fail -e mount

# 2. 檢查 fstab 語法
cat /etc/fstab
# 常見錯誤:UUID 錯誤、檔案系統類型錯誤、掛載點目錄不存在、選項拼寫錯誤

# 3. 修正後驗證
mount -a
systemctl daemon-reload

# 4. 檔案系統修復 (需卸載)
fsck -f /dev/sda2  # ext4
xfs_repair /dev/sda2  # XFS
btrfs check --repair /dev/sda2  # Btrfs (謹慎使用)

五、SystemRescue:終極修復工具箱

SystemRescue(原 SystemRescueCd)基於 Arch Linux,專為修復設計:

  • 預裝:parted, gparted, fdisk, gdisk, testdisk, photorec, ddrescue, btrfs-progs, zfs, lvm2, mdadm, cryptsetup, nfs-utils, samba, rsync, vim, mc, networkmanager
  • 支援檔案系統:ext2/3/4, xfs, btrfs, zfs, jfs, reiserfs, vfat, ntfs, exfat
  • 啟動模式:圖形 (Xfce)、文字、UEFI/BIOS 雙模

製作 SystemRescue USB

# 下載 ISO
wget https://sourceforge.net/projects/systemrescuecd/files/latest/download -O systemrescue.iso

# 寫入 USB (假設 /dev/sdX)
dd if=systemrescue.iso of=/dev/sdX bs=4M status=progress conv=fsync
sync

常用修復場景

  • 分區表恢復:testdisk 互動式掃描恢復遺失分區
  • 資料救援:photorec 檔案雕刻、ddrescue 壞軌複製
  • LVM/RAID 修復:vgscan, vgchange -ay, mdadm --assemble --scan
  • 加密磁碟:cryptsetup luksOpen /dev/sda2 cryptroot
  • Windows 密碼重設:chntpw -u username /mnt/Windows/System32/config/SAM

六、mkrescue:舊版 LILO/GRUB 時代產物

文章提及的 mkrescue 為 Mandriva/Slackware 專用工具,現代系統已由 grub-mkrescue、dracut --rescue、SystemRescue 取代。不建議在新系統使用。

七、預防性維護清單

  1. 定期測試備份恢復:每季演練完整恢復流程
  2. 核心參數鎖定:/etc/default/grub 固定 GRUB_CMDLINE_LINUX_DEFAULT
  3. 關鍵套件保護:apt-mark hold / dnf versionlock 核心、GRUB、systemd
  4. 硬體健康監控:smartctl -a /dev/sda、nvme smart-log /dev/nvme0
  5. 文件化配置:Git 管理 /etc、Ansible Playbook 記錄基礎設施即代碼

遇到無法啟動:不恐慌、不亂重啟、先 Live USB 保留現場、分層診斷、逐層修復。

Copyright © Windows教程網 All Rights Reserved