硬件环境介绍
我的Win10
装在固态盘,GPT
,启动方式是UEFI
。
CentOS7
装在另一个盘。这样的方式最简洁。
读者先确定自己是否也是UEFI+GPT
,如果不是请略过这篇文章。
不过现在大多数电脑都是UEFI+GPT
,而网上一些2016年前的,标题未加UEFI
,大多数是BIOS
方式下的安装,我们是不能参考的。
F12下选择的Legacy
启动方式就是BIOS
启动。
不用担心CentOS
不支持UEFI
,CentOS7
肯定支持。
搭建CentOS7
的起因
读完黑客与画家后,越来越觉得优秀的程序员应该能横向发展,至少要有能横向发展的能力,对整个计算机系统有个全面的理解。本身我是学习硬件出身的,如果出去说装一个系统都不会的话,是多么尴尬。
正巧鸟哥的Linux私房菜是CentOS
入门的,于是开始搭建Windos10
和CentOS7
双系统。
写这篇博客的起因
写这篇博客的原因是因为我被网上的"过时"文章坑了很久,免后人踩坑。
一开始我是对着这篇文章去做的 第一篇参考文章,踩了大坑。
首先这篇文章是写在2016年的,另外虽然文章没写,但是根据他的步骤来看,他的电脑启动方式是BIOS
启动,磁盘是MBR
,区别我待会会讲。另外不能拿EasyBCD
这个工具来修复引导,它只对BIOS+MBR
启动有效。
UEFI+GPT 和BIOS+MBR启动的区别
UEFI+GPT模式的启动原理,首先我们来回顾下BIOS引导MBR分区的流程,BIOS开机自检——》读取硬盘MBR分区的主引导记录—》控制权交给引导程序-》引导程序根据安装时候的配置读取各分区记录—》根据各分区已经有的系统情况,列出启动目录—》根据用户选择,启动选择的引导文件启动用户选择的系统。
现在我们来说说UEFI的情况,主板上的UEFI模块—》硬盘内的第一个fat分区,如果分区内有EFI这个文件目录,就根据EFI文件目录的引导文件加载各类型的驱动和引导文件,启动系统同时完成自检。(如果第一个fat分区没有EFI目录则选择第二个,如果第一块硬盘没有,择选择第二块,或者U盘以此类推
基本的形式差别是:
BIOS把MBR读出来交给CPU执行,做MBR做想做的事。
UEFI是查找磁盘里的\efi\boot\bootx64.efi文件,启动这个可执行程序,让这程序做想做的事。
UEFI更先进更快。
MBR分区:
MBR的意思是“主引导记录”,它有自己的启动器,也就是启动代码,一旦启动代码被破坏,系统就没法启动,只有通过修复才能启动系统。最大支持2TB容量,在容量方面存在着极大的瓶颈,那么GPT在今后的发展就会越来越占优势,MBR也会逐渐被GPT取代。
GPT分区:
GPT意为GUID分区表,这是一个正逐渐取代MBR的新标准,它由UEFI辅住而形成的,这样就有了UEFI用于取代老旧的BIOS,而GPT则取代老旧的MBR。这个标准没有MBR的那些限制。磁盘驱动器容量可以大得多,大到操作系统和文件系统都没法支持。它同时还支持几乎无限个分区数量,限制只在于操作系统,Windows支持最多128个GPT分区。通过UEFI,所有的64位的win0,win8,win7和Vista,以及所对应的服务器都能从GPT启动
一般情况下GPT分区下的磁盘不仅有一个ESP分区还有一个MBR分区,说法是微软自留,我猜测是为了兼容的一些原因。
过程
准备工作
现在我打算固态装Win
,机械装CentOS7
。这样引导的时候最简单。也可以都装固态
1.HDD预留50G给CentOS7
安装系统使用
2.关闭Windows
的快速启动,不同主板不一样,百度如何关闭
3.进入BIOS
设置关闭Security Boot
,不同主板不一样,百度如何关闭,否则CentOS7
无法写入引导程序
4 两个U盘 分别刻录CentOS7
和Win10
启动盘
U盘刻录CentOS7
的过程没有过时也没有疑问,可以根据第一篇参考文章走。
制作U盘启动盘的时候要注意选择支持UEFI
模式的,否则会读不到U盘启动盘。
我的电脑如果选择传统启动U盘能略过这一步,没必要把相对路径改为绝对路径。意味着这里我们可以直接install
。我也试过改为绝对路径,当然也可以。如果你和网上大多数教程一样直接install
不行,那就找到U盘的绝对路径。
而UEFI下需要配置绝对路径,不修改会找不到安装路径
作图二的操作limuze /image/vmlinuz initrd=initrd.img linux dd quiet
可以看到你的U盘
可以看到,label
就是u盘名字,你的u盘名字已经在刻录的时候被改成CentOS
了 ,所以绝对路径是sdb4
。这里还要提一下的是UEFI
启动下的进入编辑是E
不是Tab
。
接下来就去进入安装选择了。这里也没什么疑问。
CentOS
安装过程中要设置磁盘分区,这个需要注意下。
这里我遇到了创建分区一直提示Core.img无法写入。
原因是在Windows下只需要分出一块较大的未分配空间就行,记住不要去格式化,保证其“未分配”属性(Linux的文件系统和Win是不一样的,NTFS和FAT32都不适用)。
还有不同的是在进入分区创建的时候,记得要有一个/boot/efi
分区,这是在UEFI
下必须有的,它是在启动的时候,去磁盘寻找启动引导文件的。
- swap交换空间,这个也就是虚拟内存的地方,选择主分区和空间起始位置。如果你给Ubuntu系统分区容量足够的话,最好是能给到你物理内存的2倍大小,像我8GB内存,就可以给个16GB的空间给它,这个看个人使用情况,太小也不好,太大也没用。(其实我只给了8GB,没什么问题)
- 新建efi系统分区,选中逻辑分区(这里不是主分区,请勿怀疑,老式的boot挂载才是主分区)和空间起始位置,大小最好不要小于256MB,系统引导文件都会在里面,我给的512MB,它的作用和boot引导分区一样,但是boot引导是默认grub引导的,而efi显然是UEFI引导的。不要按照那些老教程去选boot引导分区,也就是最后你的挂载点里没有“/boot”这一项,否则你就没办法UEFI启动两个系统了。
- 挂载“/home”,类型为EXT4日志文件系统,选中逻辑分区和空间起始位置,这个相当于你的个人文件夹,类似Windows里的User,如果你是个娱乐向的用户,我建议最好能分配稍微大点,因为你的图片、视频、下载内容基本都在这里面,这些东西可不像在Win上面你想移动就能移动的。
总的来说,最好不要低于8GB,我Ubuntu分区的总大小是64GB,这里我给了12GB给home。
(这里特别提醒一下,Ubuntu最新发行版不建议强制获取Root权限,因为我已经玩崩过一次。所以你以后很多文档、图片、包括免安装软件等资源不得不直接放在home分支下面。你作为图形界面用户,只对home分支有完全的读写执行权限,其余分支例如usr你只能在终端使用sudo命令来操作文件,不利于存放一些直接解压使用的免安装软件。因此,建议home分支多分配一点空间,32GB最好……)
- 挂载“/usr”,类型为EXT4日志文件系统,选中逻辑分区和空间起始位置,这个相当于你的软件安装位置,Linux下一般来说安装第三方软件你是没办法更改安装目录的,系统都会统一地安装到/usr目录下面,因此你就知道了,这个分区必须要大,我给了32GB。
- 最后,挂载“/”,类型为EXT4日志文件系统,选中逻辑分区和空间起始位置,
因为除了home和usr还有很多别的目录,但那些都不是最重要的,“/”就把除了之前你挂载的home和usr外的全部杂项囊括了,大小也不要太小,最好不低于8GB。如果你非要挨个仔细分配空间,那么你需要知道这些各个分区的含义(Linux(ubuntu)分区挂载点介绍)
不过就算你把所有目录都自定义分配了空间也必须要给“/”挂载点分配一定的空间。
这里我尝试了自动分区也没有问题。
如何引导文件
这一步也是比较重要的,应该是所有步骤里最关键的。因为在各种情况下,这里的做法完全不同。
EasyBCD
可以引导BIOS
+MBR
,但是无法引导UEFI
。
方案1:而我这里采取的方式比较方便了 ,两个系统安装在不同硬盘,引导比较清爽 点击参考
我在这次尝试之后成功了。开机的时候默认开启win系统,通过选择不同硬盘启动,更换系统。
方案2:也可以安装在一个固态硬盘,我没尝试
这里要注意的是将EFI挂载在一个ESP分区下,不要再新建ESP分区了。
如果在 UEFI/GPT 系统上配置 双启动,请不要重新格式化 UEFI 分区,因为已有的分区上包含 Windows 启动需要的 .efi 文件。不需要重新创建分区,只需要 #挂载分区.
其实也就是再选择完硬盘之后,选择不同系统启动,即使第一种方法下选择centos的磁盘启动之后,也是有3个选项,类似这样的选择。我也不知道会不会出现win覆盖linux的情况,如果有也可以选择方案3解决。
方案3:这个我也没尝试,安装在一个硬盘后,使用refind引导双系统。成功之后会有一个界面选择系统,不推荐如下
点击参考
固态硬盘和机械硬盘
我也是爱捣鼓,把Win
也重装了一遍,我的机械硬盘是磁盘0,固态硬盘是磁盘1,一度我以为要把机械硬盘先拔掉才能把系统安装在磁盘1,其实无关,只要安装系统的磁盘有EFI
分区即可,并且引导文件装在这个分区。
系统装0和1都可以,调皮的我甚至也尝试过,将磁盘1刷成MBR
,机械盘刷成GPT
,也没毛病,就是开机肯定慢了,变成BIOS
启动了。
最后当然是刷回来的,两个都是GPT
。
GPT
下一定要有ESP
和MSR
,我手动创建的时候忘记创建ESP
,会导致开机之后读不到```UEFI``硬盘。
末尾
在计算机中无论做什么,我们都应当知道每一步操作背后做的事情以及原理;
在开发中每一件自己口中很神奇的事情,都是自己"照葫芦画瓢"的锅。
至此我已经是一个优秀的"修机人员"了。电脑出问题请联系我。
其他参考
小白win10下安装centos7 uefi + refined 启动
如何在已安装 Windows 10 的情况下安装 Linux(Ubuntu 15.04)双系统?
亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统
Unified Extensible Firmware Interface (简体中文)
UEFI 固件
EFI_System_Partition
关于ESP分区和UEFI启动的一些问题?
鸟哥linux私房菜 第四版
Windows和Ubuntu双系统,修复UEFI引导的两种办法