从损坏的 Linux EFI 安装中恢复

在过去的十多年里,Linux 发行版在安装前、安装过程中、以及安装后偶尔会失败,但我总是有办法恢复系统并继续正常工作。然而,Solus 损坏了我的笔记本。

GRUB 恢复。不行,重装。还不行!Ubuntu 拒绝安装,目标设备的报错一会这样,一会那样。哇。我之前还没有遇到过像这样的事情。我的测试机已变成无用的砖块。难道我该绝望吗?不,绝对不。让我来告诉你怎样你可以修复它吧。

问题详情

所有事情都从 Solus 尝试安装它自己的启动引导器 - goofiboot 开始。不知道什么原因、它没有成功完成安装,留给我的就是一个无法启动的系统。经过 BIOS 引导之后,我进入一个 GRUB 恢复终端。

安装失败

我尝试在终端中手动修复,使用类似和我在我详实的 GRUB2 指南中介绍的各种命令。但还是不行。然后我尝试按照我在 GRUB2 和 EFI 指南中的建议从 Live CD 中恢复(LCTT 译注:Live CD 是一个完整的计算机可引导安装媒介,它包括在计算机内存中运行的操作系统,而不是从硬盘驱动器加载;CD 本身是只读的。 它允许用户为任何目的运行操作系统,而无需安装它或对计算机的配置进行任何更改)。我用 efibootmgr 工具创建了一个引导入口,确保标记它为有效。正如我们之前在指南中做的那样,之前这些是能正常工作的。哎,现在这个方法也不起作用。

我尝试做一个完整的 Ubuntu 安装,把它安装到 Solus 所在的分区,希望安装程序能给我一些有用的信息。但是 Ubuntu 无法完成安装。它报错:failed to install into /target。又回到开始的地方了。怎么办?

手动清除 EFI 分区

显然,我们的 EFI 分区出现了严重问题。简单回顾以下,如果你使用的是 UEFI,那么你需要一个单独的 FAT-32 格式化的分区。该分区用于存储 EFI 引导镜像。例如,当你安装 Fedora 时,Fedora 引导镜像会被拷贝到 EFI 子目录。每个操作系统都会被存储到一个它自己的目录,一般是 /boot/efi/EFI/<操作系统版本>/

EFI 分区内容

在我的 G50 机器上,这里有很多各种发行版测试条目,包括:centos、debian、fedora、mx-15、suse、Ubuntu、zorin 以及其它。这里也有一个 goofiboot 目录。但是,efibootmgr 并没有在它的菜单中显示 goofiboot 条目。显然这里出现了一些问题。


  1. sudo efibootmgr&nbsp;-d /dev/sda
  2. BootCurrent: 0001
  3. Timeout: 0 seconds
  4. BootOrder: 0001,0005,2003,0000,2001,2002
  5. Boot0000* Lenovo Recovery System
  6. Boot0001* ubuntu
  7. Boot0003* EFI Network 0 for IPv4 (68-F7-28-4D-D1-A1)
  8. Boot0004* EFI Network 0 for IPv6 (68-F7-28-4D-D1-A1)
  9. Boot0005* Windows Boot Manager
  10. Boot0006* fedora
  11. Boot0007* suse
  12. Boot0008* debian
  13. Boot0009* mx-15
  14. Boot2001* EFI USB Device
  15. Boot2002* EFI DVD/CDROM
  16. Boot2003* EFI Network
  17. ...

P.S. 上面的输出是在 LIVE 会话中运行命令生成的!

我决定清除所有非默认的以及非微软的条目然后重新开始。显然,有些东西被损坏了,妨碍了新的发行版设置它们自己的启动引导程序。因此我删除了 /boot/efi/EFI 分区下面除了 Boot 和 Windows 以外的所有目录。同时,我也通过删除所有额外的条目更新了启动管理器。


  1. efibootmgr -b <hex> -B <hex>

最后,我重新安装了 Ubuntu,并仔细监控 GRUB 安装和配置的过程。这次,成功完成啦。正如预期的那样,几个无效条目出现了一些错误,但整个安装过程完成就好了。

安装的错误消息

安装的成功消息

额外阅读

如果你不喜欢这种手动修复,你可以阅读:

  • Boot-Info 手册,里面有帮助你恢复系统的自动化工具
  • Boot-repair-cd 自动恢复工具下载页面

总结

如果你遇到由于 EFI 分区破坏而导致系统严重瘫痪的情况,那么你可能需要遵循本指南中的建议。 删除所有非默认条目。 如果你使用 Windows 进行多重引导,请确保不要修改任何和 Microsoft 相关的东西。 然后相应地更新引导菜单,以便删除损坏的条目。 重新运行所需发行版的安装设置,或者尝试用之前介绍的比较不严谨的修复方法。

我希望这篇小文章能帮你节省一些时间。Solus 对我系统的更改使我很懊恼。这些事情本不应该发生,恢复过程也应该更简单。不管怎样,虽然事情似乎很可怕,修复并不是很难。你只需要删除损害的文件然后重新开始。你的数据应该不会受到影响,你也应该能够顺利进入到运行中的系统并继续工作。开始吧。

加油。



作者简介:

我叫 Igor Ljubuncic。38 岁,已婚,但还没有小孩。我现在是一个云技术公司的首席工程师,前端新手。在 2015 年年初之前,我在世界上最大的 IT 公司之一的工程计算团队担任操作系统架构师,开发新的基于 Linux 的解决方案、优化内核、在 Linux 上实现一些好的想法。在这之前,我是一个为高性能计算环境设计创新解决方案团队的技术主管。其它一些头衔包括系统专家、系统开发员或者类似的。所有这些都是我的爱好,但从 2008 年开始,就是有报酬的工作。还有什么比这更令人满意的呢?

从 2004 到 2008 年,我通过在医疗图像行业担任物理专家养活自己。我的工作主要关注解决问题和开发算法。为此,我广泛使用 Matlab,主要用于信号和图像处理。另外,我已通过几个主要工程方法的认证,包括 MEDIC Six Sigma Green Belt、实验设计以及统计工程。

原文发布时间为:2017-05-11

本文来自合作伙伴“Linux中国”

时间: 2024-10-25 17:30:01

从损坏的 Linux EFI 安装中恢复的相关文章

从损坏的Linux EFI安装中恢复

在过去的十多年里,Linux 发行版在安装前.安装过程中.以及安装后偶尔会失败,但我总是有办法恢复系统并继续正常工作.然而,Solus 损坏了我的笔记本. GRUB 恢复.不行,重装.还不行!Ubuntu 拒绝安装,目标设备的报错一会这样,一会那样.哇.我之前还没有遇到过像这样的事情.我的测试机已变成无用的砖块.难道我该绝望吗?不,绝对不.让我来告诉你怎样你可以修复它吧. 问题详情 所有事情都从 Solus 尝试安装它自己的启动引导器 - goofiboot 开始.不知道什么原因.它没有成功完成

如何从失败的Linux引导中恢复

大多数 Linux 计算机使用 Grand Unified Bootloader (GRUB) - 更具体的讲是 GRUB 2 - 来控制从计算机的固件到内核的转移.GRUB 2 提供了复杂的引导时用户交互功能,为您提供了控制引导过程的能力.您可能不想每天都使用这些功能,但它们在处理问题的时候很重要,比如计算机在执行内核升级.磁盘更换或其他系统更改后无法引导的时候.一些技巧和 GRUB 命令可帮助您在这些情形下引导计算机,节省宝贵的时间.您也可以使用紧急引导磁盘引导您正常的 Linux 系统,即

怎样在 Linux 系统中恢复已删除文件

怎样在 Linux 系统中恢复已删除文件 当用户意外地删除了一个仍然需要的文件时,大多数情况下,是没有简便的方法可以重新找回或重建这个文件.不过,幸运的是文件是可以通过一些方法恢复的.当用户删除了一个文件,该文件并没有消失,只是被隐藏了一段时间. 这里将解释它是如何工作的.在一个文件系统中,有一个叫做 文件分配表 的东西,这个表跟踪文件在存储单元(如硬盘, MicroSD 卡,闪存驱动器等等)中的位置.当一个文件被删除,文件系统将会在文件分配表中执行以下两个任务之一:这个文件在文件分配表上的条目

如何在Linux中恢复一个删除了的文件

你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件. 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置.但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了. 在这篇文章里,将分享一个很有用的技巧来避免此事发生.同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上. 把删除创建为 rm -i 的别名 当 -

如何在 Linux 中恢复一个删除了的文件

你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件. 在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置.但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了. 在这篇文章里,将分享一个很有用的技巧来避免此事发生.同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上. 把删除创建为 rm -i 的别名 当 -

linux环境安装了lua,但是php中class_exists判断为false,请问我该如何排查?

问题描述 linux环境安装了lua,但是php中class_exists判断为false,请问我该如何排查? 出错的代码如下,class_exists("Lua",false)为false,我在linux下输入lua,能够调用lua,请问我该如何进一步排查: public function getTableData($tableName) { $gameTable = array(); if (class_exists("Lua",false)) { $lua =

如何在 Linux Mint 16 中安装图标主题

如果你觉得默认的 Mint 主题和图标并不足以满足你,为何不来点改变呢?在这篇初学者快速教程中,我们会指导你如何在Linux Mint 16中安装图标主题以及如何改变图标.我们将通过安装绚丽的 Moka 图标主题来学习本教程. 小小提一下,可能你以前不知道,主题和图标主题之间是有区别的.图标主题只是改变图标的外观,而主题则改变了包括图标在内其余很多东西的外观. 在 Linux Mint 16 中安装图标主题: 在Linux Mint(以及其他大部分的Linux发行版)中有个两种方法来安装图标主题

简捷安装Tor浏览器到Ubuntu 14.04和Linux Mint 17中

简捷安装Tor浏览器到Ubuntu 14.04和Linux Mint 17中 牢记美国国家安全局对全世界政府和国民的窥视的尴尬结局吧,隐私日益成为许多人关心的焦点.如果你也关注在线安全性并想要保护自己不受网络监视,Tor项目是当前可用的最佳选择. Tor项目有它自己的Tor浏览器,该浏览器基于Firefox并开启了用户隐私保护配置,并通过捆绑Tor和Vidalia工具进行匿名访问..虽然你可以下载Tor浏览器并使用源码安装,但是我们将介绍一种更为便捷的方式,来将它安装到Ubuntu 14.04和

【阿里云】 ECS Linux 云服务器中安装 rinetd 进行转发实现本地通过公网访问云数据库 Redis

转载请注明出处http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天在阿里云买了一个月的云数据库Redis试试水一开始因为我选择的云数据库Redis是经典网络所以搭建好之后设置键值对会超时. (注意ECS服务器和Redis数据库在一个地区很重要) 注意的事项是 redis是经典网络的, ecs是专有网络的,这两者内网不通, 所以需要在redis控制台, 实例信息,基本信息,将redis切换到专有网络下即可连接. 注意: 1. redis切换到专有