我的遭遇


出于学习的需求,前段时间在电脑上安装了Ubuntu20.4,由于电脑硬盘空间只有256G,所以选择把Linux安装到移动硬盘上。
最开始电脑默认启动windows10,如果想要进入Linux Ubuntu,需要在开机界面按F12进入操作系统选择界面,通过键盘手动选择Linux。这样的操作方式符合我现阶段的使用需求,即大多数情况下默认使用windows10,少部分情况启动Linux。所以这也是本文最终修复的状态。
然而好景不长,不知是因为windows自动更新了,还是Linux无帮助自动更新了,在使用了大概半个月后,开机界面会显示grub,无法正常进入任何一个操作系统,很是崩溃!

尝试的解决办法(都不完美,完美方法见下面)


  1. 在grub界面输入命令
    最开始在网上看到一众帖子都是在grub界面敲击命令修复的。大概意思是:让输入ls命令查看磁盘使用情况,再使用root命令指定启动的盘区等等。一顿操作下来发现grub根本没有上面的个别命令!再看这些帖子发表的年代都是2010年前后的,所以我猜测是版本问题,现在我的grub版本是grub 2.4,估计删掉了一些命令。
    结果:失败QAQ
  2. 按f12手动选择启动的系统
    这种方式需要在每次开机一启动的时候就立即摁下F12,然后通过键盘手动选择想要启动的操作系统,确实可以正常的进入任何一个操作系统,但操作比较繁琐,每次开机的时候都必须要看准时机,稍有不慎就可能进错操作系统,还需要重启浪费很多的时间。
    但到这一步,最起码我们可以顺利进入两种操作系统,这就为后面的解决办法打下了基础
    结果:凑合能开机,但比较繁琐
  3. 使用boot-repair工具
    boot-repair是Linux下的一个引导程序修复工具,使用的是图形化操作界面,安装和使用都很方便,具体可以看Win10+Ubuntu双系统修复Ubuntu系统引导
    boot-repair界面
    但这种方式对于我来说还是有一点问题,系统还是默认先启动linux,然后在Linux的多系统选择界面选择需要启动的操作系统。但我的Linux安装在移动硬盘上,也就是说我必须让电脑连着移动硬盘才能顺利开机,否则还是会进入grub界面。
    当然,如果你后期希望使用Linux作为主力操作系统,并且Linux安装在电脑自身硬盘上的话,这种方法就是可行的。
    如果希望调整Linux多系统选择界面里操作系统的排列顺序,我会在下一篇文章里写一下,这里先挖个坑(●’◡’●)
    结果:可行,但不是我现在想要的

完美的解决办法


上面的三种方法都没有达到我想要修复的状态(即默认启动windows时,想要进入Linux就手动按F12)。在经过几天记得尝试和摸索之后,我发现最终完美的解决办法简洁的出乎意料!仅仅需要下载一个exe软件,鼠标点几下即可。
先说办法,后面附上原理。

  1. 开机界面按F12进入win10
  2. 下载EasyUEFI,并安装
    官方下载链接:EasyUEFI - Download
    如果官网嫌慢,可以百度下载国内一些软件网站的,不过小心别顺便安装了流氓软件!
  3. 打开EasyUEFI,点击管理EFI启动项
    在这里插入图片描述
  4. 修改 启动序列
    我们看到当前启动序列中,Ubuntu是排在Windows上面的。现在要将Windows修改到Ubuntu上面
    ①选中Windows Boot Manager ②点击向上的绿色箭头
    在这里插入图片描述
  5. 关机重启,问题解决ε=ε=ε=( ̄▽ ̄)
    这次没有进入grub界面,直接启动win10,这就是我想要的。
     
     

原理


这是一个安装了双系统之后才会出现的问题, Grub(GRand Unified Bootloader,直译就是“大一统启动加载器”)是Linux的引导程序,它的功能是:寻找操作系统内核并加载其到内存。(Windows中并没有这个程序,但Windows也有类似的工具叫NTLOADER,如果同时安装了win10和win7就会用到)
如果对grub的运行原理有兴趣,可以阅读下这篇文章:Linux 开机引导和启动过程详解
grub用来引导装载操作系统,但它属于Linux的一部分,出现了grub说明已经默认加载了linux,只是让Linux选择继续进入自己还是进入别的操作系统
还有比grub更底层的,那就是完美解决办法里提到的EFI(Extensible Firmware Interface,可扩展固件接口),它担负着初始化硬件,检测硬件的功能,按下电源键加电后,处理器的第一条指令的地址会被定位到EFI BIOS的存储器中。出现grub说明EFI首先启动里Linux,只要让EFI首先启动Windows,grub就不会启动,也就没有grub问题了!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐