双硬盘双系统安装

起因

最近因为手贱,卸载了ubuntu上的python,因为想升级一下版本,按我之前的经验可以卸载了老版本,再安装个新版本,然后一条命令

sudo apt remove python3

彻底悲剧了,先是桌面上的图标一个一个的消失,再就是各种软件不正常,重新安装桌面之后,重启了一下,发现网卡驱动也没了.连网都上不去了,无奈之下,只能重装系统了,因为我的电脑上硬盘比较多,装了好几个系统,重装ubuntu之后,window10又不太正常了.......

关于UEFI

其实归结到底,还是自己对UEFI启动不太熟悉,一直以为它和BIOS差不多的东西,好多都是按之前的经验来搞,结果弄的乱七八糟.

之前的老电脑启动引导系统都是BIOS+MBR(master boot record)模式的,因为MBR下的分区表不支持大于2T的硬盘,现在新的电脑大硬盘逐渐的多了,所以现在大多的分区都是GPT(也叫GUID分区表)模式.而UEFI启动方式也是搭配GPT模式使用的,也就是新的电脑都是UEFI+GPT模式.

UEFI只是一个标准协议,具体可以搜索相关的各种规范学习.在windows下,查看efi分区叫ESP分区,在ubuntu下看到分区是叫EFI系统,这里是同一个东西,windows安装时没找到如何定义ESP分区,应该是自动划分ESP分区,默认大小大概是100M左右.ESP分区下有一个EFI文件夹,启动文件一般是/EFI/Boot/BOOTX64.efi,引导各个系统的文件夹也放在EFI目录下,win10的目录是Microsoft,在主板中的启动项叫Windows Boot Manager;ubuntu的引导目录就叫ubuntu,和Microsoft,Boot目录同级.

双系统安装

单系统就没啥解释的了,不管几个硬盘,都是一个系统,不存在哪个引导项覆盖另一个的问题.

单硬盘双系统

网上好多教程比较老,都是针对之前的硬盘也是BIOS+MBR这种的,其实现在efi启动完全用不着那样分区.

先来说一下之前BIOS+MBR装双系统,因为主引导记录在硬盘的最开始位置,而且是固定大小,连基本的程序都放不下,所以一般系统的做法都是在开始位置放一个启动程序的地址,让开机程序去别的地方找系统.拿win+ubuntu举例,先安装window,然后在格式化出一块空的空闲盘,安装ubuntu,ubuntu要单独挂载boot分区,然后下边启动器的安装位置要选这个boot分区,安装完成后,重启只会进入到windows系统,在windows中用一个叫EasyBCD的软件,在模拟mbr单独引导一下刚才安装ubuntu的boot分区,重启之后windows的引导界面就会有ubuntu选项。

再来说UEFI+GPT启动,先安装windows,安装过程中没看到有需要自己划分ESP分区的,应该是安装向导自动分区的,之后格式化空盘,安装ubuntu,和上边的方式基本差不多,但是这里不需要单独给boot分区,如果想单独分的话,应该是单独给EFI分区挂载,其余分区看个人喜好,我是单独分/home目录,为了重装系统不格式化home目录,不担心文件丢失。而其实单硬盘装双系统都不需要再给EFI分区,使用windows安装时生成的ESP分区就行,如果单独分的话那硬盘上就会出现两个ESP分区,efi规范也没有限定硬盘上ESP的分区数量,怎么分都行,个人觉得没啥用。efi启动就这样,可以ESP分区放到任何地方,不在一个硬盘都没问题。

双硬盘双系统

双硬盘双系统和多硬盘多系统就没啥区别了,每个硬盘单独装一个系统。这里记录两个硬盘分别装win10和ubuntu18。

首先我这里想说的是,每个硬盘都最好有单独的ESP分区,而不是共用一个硬盘上的ESP分区。前边说的,ESP分区可以放到任何地方,那多硬盘的话,其实就能把所有的系统引导都放到其中一个硬盘的ESP分区上,但是我不推荐这么做,因为一旦ESP分区所在的硬盘损坏,那就会很麻烦,得单独再重新引导各个系统。而windows安装是自动划分ESP分区不能指定,所以一旦其它硬盘上有ESP分区,安装时就会用别的硬盘上的ESP,所以如果硬盘多的话,在安装windows的时候,其它盘上已经装过系统有ESP分区,最好先把这些盘拔了,或者看看有没有其它办法解决这个问题。

安装ubuntu的话,在单独一块硬盘安装,跟之前的安装过程一样,区别在于分区,单独分efi分区挂载,然后引导ubuntu的grub就是放在这个目录下的,这个目录最后是挂载到ubuntu的/boo/efi目录下。这里建议单独分efi分区,不然grub就会安装到其它盘的ESP分区,出现移除其它硬盘不能启动的问题。

系统引导修复

windows修复

windows修复,如果有两个windows,可以用一个修复另一个引导,或者进PE系统,一般用到的软件也就是UEFI引导修复工具,还有一个DiskGenius硬盘分区软件,新的硬盘可以用这个软件格式化为GPT格式。如果想删除主板上多余的开机启动项目,也可以直接用这个软件找到对应的EFI下的文件夹,直接删了,需要用的启动项再用bcdboot命令再复制一份到这个目录下。

ubuntu修复

用U盘试用ubuntu进入后,安装一个叫boot-repair的工具,用推荐模式就可以。然后选择想要在哪个ESP分区盘安装grub,这里如果在ubuntu所在的硬盘上没有ESP分区,而要强行安装到该硬盘则会报错。

grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.

这个报错是说GPT分区没有BIOS启动分区,有这么一个命令

parted /dev/sdb set 1 bios_grub on

而这个其实是把UEFI启动改成了原来的BIOS启动,想要efi启动的千万别用,所以还是要在每个硬盘都分ESP的分区。

最后windows boot manager能管理多个windows的系统,win7/win8/win10,而不能引导ubuntu系统,所以如果主板上设置的第一启动顺序是windows boot manager,则进入之后就不能再选择ubuntu了。而ubuntu的引导程序grub则可以引导windows,进行grub界面再选择时哪个操作系统。

欢迎讨论,交流,纠错~

你可能感兴趣的:(双硬盘双系统安装)