Deepin20.8 Linux 误删 /boot 分区 修复记录
故事背景:
朋友使用的是物理机,Deepin 20.8 操作系统,有桌面版本,误删 /boot 目录,重启机器以后,无法进入系统
开机后直接进入 BIOS 页面,能看到硬盘
询问以后,朋友说误删了 /boot 目录
晕菜。。。
解决思路:
先从 好的 Deepin20.8 系统 打包拷贝 一份 /boot 分区目录,传到 U盘1 上
然后通过 U盘2(U启动盘)进救援模式,重新修复原系统的 /boot 分区
最后恢复原系统
以下是详细步骤:
1、下载 Deepin 20.8 操作系统 的 iso 文件,使用 rufus 工具刻录到空的 U盘 中,或者使用 ventoy 工具(先制作启动盘,然后把 iso 文件放进去)
2、插上 U盘2,物理机开机进入 BIOS 设置启动项,设置 U盘2 第一启动
3、然后重启机器,进入系统安装模式,出现第一幕 Install 5.15.77 选项,迅速按 Tab 键
4、然后移动键盘左、右键编辑,在 quiet 后面追加 init=/bin/bash,并删除 installer,然后回车
5、回车以后进入救援模式(可以使用终端命令行),先 lsblk 查看原来的硬盘,然后创建目录,把相应的盘挂载到目录上去
lsblk 查看硬盘,得知 /dev/sda1 是 U盘2,
/dev/nvme0n1 是原来系统的硬盘,
/dev/nvme0n1p4 是 1.5G,这个是 /boot 分区
/dev/nvme0n1p2 是 200G,这个是系统分区
创建预先挂载目录:mkdir -p /mnt/{osb,os,boot}
挂载 boot分区所在硬盘:mount /dev/nvme0n1p4 /mnt/osb
挂载 系统盘所在硬盘:mount /dev/nvme0n1p2 /mnt/os
插入 U盘1,lsblk,得知 /dev/sdb1 是 U盘1
挂载正常的 boot 分区目录文件所在的U盘:mount /dev/sdb1 /mnt/boot
6、拷贝 正常的 boot 分区目录文件 到 原系统盘 boot分区所在硬盘
cp -a /mnt/boot/* /mnt/osb/
7、查看设备id
blkid
8、找到 /dev/nvme0n1p4 和 /dev/nvme0n1p2 的设备的 UUID,并记录,可以先记在本子上,手写也可以
9、编辑 grub.cfg 文件
vim /mnt/osb/grub/grub.cfg
修改 Deepin20.8 那一部分的 UUID 为当前机器的 硬盘分区 的 UUID
menuentry 'Deepin 20.8 GNU/Linux' --class deepin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f4ddbe77-ab62-46a6-aa66-01ef8d7b1271' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root 2eaxx-xx-xx-xx-xxae
else
search --no-floppy --fs-uuid --set=root 2eaxx-xx-xx-xx-xxae
fi
linux /vmlinuz-5.15.77-amd64-desktop root=UUID=f4xx-xx-xx-xx-xx71 ro splash quiet DEEPIN_GFXMODE=$DEEPIN_GFXMODE
initrd /initrd.img-5.15.77-amd64-desktop
boot
}
search --no-floppy --fs-uuid --set=root 2eaxx-xx-xx-xx-xxae
这一行表示的是 /boot 分区所在的盘,所以 设备 UUID 应该为 /dev/nvme0n1p4 的 UUID
linux /vmlinuz-5.15.77-amd64-desktop root=UUID=f4xx-xx-xx-xx-xx71 ro splash quiet
这一行表示的是 系统盘 分区 所在的盘,所以 设备 UUID 应该为 /dev/nvme0n1p2 的 UUID
修改完以后,保存并退出
10、拷贝 到 系统盘所在目录一份
cp -a /mnt/osb/* /mnt/os/boot/*
11、重启物理机(强制下电,然后手动上电),按关机键、隔3~5s 再按开机键
12、重启后,物理机进入 grub 命令行模式
13、先确定硬盘分区
ls 可以看到硬盘分区
14、使用以下 grub 命令,进入系统
set prefix=(hd0,gpt2)/boot/grub
set root=(hd0,gpt2)
set linux=(hd0,gpt2)/boot//vmlinuz-5.15.77-amd64-desktop
set initrd=(hd0,gpt2)/boot/initrd.img
insmod normal
normal
15、进入系统,能进入桌面了,然而这并没有完全修复好
16、重新编辑 grub.cfg 文件,批量全部修改 UUID
vim /boot/grub/grub.cfg
在查看模式下,使用下列命令批量替换
:%s/原来的boot分区所在盘的UUID/当前主机boot分区所在盘的UUID/g
:%s/原来的系统盘分区所在盘的UUID/当前主机系统盘分区所在盘的UUID/g
然后保存文件,并退出 Vim 编辑器
17、生效 grub.cfg 配置文件
grub-mkconfig -o /boot/grub/grub.cfg
grub-install /dev/nvme0n1
18、重启物理机
reboot
19、系统恢复正常,完全修复系统,终于成功了
20、再重启机器,正常启动
注意:
误删 /boot 分区目录有风险,操作需谨慎!!!
我们下期见,拜拜!