Linux与Windows 10用grub引导教程

Linux与Windows 10用grub引导教程,第1张

去年暑假的时候,写了一篇如何装 Linux 和 Windows 10 双系统的文章发在了上,我写这篇文章的原因是当初装双系统确实是折腾了许久,网上也找不到一篇详尽的教程。由于去年对于写教程还不是熟练,而这一年多的使用过程也遇到了一些问题,所以就准备「Refactoring」这篇文章。

在教程正式开始之前,先花一点时间说明 EFI 分区的组成和作用。

首先,在你装了 Windows 之后,Windows 在装机过程中会将硬盘划分出一个约 100m 大小的分区,称为 EFI 分区这个分区就是起引导作用的。在资源管理器中是看不到的这个分区的,可以在磁盘管理中看到,管理则需要借助 DG 工具 。便于说明,在装好了 Linux 之后,我将 EFI 挂载至 boot 分区截图:

可以看到,该分区包含 3 个文件夹(如果你没有装 Linux 的话,就只有两个),分别是 Boot、Microsoft 和 Manjaro,其中 Boot 文件夹就是 UEFI 引导所必需的文件。

我们继续打开 Microsoft/Boot 文件夹:

这些文件就是启动 Windows 10 所必需的,包含了语言包、字体等,BCD 包含了 Windows 引导开始以后的信息。其中, bootmgfw.efi 是 Windows 默认引导文件

以上是采用 UEFI 启动 Windows 10 的文件结构,也就是说,当你按下开机按钮的时候,首先 UEFI 找到 EFI 分区的 Boot 文件夹,然后加载 bootx64.efi 文件,读取文件信息,找到 EFI/Microsoft/Boot/bootmgfw.efi ,按照 bootmgfw.efi 的要求,加载所需的启动信息,启动 Windows 10。

在正式装系统之前,我们还需要做一些准备工作:

这个功能的作用是在于关机的时候不完全断电,类似将系统处于「休眠」状态,这样可以让开机更加迅速。但这也就导致了只能使用 Windows 系统。

在默认情况下,UEFI 固件只会加载那些被签名的引导程序。在缺少 Secure Boot 功能的传统 PC 机上,恶意的后门程序可以加载自身,进而摇身一变伪装成一个引导程序。这样的话,BIOS 就会在启动的时候加载后门程序,这样它就可以躲过 *** 作系统,把自己隐藏得很深。

但是不得不说,这对我们安装 Linux 造成了很大的困扰,也是直接导致我们重启到 Windows 10 后进不去 Linux 的原因。

首先我们要关闭这个功能:进入 BIOS 找到 Secure Boot,选择 disabled,这样就关闭了。当然,有些人进入 BIOS 会发现 Secure Boot 这个选项是灰色的(比如我的就是),这时你需要先给你的 BIOS 设一个密码,然后就能关 Secure Boot 了。

所有的准备都已经完成,这时就可以准备刻录 U 盘了,不推荐 UltraISO,经亲测,软碟通仅刻录 Ubuntu 能成功,其它绝大多数发行版都会失败。推荐「 Rufus 」和「 USBWriter 」,这两个软件都可以。

刻录完成后,重启按 f12 ,选择从 USB 设备启动,对于绝大多数发行版来说一路回车就行了,只需要注意一点: 在选择挂载 boot 位置的时候,一定要挂载在 efi 分区 ,别的都不行。

重启之后,不出意外的话,你会直接进入 Windows 10,不要担心,这时 Linux 已经安装成功了,我们只需要将引导文件替换一下。

先用 DG 打开 EFI 分区,你会看到多了一个文件夹,名称取决于你安装的是哪一个发行版。我安装的是 Manjaro Linux,名称就是 Manjaro,打开之后会发现里面有一个名为 grubx64.efi 的文件,这就是启动 Linux 的引导文件。和 Windows 10 的 bootmgfw.efi 类似,我们想要用 grubx64.efi 引导代替掉 bootmgfw.efi,这样就可以用 GRUB 引导了。步骤:

至此,如果你安装的是除 Arch 之外绝大多数发行版,那么接下来就和你没有啥关系了,你已经成功了,好好享受吧!

开机之后会发现进入 GRUB 的引导了,通常会包含至少三个选项(以 Manjaro 举例):Manjaro、Manjaro 高级选项和 Windows Manager。这就代表你已经完美的解决了 Windows 和 Linux 双系统引导的问题。

这一点是我安装 Arch Llinux 的时候发现的,Arch Linux 安装过程是手动安装的,在编写 GRUB 的时候会扫描不到 Windows Manager 所在的分区(当然可能不是所有人都会遇到),所以在 GRUB 界面可能会看不到 Windows Manager 选项,导致进不去 Windows 10,这里就需要手动编辑 GRUB 信息,我们打开 /boot/grub/grub.cfg 文件,发现里面确实没有 Windows 10 的启动信息,在后面加上:

注意

这里的 $hints_string ,代表的是终端执行命令:

后的输出;

而 $fs_uuid 代表的是:

的输出。

然后保存。在终端执行命令: sudo grub-mkconfig -o /boot/grub/grub.cfg ,就 OK 了。

到此,Arch Linux 和 Windows 10 双系统也配置完毕了。

在使用这一年多的时间,遇到了以下的几个问题:

最后:祝使用愉快。

第一步:\x0d\x0a当然是下载Ubuntu了,我是在Ubuntu官网下载的原生版本,我下载的是Ubuntu最新版本15.04。没有选择国人修改过的kylin版本。kylin好不好我完全不懂,只是习惯性的觉得国人做系统不放心,就连修改下我都不放心。\x0d\x0a\x0d\x0a第二步:\x0d\x0a制作u盘启动盘。我用的是UltraISO这个软件制作的启动盘, *** 作很简单,为了增加文章篇幅,我就简单贴两张图吧。(这地方写入方式的选择,默认是USB-HDD+,我也是这么选择的,但是有人说应该选择USB-ZIP+。具体我不懂,不过我按照我选择的能够安装成功。)\x0d\x0a\x0d\x0a *** 作很简单,就是选择好你的iso文件,然后启动-制作硬盘启动,不清楚的话就百度一下咯。\x0d\x0a\x0d\x0a第三步:\x0d\x0awindows系统下为Ubuntu准备一个空闲分区。 *** 作也很简单,找一个不用的盘,空间别太小,然后用windows自带的磁盘管理工具来压缩分区。我自己是为Ubuntu准备了100G大小的空间,这个自己根据需求设定。\x0d\x0a\x0d\x0a第四步:\x0d\x0a重启电脑安装Ubuntu系统。lenovo重启时按F12选择启动位置,这个各个品牌按照自己品牌的按键来,跟U盘安装win7、win8一个道理。重点需要说明的地方就是Ubuntu分区。在安装过程中需要选择位置,我们就选择之前专门为Ubuntu压缩的那个分区,可以看到那个分区说明写着“空闲”,所以还是比较好区分的。然后就是分区了,参考了网上一些人的说法,然后根据自己的笔记本我做了如下设置(手机渣像素,估计看不清,我再陈述一下吧)。首先是“/”挂载区,我分了30G;然后是SWAP,我分了8G,这个跟内存有关,我看完网上很多人设置的是2G,我自己笔记本物理内存12G,2G会不会太少了,于是自己设置了8G;然后是“/boot”,我分了300M,网上都说这部分200M足够了;最后剩下的空就留给“/home”了。这部分内容我也不懂,完全是参考网上的说明设置的,毕竟对linux具体原理一窍不通。\x0d\x0a\x0d\x0a然后分区结束后,需要选择安装启动引导其的设备,这部分貌似很关键,但是我也不懂原理,就听网上说的,什么是从ubuntu启动器,什么是从windows启动器。我按照其中的一种说法设置的,讲设备选择为刚才设置的“/boot”那个设备。\x0d\x0a然后就是安装了,安装过程比较慢,可能是我这儿网速比较慢。其中“正在下载语言包”“正在下载软件包”这两处很慢,每个至少得20mins,可能是因为我这热网速太慢了。还有就是最后一步卡在“执行安装后执行的触发器 update-notifier-common”这一步有20min后,我怀疑有问题,看网上很多人出现这个问题,有人说断网可以解决,我断网后一段时间好像解决了,但是我不知道这个是不是因为断网而解决的。\x0d\x0a\x0d\x0a简单两张图表示我的确安装了。成功后设置用户名,密码之类的就可以了。然后需要重启。\x0d\x0a\x0d\x0a第五步:\x0d\x0a重启后有画面可以选择进入什么系统,具体记不清了,基本就是:1、Ubuntu 2、windows 3、windows 4、设置(就是进入BIOS)。我选择了进入Ubuntu,一切顺利,虽然我会用,但是欣喜的看到安装成功了。然后,问题没这么简单,我想重启后进原来的win10用easyBCD软件设置一下启动顺序啥的时,发现重启页面选择2或3都进不去windows,基本意思就是找不到文件啥的。这个双系统的引导是用Ubuntu引导的,我本来是想让他用win10引导的。后来简单百度了下,可以先通过BIOS设置优先级进入win10,我按照这个方法设置后进入了windows(然而时间不对了,以因为我的本是美版的,刚买的时候时间就差几个小时,虽然选了时区也不对,最后还是手动设置的时间,这次也是手动设置的。),但是开机后没有选择进入那个系统,就是说我想要的还没有。\x0d\x0a我用easyBSD试着设置了一下,看效果如何。\x0d\x0a\x0d\x0a有效果,在开机界面出现了选项。可以顺利进入win10.不过安装双系统就跟开机10s内完成说byebye了。然而开机界面选择了ubuntu但是进不去,提示找不到 \EFI\ubuntu\shimx64.efi。意思就是现在主板用efi启动,而在efi分区没找到相应的ubuntu分区。如果找到这个文件并把他放到应该在的efi分区中,应该就能正常启动了。于是我装了DiskGenius,瞅了一眼没找到ubuntu的efi,找到了windows的efi。我再windows自带的磁盘管理中看到两个efi分区,大小都是260M,有点纳闷,怎么会有两个????于是也没多想,就把之前装的ubuntu分区给删除了,准备重装,并且装的时候记得把分区下面那个引导位置设置为我windows的efi分区,这样应该就能正常启动双系统了。当我刚刚删除分区后突然意识到我之前因为新加了ssd,所以克隆了系统,所哟应该就有两个efi分区,原来的hdd上一个,后来的ssd上一个。于是按照这个思路,我再hdd的efi分区中找到了ubuntu的那个shimx64.efi文件。然并卵,我已经删除了分区,不得不重装了。\x0d\x0a在重装之前,听人说需要关闭windows的快速启动(windows+x,里面电源选项中有,选择电源按钮的功能,更改当前不可用的设置,把“启用快速启动前面的对号去掉”),同时还需要在BIOS菜单中,在security下找到secure boot项,把UEFI那项设置为DISABLE。\x0d\x0a然后重装,这次比上次快不少。进入ubuntu照样正常,不过从ubuntu界面进windows不正常,好像进入了一个修复windows的界面。而且没法后退,只好强制关机了。又从BIOS进了windows系统,开始设置双系统启动,用easyBCD。\x0d\x0a\x0d\x0a设置完之后,还是跟之前一样的问题,找不到efi文件。我用DiskGenius看了看,那个ubuntu的efi文件还是在hdd的efi分区中,没在ssd的efi分区中。而且没办法复制过去,每次打开ssd的efi分区想要 *** 作(比如新建文件夹,粘贴之类的),就提示说这个分区没有正确加载,可以尝试重启,然而重启也没什么用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11736263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存