如果你打算在电脑上安装双系统,三系统或更多系统(windows/linux/macOS),那么你可能会遇到许多以前从未听说过的术语。
这篇文章的目的就是帮你扫清这个障碍, 在安装双系统时就不会那么慌了。
01、分区和硬盘
大多数计算机都自带一个或多个分区的磁盘
把电脑上存数据的地方想象成一个巨大的披萨。整个披萨就是一个"磁盘",一小块就是一个"分区"。如果披萨没有被切开,它就只有一个"分区"。大多数情况下,此分区通常就是"Windows"味的。。
如果披萨足够大,你可以将此分成若干块以上,并赋予其他部分自己的风味(如 Linux)。你可以用多种方式切披萨。可以根据需要调整大小。
将磁盘比喻成披萨,感觉怪怪的?那么怎么在系统查看分区情况呢?
在Windows系统的电脑上,打开磁盘管理器,就可以看到磁盘以及其分区情况。
在Linux系统中, 使用命令 fdisk -l 查看磁盘分区情况。
使用Gparted等第三方工具也可以在Linux下查看磁盘分区情况。
在macOS中,通过命令 diskutil 以及“磁盘工具” 同样能看到磁盘的情况。
为什么需要多个分区?
有很多原因。当然要想安装双系统,同时使用Windows和Linux, 或者像是PS的素材需要存放在一个非系统分区上,或者像是傲梅轻松备份傻瓜版一样的一键式还原系统的软件,需要另外一个分区来存放备份镜像。
同样,对于双系统来说,创建一个多个操作系统兼容的exFAT文件系统格式的分区,也会免去一些不必要的麻烦。
02、主分区、扩展分区和逻辑分区
主分区是硬盘上的"主要"分区。由于 BIOS/MBR 系统框架设计上的缺陷,
引入了扩展分区和逻辑分区的概念, BIOS/MBR 磁盘仅允许创建 4 个主分区。如果需要 4 个以上分区,则必须将一个主分区转换为"扩展分区"。在"扩展分区"中,就可以创建许多较小的分区,这些分区就是"逻辑分区"。在Windows磁盘管理器中,可以通过分区的颜色来判断分区类型。逻辑分区在使用中和主分区没区别,但是如果想要在逻辑分区中单独安装Windows的话,是没法引导的,需要在主分区中有一个引导分区(System Reserved),用来引导逻辑分区里的系统。
与BIOS/MBR对应的 UEFI/GPT的,在设计上就弥补了早起的设计的缺陷,就没有了4个主分区的限制(能达到128个分区大小)。
基本上来说,扩展分区以及逻辑分区在GPT磁盘上就没有存在的必要了,而且磁盘也没有2TB容量的限制。
近年来的主板(2012年后),基本都是UEFI兼容的主板。
03、磁盘分区 VS 挂载点
而在Linux的世界,处理分区的方式就是完全的不同了。主要的区别在于, 分区是通过“挂载”到一个“目录”来实现的,而一个目录的子目录又可以挂载其他的分区。
也就是说:如果将分区 /dev/sda2 挂载到/home/,通过Linux文件管理器访问/home/目录下的文件,就是访问物理存放在/dev/sda2这个分区的数据。
将/dev/sda3挂载到/home/bruce, 访问/bruce下的文件就是访问/dev/sda3里存放的数据。而Linux系统分区默认是挂载到根目录 “/” 下的。
04、交换分区(Swap分区)
交换分区是 Linux 在系统需要的内存超过实际可用内存时使用的硬盘区域。Linux 内核将能够交换使用较少的页面,并将它们移动到"交换空间",以便当前运行的程序可以使用释放的内存。
系统将这些页面移动到交换空间,以便电脑可以将更多资源用于处理当前任务,而不是占用 RAM 中的所有内存。
但是,交换分区中移动信息的速度和内存RAM相比还是会慢很多。
如果你的电脑内存RAM充足,有个16GB,32GB, 那么其实交换空间不是必需的,但是如果没有它,当内存已满时,系统将开始终止"低优先级进程"。(您正在使用的程序,这意味着未保存的工作崩溃和内容。您可以配置系统,以便根据需要优先选择要终止的程序。否则,您可能应该有一个小的交换空间来提供帮助)。
在Windows系统中,也有类似和交换分区差不多的概念,在Windows中,是通过虚拟内存这个功能实现的, 区别在于,Windows是默认开启,而Linux在安装的时候需要指定是否创建交换分区。
05、文件系统
创建好了分区,如果没有文件系统,那么可能就无法存储文件,视频等,因为系统需要按照一种定义好了的方式在这个分区。来存储和查找数据。
下面是常见的文件系统:
对于有些不同文件系统之间,可能是没法直接传数据,像是在Linux系统中,默认是不能直接往NTFS系统写入数据,只能通过工具像是ntfs-3g才能正常写入。
同样Windows系统不能直接识别苹果的APFS系统,苹果系统也不能直接向NTFS中写入数据,要通过第三方软件解决。
06、BIOS和MBR
当电脑插上电,首先运行的第一个系统就是BIOS。
BIOS的运行过程大概如下:
运行POST(系统自检),找基本显卡,找磁盘,将BIOS信息显示到显示器上,内存计数检查,找启动盘,将启动权交给Bootloader,执行磁盘上的系统。
在这个过程中,每个环节出错,都可能会影响系统的正常运行。
抛开硬件上导致的问题,MBR以及Bootloader在引导磁盘上系统过程中及其重要的两个部分。
MBR:主引导记录(Master Boot Record),又叫主引导扇区,一种特殊的引导扇区(boot sector),存在磁盘上的第一个扇区,是开机BIOS访问硬盘所必需的扇区。
扇区: 在磁盘中,一个扇区(sector)是其上面的一个磁道的分区。每个扇区存储固定数量用户可访问的数据,目前其大小主要分为512字节,以及4096字节,后者就是所谓的高级格式(AF)磁盘,操作系统最小的存储单位是簇,由多个磁道扇区组成。
MBR有啥作用?
所以,MBR损坏的后果,就可能导致没法进入第二阶段引导加载Bootloader。
开机可能遇到这样的报错:
或者这样:
分区表损坏,可能是这样的报错:
除了以上常见的错误提示,损坏的MBR,可能还有其他表现。
由于MBR是存放在磁盘的第一扇区,并不是嵌入到ROM中的,所以修复起来相对容易一些。
关于如何备份,在Linux下可以使用dd命令备份 磁盘前512个字节就行。比如:
dd if=/dev/sdb of=/mbr-backup bs=512 count=1
修复MBR, 可以在Windows下(PE)下使用bootrec.exe 或者使用傲梅分区助手及其他第三方软件。
当然,启动引导的失败,除了在第一阶段MBR除了问题外,第二阶段bootloader加载失败,同样也会导致启动失败。
MBR的缺点在磁盘与分区小结中也说过,分区表的结构导致只能有4 个主分区而且最多使用2TB。如果硬盘较大,2TB的空间便没法使用。
随着大容量磁盘的出现,MBR已经不再适应, 新的框架UEFI+GPT正在逐渐干掉BIOS+MBR。
07、UEFI和GPT
GPT:"GUID分区表",它是 MBR 的替代品,和MBR相比没有 2Tb 磁盘大小限制,也没有4个主分区的限制。
UEFI代表"统一扩展固件接口",它取代了有缺陷的"BIOS"框架。在UEFI设计中,有一个用于存储所有重要引导数据的FAT文件类型的分区,称为"EFI 系统分区"(ESP),所有引导加载程序和一大堆其他重要的引导相关内容都应该放在 EFI 分区上。
与传统的BIOS不同,UEFI不依赖于引导扇区,而是将引导管理器(Boot Manager)定义为UEFI规范的一部分。当计算机通电时,引导管理器会检查启动配置,并根据其设置加载到内存中,然后执行指定操作系统。
这就是为什么在UEFI设置中,启动选项中会出现 Windows Boot Manager这一项,和磁盘是独立的选项。
在Windows系统中,可以通过工具,像是Bootice,查看引导管理器中有多少个启动项。
同时,UEFI支持在某路径下自动查找是否有引导程序,路径会因计算机体系结构而异。例如,在x86-64系统上的引导加载程序的文件路径为/efi/BOOT/BOOTX64.efi。 这就是为什么支持UEFI启动的USB设备,不需要手动向启动管理器中添加路径。启动Windows时,你不选择Windows Boot Manager, 选择磁盘为第一启动项,它也能引导启动。
在GPT上安装双系统时,引导加载程序建议就安装在同一个EFI 分区上,并且应将"引导条目"添加到指向与系统对应的引导加载程序的"启动管理器"中。
这样启动GPT 系统时,计算机就可以根据引导条目的顺序加载第一顺序的引导加载程序以实现引导系统。
08、引导加载程序Bootloader
Windows有自己的引导加载程序,Linux 和其他系统也有自己的引导加载程序,要达到双系统的启动,有时就需要"链式加载"(Chainloader),这意味着一个引导加载程序加载另一个引导加载程序。
目前来说,PC端常见的Booloader有以下几种:
NTLDR: Windows XP 和Windows Server 2003 等Windows NT系统使用的Bootloader。
Winloader.exe/Winloader.efi : Windows Vista+ 系统使用的引导加载程序, BIOS模式中使用的Winloader.exe, UEFI模式中使用Winloader.efi。
Grub2:大多数Linux系统使用的引导加载程序。
Clover: 第三方引导加载程序,主要用来在非苹果系统上实现苹果系统的引导。
当你在计算机上启动时有两个或多个系统可供选择时,你可以选择使用不同的引导加载程序启动哪个系统。
从GRUB2(Linux 引导加载程序)启动,选择 Linux 发行版,它将选择 Linux 内核,然后启动该过程以启动 Linux。如果选择 Windows,GRUB2 引导加载程序将加载 Windows 引导加载程序,该加载程序将继续执行其所有 Windows 内容以启动 Windows。(因此称为"链加载")
有时引导加载程序将安装在自己的分区上(通常/启动)。其他时候,它们将只驻留在分区与相应的操作系统。
长话短说。。。引导加载程序就是用来加载你选择的操作系统。
09、UEFI Secure Boot
10、fstab
fstab(File System Tab)是Unix和类Unix系统(Linux)中的一个文件系统配置文件,可用于定义磁盘分区,各种其他块设备或远程文件系统应如何装入文件系统,通常位于/dev/fstab
fstab是Windows系统中没有的概念,在Windows系统中,通常情况下磁盘上的分区是默认挂载的,但是在Linux系统,启动的时候分区不会自动挂载, 需要查找fstab文件中定义的挂载点,以便决定是否挂载某个分区,所以如果在Linux启动出现问题,有可能就是是Linux的系统分区没有被挂载,这时就可以考虑去查看fstab。