这里均以64位系统(windows和linux均是),gpt分区,UEFI引导作为例子,现在基本上不会不支持吧。

windows下UEFI引导文件的载入顺序

主板启动windows的一般有两种方法:

windows boot manager启动

硬盘直接引导启动

主板bios中分别是途中前两项(第二项是你自己的硬盘名称,我这里是vmware虚拟机的SCSI硬盘,后面的四个不用管)

在安装windows的时候,系统会位我们建立一个ESP分区,大约200M到300M左右,里面的目录结构大概是这样的:(使用diskgenius等软件可以读取内部文件)

EFI

├── Boot

│ └── bootx64.efi

└── Microsoft

├── Boot

│ ├── BCD

│ ├── bootmgfw.efi

└── Recovery

这里我省略了一些字体等其他文件,只列出了主要的文件

方法1,即windows boot manager 进入系统

① 启动程序会找到指定GPT硬盘的fat格式的分区(fat32、fat16等),即esp、efi分区(别名而已)

注意是指定的GPT硬盘,这里是windows创建它的boot manager时已经写入了nvram,告诉他去哪块硬盘找。

② 寻找EFI/Microsoft/Boot/bootmgfw.efi 文件

③ bootmgfw.efi文件去寻找 EFI/Microsoft/Boot/BCD 文件

通常,bcd文件中里面可以放入一些不同的启动项供用户选择启动,如windows双系统,PE等的启动项,具体看下图:

④ 当你选择了启动windows后,BCD文件会找到对应分区(大部分人应该是C盘)下的\Windows\system32\winload.efi 文件

⑤ 由winload.efi加载完成windows系统

方法2,即选择硬盘启动

① 启动程序会寻找这块硬盘的的EFI分区

② 寻找EFI/Boot/bootx64.efi 文件

③ bootx64.efi文件去寻找 EFI/Microsoft/Boot/BCD 文件

接下来步骤和方法1一样。

按照上面的步骤来看,bootx64.efi和bootmgfw.efi好像是同一个文件,实际上他们确实是同一个文件,即想要正常启动系统,BCD文件是必须有的,而bootx64.efi和bootmgfw.efi两个文件二选一保留下来就行了。

同样,当你把硬盘拔下来插入别的电脑,一般可以直接使用方法2启动硬盘里的windows(这里忽视了驱动问题)

接下来就是安装linux,这里我安装的是archlinux

根据arch的官方wiki安装,我这里分出了三个分区

swap分区、根目录分区、home目录分区

已经存在的EFI分区挂载点为/boot/efi

即这样顺序(这里以上文说的bootx64.efi的路径为例子):/boot/efi/EFI/boot/bootx64.efi

最后生成grub引导的代码,两行

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=archlinux

grub-mkconfig -o /boot/grub/grub.cfg

这些代码再Arch Linux的官方wiki都可以找到

重启进入主板bios会发现多了个archlinux的启动项,等级和性质和windows boot manager一样

并且你会发现EFI分区下的EFI文件夹下多了个archlinux文件夹

接下来进入linux系统

sudo vim /boot/grub/custom.cfg

在里面加入windows的启动项(就是把上文的两个efi文件任意一个加入linux的grub引导中):

menuentry "windows 10" {

search --no-floppy --fs-uuid --set=root 自己的fs_uuid

chainloader /EFI/Microsoft/Boot/bootngfw.efi

}

其中“自己的fs_uuid”使用blkid命令查看,如图:

这里我的efi分区为/dev/sda1,所以可以看到是38A0-4EA3

我这里是使用bootngfw.efi文件,你也可以使用bootx64.efi,但是有时候该文件可能会被你新装的linux更改成指向linux系统,比如安装manjaro(archlinux分支,图形安装界面),一路下一步后,安装完,EFI文件夹里面会多一个manjaro文件夹,以及顺带着把bootx64.efi文件改了,导致你用方法2启动系统默认进入的是linux系统。

同时可以加入

menuentry "System shutdown" {

echo "System shutting down..."

halt

}

menuentry "System restart" {

echo "System rebooting..."

reboot

}

分别是关机和重启选项,以下是效果图

linux双系统uefi启动顺序,UEFI下Windows启动引导的顺序(附带linux双系统)相关推荐

  1. UEFI下windows启动过程

    引导文件  在UEFI安装完操作系统后,Windows至少使用两个分区,一个叫做ESP分区(EFI SYSTEM PARTITION),用于存放启动文件,另一个则是BIOS下正常的系统分区,不同的是, ...

  2. 为双系统 Ubuntu grub启动项中添加Windows启动项

    终端依次执行下面命令 sudo grub-install /dev/sda sudo chmod -x /etc/grub.d/30_os-prober sudo gedit /etc/grub.d/ ...

  3. windows与Linux实时传输数据,I01 物理隔离条件下Windows与Linux服务器的文件传输脚本...

    title: I01 物理隔离条件下Windows与Linux服务器的文件传输脚本author: Adolph Leecategories: 进阶tags: paramiko打怪升级mathjax: ...

  4. 计算机不能启动 无法验证数字签名,windows启动管理器,状态0xc0000428 无法验证此文件的数字签名解决办法。...

    最近有很多网友将新机型win10重装win7后出现windows 启动管理器报错问题,经过分析是由于新机型,采用的是inter 7代以上CPU,该问题主要安全启动没有关闭造成,默认新机型不支持直接重装 ...

  5. linux uefo引导 win_基于UEFI和GPT模式下U盘安装windows8.1和Linux双启动教程

    首先作以下准备: 1.一个8G以上的U盘,用的时候会格式化,建议为空 2.分区助手软件,官网下载链接 3.一个linux系统,这里用同学推荐的Fedora 26,官网下载链接 4.rufus 创建U盘 ...

  6. w7下如何安装linux双系统,ubuntu安装教程(下): 教你装win7+Ubuntu双系统

    今天突发的想装个双系统玩玩,原来我ubuntu和win8都是装在虚拟机里面的,感觉用起来很不方便,而且感觉用起来特别不流畅,所以就想装个win7+ubuntu的双系统. 原来是想把ubuntu直接wu ...

  7. WIN7下用EasyBCD引导Ubuntu15.04硬盘安装双系统

    当一个android程序员想进一步了解android知识的时候,就不得不开始学习Linux.用惯了windows系统,又要用学习linux,要么window下装虚拟机,要么装个双系统.个人感觉装虚拟机 ...

  8. 深度linux怎么备份系统下载,在Deepin 20下安装和配置timeshift并用它自动备份系统...

    本文介绍在Deepin 20系统下安装timeshift的方法,并配置timeshift来自动备份Deepin 20系统.有了这个备份,你就可以放心的处理系统了,真要把操作系统的文件搞坏了也可以恢复的 ...

  9. linux下修复win8引导文件,微软为推广win8系统linux删除文件的修复技巧

    想必大家都遇到过win8系统linux删除文件的问题吧,大多数朋友还不知道怎么处理虽然解决方法很简单,但是大部分用户不清楚win8系统linux删除文件到底要如何搞定.最近有不少用户到本站咨询win8 ...

最新文章

  1. Java集合干货——ArrayList源码分析
  2. Python:值传递,引用传递?不存在的,是赋值传递
  3. 转载:opencv错误rect错误
  4. pstools psexec 执行文件
  5. [NewLife.XCode]数据初始化
  6. 数据压缩之经典——哈夫曼编码(Huffman)
  7. 死循环线程php,QObject的派生类方法实现多线程死循环问题
  8. 安装gunicorn
  9. web前端开发,自学的流程可以怎样?
  10. Java 数据类型及转换
  11. 图数据库 Titan 快速入门
  12. 计算机桌面常见故障,电脑桌面的常见问题及解决办法
  13. 网站快照被劫持解决办法:织梦程序
  14. 盘点市场营销工作中的5个办公神器
  15. 2015年第4本(英文第3本):Godfather教父
  16. vue3中的provide/inject(提供/注入)
  17. 中国农业大学专业学位计算机,中国农业大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  18. python scratch 图形化_走进Scratch图形化编程
  19. 7-47 说反话-加强版
  20. 【LEAP模型】能源环境发展及碳排放建模预测及不确定性分析

热门文章

  1. 动网8.3 整合 个人网站
  2. ECSHOP去版权教程
  3. 前端入门Python
  4. 机器学习(六)--------python实现朴素贝叶斯对email分类
  5. 支持自动打怪(内挂)的网游,更新日期15.3.2
  6. 由MAVEN入手浅谈项目构建与管理
  7. Python将Qt的ui文件转成py代码文件
  8. 常见算法之Flood Fill算法
  9. javaweb技术及应用QST
  10. Unity Failed to load ‘Sssets/Plugins/xxx.dll with error 找不到指定的模块