本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/grub_uefi_repair

起因:EFI分区被删除导致引导问题。

症状:

  1. 通过安装其它系统的方式。正好想试试其它的linux发行版,就在另一个分区装了deepin,完成后硬盘没有发现UEFI引导;然后又尝试装了openSUSE,仍没在硬盘发现UEFI引导。(失败)

  2. 通过live cd重新在efi分区安装grub。(wiki推荐的一般方式,仍失败)

  3. 通过live cd安装refind。(仍不行)

  4. 安装的系统可以通过manjaro live cd直接boot。

  5. 安装win10可以发现UEFI的引导方式(只启动win10,安装grub也只启动win10)

引导的问题网上的解决方案很多,对于一些新的电脑UEFI的方式应该很好修复,但一些比较老的电脑可能出现各种坑问题,用legacy的引导还是稳定一点。

UEFI的引导通过grub的各种安装尝试都无法被主板识别,一直检测不到硬盘UEFI的启动项。怀疑主板并不支持linux grub2写入的UEFI引导信息,只支持windows的。最后通过安装win10,用refind覆盖win10的efi启动条目解决问题。

最常规的修复方式 通过live cd

将系统烧入U盘,启动U盘进入系统后修复。涉及两种方式:

  1. 通过boot-repair
  2. grub-install 命令安装

还有通过grub命令行的方式,不常用没折腾。

建议烧入的系统为ubuntu和manjaro。deepin的live cd在我的电脑上有显示的bug,而且添加ppa有一点坑。openSUSE上的grub命令和debian系arch系不怎么一样。ubuntu的主要优点在于可以通过安装boot-repair进行一键修复,manjaro和arch的live cd提供了直接的manjaro-chroot以及arch-chroot,进入后直接安装grub就行,而且manjaro的live cd支持直接引导启动efi分区中的系统。

在下面的两种操作之前,最好通过gparted等软件新建一个efi分区(fat32,一般几十兆,openSUSE建议不小于500M,带efi标签)。

基于ubuntu的boot-repair

网上的资料多操作也不复杂,主要注意U盘从UEFI模式启动。

sudo add-apt-repository ppa:yannubuntu/boot-repair -y
sudo apt-get update
sudo apt-get install boot-repair -y
sudo boot-repair

grub-install 命令安装

使用manjaro live cd,其它的系统可能需要安装grub2、efibootmgr、grub-efi-amd64、os-prober等包。

以下需要root权限,sudo -i或命令前加sudo

1、 查看要引导系统的分区和efi分区的编号(fdisk -l
2、 挂载引导系统的分区(一般 mount /dev/sda4 /mnt
3、 挂载efi分区到系统分区的/boot/efi目录(`mount /dev/sda2 /mnt/boot/efi)
4、 chroot到硬盘系统分区

对于ubuntu

mount --bind /dev/ /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt

对于manjaro直接

manjaro-chroot /mnt

5、 安装grub

grub-install --target=x86_64-efi /dev/sda2  # target默认是x86_64-efi
grub-grub-mkconfig -o /boot/grub/grub.cfg
update-grub

各种操作和问题

上面的操作在一般较新的电脑上就能启动了。

refind 引导程序

可以在启动时动态检查和引导所有硬盘里efi分区里的配置,还可以设置各种主题。grub每次只能识别efi分区EFI目录下的某一个写好的配置。

安装后直接运行refind-install脚本即可,也可以指定efi分区。

安装完仍默认启动win10

UEFI支持一种安全模式,win10会独占UEFI,双系统时需要在win10中关闭安全启动。(没碰到,具体资料可搜)。

其次,修改efi的引导顺序,进入win10后,使用bcdedit命令

bcdedit /enum  # 查看引导
bcdedit /default {12277df3-07da-11e8-a54c-9f200771404e} # 设置默认项 # 如果上面的设置默认没有用,可以暴力修改windows的引导文件到其它的引导文件
# refind可以改为其它的系统
bcdedit /set {bootmgr} path \EFI\refind\refind_x64.efi

win10启动几次就让grub引导消失的问题

win10会默认修改UEFI的引导顺序。

好像是win10 系统配置->常规 里的最后一个勾,用了上面的方式后,没怎么遇到这个问题。

启动时仍没有UEFI引导选项的问题

一般上面的操作能解决绝大多数电脑的,我的2代i3电脑开机f12的启动菜单中,怎么安装linux都出现不了UEFI菜单,但安装windows能,于是一般先装windows再改默认引导…

一次windows的UEFI在装完系统第一次启动后也不显示无法选择,在BIOS里设置只允许UEFI启动,竟然启动了….

更坑爹的是,双硬盘时启动不了,通过换sata线的接口就启动了…

一次修复linux的efi引导的集中方法总结记录的更多相关文章

  1. 日常系统维护之修复linux的grub引导

    恩,不知道怎么表达为win10的更新很烦人,其实我感觉windows用的不是那么顺手,但是制作视频的时候还是要用到,图片的话linux也可以胜任,毕竟GUN IMAGE还是挺不错的,但到了视频制作方面 ...

  2. kali linux 更新软件源,安装中文输入法,修复Linux与windows引导菜单解决windows引导丢失

    1. 更新软件源打开sources.list文件,进行添加更新源:leafpad /etc/apt/sources.list 2. 添加软件源#官方源 deb http://http.kali.org ...

  3. 修复linux的grub2引导(单独/boot,lvm-root)

    root@ubuntu:/home/ubuntu# pwd /home/ubuntu root@ubuntu:/home/ubuntu# lsblk NAME                  MAJ ...

  4. 重装Windows后修复Linux引导

    装了双系统(Windows和Linux)的机器重新安装Windows后会导致Linux的引导丢失而无法进入原先的Linux系统[其原因是Windows会覆盖原先MBR中的Linux的BootLoade ...

  5. fsck 工具 ——检查 与修复 Linux系统上的文件系统

    可能由于昨天关电脑断电源的问题, 后来开机,直接出现如下界面: 心里想,不会吧,电脑怎么又出问题了吧(上周的时候,手贱,把装系统的硬盘分区设为了非活动分区,电脑就启动不来了,后来手动引导起来的:): ...

  6. 82 fsck-检查与修复 Linux 档案系统

    Linux fsck命令用于 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统. 语法 fsck [-sACVRP] [-t fstype] [--] [fsck-opt ...

  7. 使用EFI引导从硬盘(U盘)安装Win7的图文教程

    目前仅支持vista后的64位系统 大部分使用EFI引导安装Win7的教程都是采用光盘启动安装,虽然光盘安装比较简单,但是对于没有光驱的朋友来说还是相当不便,更不用说光盘安装的两大缺点了,一速度慢,二 ...

  8. Mac OS 挂载 EFI 引导分区

    正如Windows下的EFI分区一样在资源管理器中默认不显示EFI引导分区(即ESP分区),Mac OS也是如此,为了安全嘛,不让用户随意操作. 那么怎么挂载显示出来呢? 命令转自 https://b ...

  9. 双系统卸载linux和装双系统的方法

    卸载linux系统: 因为本人装的是windows和Ubuntu,所以引导程序在linux系统里,linux系统可以引导windows系统,而Windows不能引导linux,所以需要修改引导程序,使 ...

随机推荐

  1. 微信JS-SDK实现分享功能

    1 申请一个微信公众号,并确认在开发–接口权限中拥有分享功能的权限. 2 公众号设置–功能设置:在JS接口安全域名中添加安全域名,这个安全域名不是url,只需添加一级域名即可. 3 开发,基本配置中, ...

  2. JDBC简单增删改查实现(单表)

    0.准备工作 开发工具: MySQL数据库, intelliJ IDEA2017. 准备jar包: mysql-connector-java-5.1.28-bin.jar(其他均可) 1. 数据库数据 ...

  3. Java自学-类和对象 引用

    什么是Java中的引用? 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 步骤 1 : 引用和指向 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建 ...

  4. RHEL6搭建网络yum源软件仓库

    RHEL的更新包只对注册用户生效,所以需要自己手动改成Centos的更新包 一.查看rhel本身的yum安装包 rpm -qa | grep yum 二.卸载这些软件包 rpm -qa | grep ...

  5. IDEA自动清理优化import包

    IDEA自动清理优化import包 直接上图: Add unambiguous imports on the fly:快速添加明确的导入. Optimize imports on the fly:快速 ...

  6. 英文FRAUNCE法国FRAUNCE单词

    France Alternative forms Fraunce In Fraunce, the inhabitants of one city were driven out and forced ...

  7. Spring 实战 第4版 读书笔记

    第一部分:Spring的核心 1.第一章:Spring之旅 1.1.简化Java开发 创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB.相对EJB来说,Spring提供 ...

  8. 【OGG】OGG简单配置双向复制(三)

    [OGG]OGG简单配置双向复制(三) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O ...

  9. zookeeper的安装使用

    转载从:https://blog.csdn.net/shenlan211314/article/details/6170717 一.zookeeper 介绍 ZooKeeper 是一个为分布式应用所设 ...

  10. django的缓存实例应用

    那么多的可配置方法,我们用那个呢. 首先在setting中配置你想要的缓存,我这里就用文件的方式是配置.如图: 第二步: 第三步: 第四步:  实现结果: 总结: 都是指明当前资源的有效期,控制浏览器 ...