linux添加windows引导 win10和ubuntu双系统开机引导

老铁们,大家好,相信还有很多朋友对于linux添加windows引导和win10和ubuntu双系统开机引导的相关问题不太懂,没关系,今天就由我来为大家分享分享linux添加windows引导以及win10和ubuntu双系统开机引导的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

Linux与Windows 10用grub引导教程

去年暑假的时候,写了一篇如何装 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双系统也配置完毕了。

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

最后:祝使用愉快。

请问怎么用grub2直接引导win10,本人Linux新手

1、首先在VMWare或VirtualBox中执行update-grub命令,如果是双系统或者三系统,那么将看到GRUB以及其他操作系统入口。

2、接着在/etc/default/grub里的GRUB_BACKGROUND行找到在/boot/grub/里的第一个图像,使用Kali Linux GRUB启动图像,启动之后检查.png属性。

3、然后找到/etc/alternatives/desktop-grub符号连接,检查/etc/alternatives/desktop-grub的属性,它指向上面的.png文件。

4、接着检查/usr/share/images/desktop-base/kali-grub.png的属性,以确保下载相同类型和大小的文件,使用PNG,JPG/JPEG以及TGA类型的图像文件作为GRUB 2的背景。

5、然后安装desktop-base软件包,符合规范的图像将放在/usr/share/images/desktop-base/目录中。

为什么linux引导windows

解决Linux和Windows双系统的引导问题

尺有所长,寸有所短.虽然能完全用Linux工作,娱乐.但计算机只是为人类服务的.怎么方便怎么来,操作系统亦然, Linux和Windows都给装上.

本文中, Windows使用XP, Linux选用Ubuntu.但其实基本思想是一样的: Linux现在流行的bootloader是grub. xp和nt采用的是ntloader.

Ubuntu论坛里的这篇文章主张采用这样的引导方式: ntloader-> grub-> win/lin.但正如有的网友所说, grub考虑到了引导windows,而ntloader还没有考虑过引导windows之外的其他系统.而且,使用ntloader来引导比较繁琐.不如使用grub引导简便.这里我使用grub来作为bootloader.

先补充一下基础知识:理解Linux的启动过程.另外,手头要有xp和Ubuntu的安装光盘.(Ubuntu的LiveCD,用以挂载硬盘分区以及恢复mbr).在开始之前,要知道这样几个事实:(1) PC启动时,在加载bios之后,紧接着就加载位于mbr中的bootloader,这个bootloader可以是ntloader,也可以是grub.(2)安装windows系统时,安装程序会把ntloader写入到mbr作为bootloader.(3)grub可以被安装到mbr,也可以安装到其他位置.但Ubuntu的liveCD进行安装时是默认安在mbr中的.

这样问题就来了:怎么才能保证双系统能正常启动呢?如果重装了其中的一个系统,如何保证另外一个系统不受影响呢?这就是这里要说的问题.

第一次安装

先安装Windows,然后安装Linux.采用这样的顺序不光是为了避免ntloader覆盖掉grub(就算被覆盖了,也有解决办法,在后面介绍),更因为Linux可以被装在扩展分区而Windows不行.另外,安装linux时, grub会检测到已有的分区,从而生成合适的启动选项来加载windows系统.

要注意的一点就是文件系统,可以采用这样的方法:在最开始安装windows时把计划给linux用的空间分为一个区,之后在安装Linux时将这个区删除,然后重新创建新的多个分区. Ubuntu liveCD已经做得很傻瓜化,安装不会碰到任何问题.

恢复MBR

相比Linux, Windows会比较频繁地重装,重装之后的mbr会被覆盖,从而无法引导linux系统.解决整个问题只需要恢复以前的MBR.重装Linux则不存在任何问题.因为grub会检测到已有的windows分区.

首先备份mbr,使用dd命令将硬盘第一个扇区的头446字节'抓'下来保存.之后重装完windows之后再恢复mbr.这需要用到linux启动光盘.启动进入命令行,挂载那个被保存的mbr文件所在的分区,然后用dd命令恢复就可以了.(注意我的是SCSI硬盘,所以是sda, IED硬盘为hda)

备份MBR:

# dd if=/dev/sda of=/boot/boot.NNNN bs=446 count=1

恢复MBR:

# dd if=/boot/boot.NNNN of=/dev/sda bs=446 count=1

-为什么不是512呢,主引导扇区是一个扇区(512字节呀)?

-只把主引导扇区的备份文件boot.NNNN的前446个字节重写入主引导扇区。

boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把

512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘

DPT表也破坏掉.

MBR-> Main/Master Boot Record,有些书上是写成Master的.

我认为可以分成三个部分吧, MBR+DPT+MagicNumber(446+64+2=512)

这也就是为什么进行MBR备份的时候要指定bs=512或者 bs=1k, count=1的原因.然后恢复时经常看到HOWTO里面是bs=446 count=1.这个446就是指令部分的恢复,不是DPT的恢复.往往MBR里面的第一个指令是cli...研究起来是比较有意思的.

阅读剩余
THE END