/boot 目錄被刪除(含 grub.cfg、vmlinuz、initramfs),同時 /etc/fstab 遺失。重啟後 GRUB 進入救援模式或報 error 15: file not found。系統未重啟前請勿重啟,保留記憶體中核心模組與掛載資訊。
/boot 分區(若獨立)、EFI 分區裝置路徑uname -r 或 /lib/modules 目錄名)# 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
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
# 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
# 從套件提取模組
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/
# 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/Fedora | Debian/Ubuntu | Arch/Manjaro |
|---|---|---|---|
| 重建 initramfs | dracut -f /boot/initramfs-$(uname -r).img | update-initramfs -u -k all | mkinitcpio -P |
| GRUB 安裝 (BIOS) | grub2-install /dev/sda | grub-install /dev/sda | grub-install --target=i386-pc /dev/sda |
| GRUB 安裝 (UEFI) | grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=linux | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch |
| 更新 GRUB 選單 | grub2-mkconfig -o /boot/grub2/grub.cfg | update-grub | grub-mkconfig -o /boot/grub/grub.cfg |
| 核心套件重裝 | dnf reinstall kernel | apt install --reinstall linux-image-$(uname -r) | pacman -S linux |
rsync -a /boot/ /backup/boot/ 每日備份dnf versionlock add kernel* / apt-mark hold linux-image-* 防誤移除chattr +i /boot/grub2/grub.cfg 防誤寫(更新前需解除)核心原則:冷靜、不重啟、保留現場、分階段恢復、驗證後再重啟。