前言
由于我的两台Macbook的容量都非常捉急,很早之前就有想将linux/windows安装在u盘上作为移动环境的想法。但是手上最快的u盘只是mlc芯片的32GB版本的cz80。前几天终于剁手了带慧荣SM2246EN主控的256GB版本u盘,顺序读写达到了400MB/s,4k-64线程也有100+MB/s,达到了系统正常读写的速度需求,甚至可以小小追上普通SSD的速度。u盘作为移动系统磁盘的物理条件已经具备。但是本身对于现代主板/操作系统的boot up的方式的知识比较欠缺,之前OS课程学的只有传统BIOS+MBR启动的方式。
故本文将记录对于现代主板/操作系统boot up的基本知识的学习笔记。
与Boot相关的概念
为了搞清楚不同类型的Boot up流程,首先需要了解各种与Boot有关的概念。对于主板类型,有UEFI与BIOS。对于硬盘分区列表,有MBR与GPT。
- 传统BIOS不支持GPT分区列表,仅支持MBR格式。
- UEFI则是取代传统BIOS,它不支持MBR模式,仅支持GPT格式。
近两年出现的UEFI主板,采用UEFI+BIOS共存模式,并且BIOS中集成UEFI启动项。
下面就主板类型(BIOS/UEFI)与分区列表类型(MBR/GPT)进行详细描述:
主板类型
BIOS(Basic Input/Output System):在IBM PC兼容系统上使用,是一种业界标准的固件接口。这种主板类型比较熟悉了,老一点的机器都是使用BIOS主板。
对于支持BIOS的主板来讲,BIOS只能完成非常基本的硬件检测和初始化,以后的工作就都由bootleader来交接。
UEFI(Unified Extensible Firmware Interface):全称“统一的可扩展固件接口”, 是一种详细描述全新类型接口的标准。这种接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上,从而使开机程序化繁为简,节省时间。
对于支持UEFI的主板,主板的ROM中存放EFI shell程序,会能够识别存储介质上的分区信息和文件系统,比如fat32,并从指定的EFI/boot/目录下查找.efi文件,并执行,以后的工作就是.efi文件和bootleader的任务了。
所以对于这种主板,启动时最重要的是
.efi
文件,一般的操作系统该文件没有做啥其他事,只是将控制权转到对应的bootleader而已,实际可以在这一步加很多其他的东西。另外,对于 EFI 启动的操作系统来说,EFI 提供底层硬件的接口,这样的好处在于保护硬件,而且让驱动的更新更方便。
分区列表
MBR(Master B