双系统应先安装windows再安装linux

MBR

MBR(Master Boot Record)是一种用于处理开机管理程序(bootloader)和分区表的一种方式,它规定磁盘的第一个扇区存放两个东西:bootloader和分区表

bootloader用于作为系统启动的引导程序,它会认识磁盘内的文件系统格式,因此可以读取系统的核心文件并执行。而分区表则用于指定磁盘分区如何划分的

MBR有很多缺点,例如第一个扇区损坏会导致磁盘无法读取(MBR没有备份),第一个扇区大小有效,导致分区表最多只能设置4个分区(可以通过其他方式设置子分区)等,GPT就是用于取代MBR的,由于磁盘的发展,一个扇区的大小可能不一样,为了统一,它规定了逻辑区块,称为LBA,一个LBA可以是一个或多个扇区的集合。

GPT使用磁盘的前34个LBA来记录分区信息(可以分更多的区),同时将磁盘最后33个LBA用于备份。bootloader同MBR一样,存储在LBA0区域,为了表述简单,下文中统一使用MBR代表磁盘一开始存放的bootloader的区域。

Bootloader

bootloader也是一段程序,它的主要作用是找到并执行系统的核心文件,但在此之前,它还可以:

  • 多系统环境下提供一个启动选项,用户可以选择启动哪一个系统
  • 如果用户选择了启动其他系统,则bootloader会去执行其他系统的bootloader

也就是说,每个系统在安装时都会安装一个bootloader,linux常用的bootloader是grub

但前文不是说bootloader安装在MBR吗?MBR不是只有一个吗?

MBR确实只有一个,bootloader却可以安装在每个分区的首个扇区。

BIOS

BIOS是一段固定在主板上的程序,是主机启动的第一个程序,用于硬件检查,并引导执行bootloader

BIOS比较老,它并不能识别GPT磁盘,UEFI是BIOS的升级版,使用C语言编写,提供比BIOS更强大的功能,有些UEFI提供非常好看的界面,它甚至可以提供网络连接,有些甚至自带有浏览器,使得你都不用进入系统就能上网。

所以你可以认为操作系统只不过是BIOS或UEFI的一个软件,而bootloader则是该软件的启动器

文件系统

MBR和GPT只是负责将一块物理磁盘分成多个逻辑分区,这一块由BIOS或者UEFI负责识别,而分区后还需要对分区格式化文件系统,例如windows的ntfs,U盘的fat32,centos的xfs,linux的ext4等,所以文件系统是操作系统负责识别的

windows和linux

首先要知道,将一个系统安装到一个分区上,它一定会将自己的bl安装到该分区的启动扇区(首个扇区)上,区别在于是否会覆盖磁盘的MBR区域

linux安装bl时,可以选择将bl仅安装到分区的启动扇区,或者选择同时安装到MBR区域

windows安装bl时,会强制安装到分区的首个扇区并覆盖MBR区域,主要还是windows的bl不支持多重引导(即它会直接启动windows而不会让你选择是否重定向到其他bl)

所以,如果先安装linux再安装windows,则windows会将MBR覆盖为windows的bl,启动时会直接进入windows

而先安装windows后再安装linux,就可以将linux的bl(一般是grub2)安装到MBR,而linux的bl支持选择启动bl,所以启动时它会有选项是否启动linux还是重定向到windows的bl(启动windows)

这个就是grub提供的启动选单

当然,即使是先装了linux也没关系,linux在安装时,你不仅可以选择安装linux,同时也提供一个troubleshoot的选项,这里面就有修复MBR的功能,所以你要做的就是重新进入linux安装界面,但选择troubleshoot选项

参考

《鸟哥的Linux私房菜-基础篇》第四版 P93

Leave a Comment