Linux OR windows 的启动过程详解
Process
- 启动BIOS,BIOS实际上就是主板上的一块flash芯片,它会在开机后首先启动
- BIOS中可以选择引导方式 Legacy & uEFI,两者为两种不同的引导方式,一般来说Legacy mode为传统的BIOS启动方式,而uEFI为新的引导方式
- linux一般采取Legacy mode居多,而windows 7之后 默认采取uEFI引导方式,mac引导方式为efi
- Legacy mode的过程为,根据falsh芯片中的步骤,然后读取硬盘中的第一个扇区,也就是引导程序,后面会知道是MBR引导程序,将所有的硬件检查一遍(自检POST),随后将引导权给引导程序,常见的引导程序包括Grub、clover 、rEFland等,比如在Grub中,可以选择linux或者windows启动
- uEFI mode的过程为,uEFI的固件被加载,初始化硬件,读取FAT分区上的/efi/boot/bootx64.efi来执行,根据上述文件,来加载所需要的uEFI应用,比如鼠标的驱动、蓝牙等(Legacy mode并不支持鼠标等,只支持键盘),uEFI也可以启动其它应用,比如Grub。
- 关于MBR和GPT分区方式,这两种是均为硬盘分区方式,FAT、NTFS等都是具体的某个区上的文件系统,legacy mode仅支持MBR分区方式,而uEFI mode支持MBR和GPT分区方式,但MBR需要在BIOS设置CSM
- 在linux中,进入Grub后,根据配置,加载kernal 并初始化,根据/etc/inittab中的系统初始化配置/etc/rc.sysinit脚本,跟觉kernel读取到的runlevel执行对应服务,运行/etc/rc.local,生产终端等待用户登录
- 在legacy mode,当你安装Grub后,Grub会重写你的MBR引导程序,因此MBR能够去启动Grub
Reference
https://unix.stackexchange.com/questions/94/grub-location-did-it-go-to-the-mbr-or-elsewhere
https://www.zhihu.com/question/26048255
https://www.nowcoder.com/test/question/done?tid=38279214&qid=327331#summary