装系统,尤其是双系统,总是无法绕过引导的坑。

linux的grub是非常复杂的引导系统,学习它非常累。而windows又不能引导linux。你可能会想,怎么就没有一种简单的引导方式,就好像引导光盘,引导u盘那样,插上去就能用呢?

因为传统的mbr引导设计得很小气,所以多个系统都拼命争夺那个小小的引导区域,而自己却又不懂得引导对方,所以就相互伤害,相互覆盖引导。但是,uefi横空出世,比较好的解决了这个问题。

但是如果你不熟悉uefi的原理,那么你会觉得这个uefi更加坑爹。电脑的东西,一定要先熟悉其原理,而不是浑水摸鱼,随便瞎搞,这样是没结果的。

uefi引导有两个条件:

1.有个引导区,叫ESP。

2.每个分区都是gpt分区格式的。这个分区格式是指用了新的分区表。

uefi可以兼容mbr传统格式,但没必要!旧的东西就是要被淘汰的。所以现在uefi的复杂性是因为兼容mbr,如果不去兼容,才能体现uefi的便利。

首先要在bios里面关闭兼容模式,csm 关了。安全启动也关了。然后能选的都选uefi。

设好之后,才是纯粹的uefi环境。

为什么uefi 引导会比较方便呢?因为以前是所有操作系统,都争夺一块小区域,现在uefi直接给你一个引导分区,每个系统只要把引导文件按照规定放在各自的文件夹,就ok了,大家相互可以不认识,也可以不知道对方是谁,也可以不知道怎么引导对方。这岂不是很完美?

esp就是这么一个地方,它实际上是一个普通的fat16格式(或fat32)分区(win98之前的默认格式),这种格式,几乎每个操作系统都认识,都能操作,所以就很便利。但是为了避免受到破坏,进入系统之后,系统会对其进行隐藏,所以要用特定的工具来访问它。

知道原理之后,就很容易设计引导方案了。

事实上,对windows来说,引导只需要两个文件,一个是引导程序,一个是配置文件。其中引导程序,只需要复制,而配置文件叫bcd,通过一个叫easybcd的工具可以配置。

当然,第一步你的硬盘必须先格式化为gpt格式的。但是如果你已经格式化了,也没关系,可以通过diskgenius的免费软件来转换成gpt格式,操作得当不会破坏数据。

esp分区新建如下目录结构:

efi/boot/

efi/microsoft/boot/

将windows系统里面的bootmgfw.efi 复制到第二个路径下,把配置好的bcd也复制过去。然后把bootmgfw.efi 复制一份,改名bootx64.efi复制到第一条路径下。

就这么简单,甚至第二步也不是必须的。bootx64.efi这里是计算机默认启动的路径,而microsoft下面的,是微软这个品牌的系统所使用的启动路径,如果bios足够聪明,它会直接在microsoft下面找引导程序.efi。

对于linux来说,同样的,它也可以建立一个linux的文件夹,或者随便什么名字的文件夹,把引导文件放进去就可以了。

特别的,bios 内部的存储区域还可以存储相关的引导路径信息(需要相关工具来设置这块区域),方便用户选择。所以为何有些系统的引导文件布局和以上有所不同。

除了esp分区,其他任何分区,都可以独立的被引导,甚至可以跨设备引导,因为gpt用一个很长的标记标识所有设备,可以认为是无冲突,独一无二的,因此理论上,不管引导文件存在那里,从那里开始引导,只要给出正确的设备号,都能找到对应的设备,从而进行正确的引导。因此,理论上当前设备esp有没有,也不是关键,只要在某个设备上有,这个引导程序可以引导所有连接到硬件系统的设备。这也是uefi 和gpt分区系统真正强大的地方,真正做到了随意引导,与位置无关。

比如我们可以把引导放在一个u盘里面,然后插上这个u盘才能使用电脑,这也是挺有趣的实践。不过我没试过。大家可以尝试一下。

UEFI引导的简单恢复方法的更多相关文章

  1. 图解MBR分区无损转换GPT分区+UEFI引导安装WIN8.1

    确定你的主板支持UEFI引导.1,前期准备,WIN8.1原版系统一份(坛子里很多,自己下载个),U盘2个其中大于4G一个(最好 准备两个U盘)2,大家都知道WIN8系统只支持GPT分区,传统的MBR分 ...

  2. UEFI引导在GPT分区下安装win2008——抓住那只傲娇的win2008

    上周遇到个客户DELL R520的服务器新采购了8块3T硬盘做备份服务器,raid配置5+1,一个磁21.8T.先用普通的装desktop OS的方法发现进去没raid盘,然后就按照官方的文档进入Li ...

  3. SQLServer 2008以上误操作数据库恢复方法——日志尾部备份(转)

    问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这 ...

  4. [转]SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...

  5. UEFI引导修复教程和工具

    参考 http://bbs.wuyou.com/forum.php?mod=viewthread&tid=323759 1. MBR分区表:Master Boot Record,即硬盘主引导记 ...

  6. Eclipse默认配色的恢复方法

    Eclipse默认配色的恢复方法 很多搞开发的同学一开始不喜欢默认的eclipse白底配色,去网上千辛万苦搜到了很多黑底暗色的各种eclipse配色然后import上了,之后却发现并不适合自己,想找默 ...

  7. UEFI引导系统

    UEFI引导系统 1 2 3 4 5 6 7 分步阅读 现在的电脑大多数使用了UEFI引导系统(原来都是使用BIOS),从而加快启动速度,但同时也给用惯BIOS的用户带来很多困惑!为啥电脑不能识别制作 ...

  8. SQLServer 2008以上误操作数据库恢复方法

    解决方法:       对于这类问题,主要是找回误操作之前的数据,在2008之前,有个很出名的工具Log Exploer,听说还挺好用的,这个网上大把教程,这里就不多说了.但是唯一遗憾的是,不支持20 ...

  9. SQL Server 2008以上误操作数据库恢复方法——日志尾部备份

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...

随机推荐

  1. 聊一聊C# 8.0中的await foreach

    AsyncStreamsInCShaper8.0 很开心今天能与大家一起聊聊C# 8.0中的新特性-Async Streams,一般人通常看到这个词表情是这样. 简单说,其实就是C# 8.0中支持aw ...

  2. Asp.Net Core 轻松学-多线程之取消令牌

    前言     取消令牌(CancellationToken) 是 .Net Core 中的一项重要功能,正确并合理的使用 CancellationToken 可以让业务达到简化代码.提升服务性能的效果 ...

  3. 阿里云重磅发布DMS数据库实验室 免费体验数据库引擎

    2月27日,阿里云数据管理DMS发布年度巨献——数据库实验室,用户可在该实验室环境下免费体验数据库引擎.以及DMS各项产品功能.数据库实验室是DMS所提供的体验空间,免费赠送数据库引擎资源. 用户只需 ...

  4. mysql 服务【安装】【启动】【停止】【卸载】【重置密码】

    windows安装:一.一机安装多个服务时,重复步骤,修改服务名即可: 1.mysqld install mysql_12336 --defaults-file="MYSQL_HOME\my ...

  5. SQL Server中是否可以准确获取最后一次索引重建的时间?

    在SQL Server中,我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢?  答案是我们无法准确的找到 ...

  6. 深入分析Java I/O 工作机制

    前言 :  I/O 问题是Web 应用中所面临的主要问题之一.而且是任何编程语言都无法回避的问题,是整个人机交互的核心. java 的I/O类操作在java.io 包下,将近80个子类, 大概可以分成 ...

  7. Video/Audio禁止快进(退)

    首先接着上个随笔.上个随笔主要介绍了视频音频的相关操作.属性和方法.这里主要记录一个应用:禁止快进(快退同理). 思路:监听快进事件(此处是监听播放时间更新),利用一个缓存的时间和播放到的时间进行对比 ...

  8. docker 备注

    1.docker 安装 #安装环境为centos yum -y install docker service docker start #测试是否安装成功,可执行命令 docker run hello ...

  9. java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener异常解决

    在启动Dubbo项目时,出现该异常 java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener 解决,引入 <d ...

  10. pandas 获取数据帧DataFrame的行、列数

    1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B']], index=['row_0', 'row_1'], ...