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 /boot 目錄誤刪與 fstab 遺失的災難恢復實戰

編輯:Linux 教學

故障現象

/boot 目錄被刪除(含 grub.cfg、vmlinuz、initramfs),同時 /etc/fstab 遺失。重啟後 GRUB 進入救援模式或報 error 15: file not found。系統未重啟前請勿重啟,保留記憶體中核心模組與掛載資訊。

恢復前提

  • 安裝媒體(ISO/Live USB)進入 Rescue Mode 或 Live 環境 chroot
  • 確知根分區、/boot 分區(若獨立)、EFI 分區裝置路徑
  • 確知核心版本(uname -r 或 /lib/modules 目錄名)

第一階段:重建 initramfs

# 1. 掛載根分區 (假設 /dev/sda2)
mount /dev/sda2 /mnt/sysimage

# 2. 掛載獨立 /boot 分區 (假設 /dev/sda1)
mount /dev/sda1 /mnt/sysimage/boot

# 3. 掛載虛擬檔案系統
mount --bind /dev /mnt/sysimage/dev
mount --bind /proc /mnt/sysimage/proc
mount --bind /sys /mnt/sysimage/sys

# 4. 進入 chroot
chroot /mnt/sysimage

# 5. 重建 initramfs (核心版本對應 /lib/modules 目錄)
KVER=$(ls /lib/modules | sort -V | tail -1)
dracut --force --kver $KVER /boot/initramfs-$KVER.img $KVER
# 或 RHEL 6/7 舊版
mkinitrd --force /boot/initramfs-$KVER.img $KVER

第二階段:恢復 GRUB 配置與安裝

情況 A:備份 grub.cfg 可用

cp /backup/grub.cfg /boot/grub2/grub.cfg  # 或 /boot/grub/grub.cfg
grub2-install /dev/sda    # BIOS
# 或 UEFI
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linux

情況 B:無備份,從模板重建

# 1. 產生基本 grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg

# 2. 若模板遺失,從套件重新安裝
dnf reinstall grub2-efi-x64 grub2-common shim-x64 -y  # UEFI
dnf reinstall grub2-pc -y                             # BIOS

# 3. 手動編寫最小啟動項 (臨時救急)
cat > /boot/grub2/grub.cfg <<'EOF'
set timeout=5
set default=0
menuentry "Linux Rescue" {
    linux /vmlinuz-$KVER root=/dev/sda2 ro quiet
    initrd /initramfs-$KVER.img
}
EOF

情況 C:GRUB 模組目錄遺失

# 從套件提取模組
mkdir -p /boot/grub2/i386-pc
cp /usr/lib/grub/i386-pc/* /boot/grub2/i386-pc/
# 或 UEFI
mkdir -p /boot/grub2/x86_64-efi
cp /usr/lib/grub/x86_64-efi/* /boot/grub2/x86_64-efi/

第三階段:重建 /etc/fstab

# 1. 取得 UUID
blkid /dev/sda1 /dev/sda2 /dev/sda3

# 2. 寫入 fstab
cat > /etc/fstab <<'EOF'
#      
UUID=xxxx-xxxx  /         ext4  defaults,noatime  0  1
UUID=yyyy-yyyy  /boot     ext4  defaults          0  2
UUID=zzzz-zzzz  /home     ext4  defaults,noatime  0  2
UUID=wwww-wwww  swap      swap  defaults          0  0
EOF

# 3. 驗證
mount -a

第四階段:驗證與重啟

exit                    # 離開 chroot
umount -R /mnt/sysimage # 遞迴卸載
reboot

關鍵指令對照表

任務RHEL/CentOS/FedoraDebian/UbuntuArch/Manjaro
重建 initramfsdracut -f /boot/initramfs-$(uname -r).imgupdate-initramfs -u -k allmkinitcpio -P
GRUB 安裝 (BIOS)grub2-install /dev/sdagrub-install /dev/sdagrub-install --target=i386-pc /dev/sda
GRUB 安裝 (UEFI)grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linuxgrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntugrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch
更新 GRUB 選單grub2-mkconfig -o /boot/grub2/grub.cfgupdate-grubgrub-mkconfig -o /boot/grub/grub.cfg
核心套件重裝dnf reinstall kernelapt install --reinstall linux-image-$(uname -r)pacman -S linux

預防措施

  1. 備份 /boot:rsync -a /boot/ /backup/boot/ 每日備份
  2. 套件鎖定:dnf versionlock add kernel* / apt-mark hold linux-image-* 防誤移除
  3. 快照:Btrfs/ZFS/LVM 快照、Timeshift 系統還原點
  4. 權限控制:chattr +i /boot/grub2/grub.cfg 防誤寫(更新前需解除)

核心原則:冷靜、不重啟、保留現場、分階段恢復、驗證後再重啟。

Copyright © Windows教程網 All Rights Reserved