公司的路由盘存放着共享的数据,年前老板最后离开公司的时候来了把硬关机,直接拔电源的那种硬, 过完年回来就发现路由盘死了,上面的seafile系统瘫痪了。
Tater不在,只好自己硬上,修呗,检查发现每次开机map device table都找不到,起初以为硬盘坏了,烧录了一个USB启动盘,用了个软件叫: https://rufus.ie/
自己下载,然后各种安装添加ppa仓库,安装boot-repair工具,完全不好用。后来同事找到一篇帖子,需要修复EFI。。。
步骤如下:
尝试 EFI shell环境启动
开机总是停留在这里:
一般情况下进入 efi shell 后会显示 Device mapping table, 有时候会出现磁盘的信息,就是fs0,当出现的时候说明识别出了硬盘,但是无法引导。
在shell下面键入:
reconnect -r
重新连接控制器,出现成功后再执行map看看是否有磁盘列出来。
如果这样列出,就可以确认磁盘没有问题了,问题出现在grub上,由于设备是X86_64架构,而且又是用了EFI的启动模式,初步估计问题出在了grub-efi上。
Ubuntu U盘PE,大白菜修复盘~
利用烧录工具烧录Ubuntu16.04 镜像到U盘,软件已经上面提到,简单粗暴,还很小巧。
选择设备镜像文件然后选择U盘设备信息。
一路默认即可。
速度很快,也就几分钟就可以完成了,插到PPC上,按下F7, 这个很坑爹的操作尝试了好几次,才找到相应的启动选项:
通过USB启动后尝试检查设备是否有问题,能够挂载和读取设备内容说明没有问题。
检查了/boot分区的启动信息,看不出哪里出问题了,有点儿犹豫问题所在,决定还是重新构建grub信息。
这是检查了/etc/fstab文件系统挂载配置文件,没有啥问题,确认是grub的问题了。
再次重启,进入live CD,选择 Try Ubuntu without installing 进入Live OS。
进入系统后打开终端(快捷键Ctrl+Alt+T)这个是最常用的开终端的方式。
先来查看系统分区情况:
sudo fdisk -l sudo blkid df -Th 这个
系统2块硬盘/dev/sda
,两个分区,/dev/sda1
为 EFI 分区,/dev/sda2
为系统分区, /dev/sdb1 是存储数据的分区。
为chroot做准备:
1. 挂载分区
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
2. 挂载虚拟文件系统
系统上的/dev /proc /sys /run /dev/pts 这些是常见的虚拟文件系统,可以通过循环直接挂载到目标位置。
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
3. chroot 切换系统根目录
sudo chroot /mnt
4. 最关键的部分-修复引导信息
apt-get update
apt-get -y install grub-efi
grub-install --target=x86_64-efi --efi-directory=/boot/efi
update-grub
--target
指定系统结构
--efi-directory
指定 EFI 分区挂载点
update-grub 更新grub信息
Grub重新安装后,重启:
成功登陆,心里就想骂,这个EFI好鸡肋。
帮助参考文献
https://help.ubuntu.com/community/Grub2/Installing#via_ChRoot
转载记得标明出处,你妹的,打字很累的。白了个白。