1. 硬件自检(POST)
- 当电源按钮被按下时,计算机开始启动,首先进行硬件自检(Power-On Self-Test,POST),检查CPU、内存、硬盘等硬件设备是否正常。确保计算机硬件能够正常工作。
- 如果发现严重故障,则停机;对于非严重故障,则给出提示或声音报警信号。
2. BIOS/UEFI初始化
- BIOS/UEFI接管:自检通过后,BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)接管计算机的控制权。
- BIOS/UEFI会读取启动顺序设置,确定从哪个设备(如硬盘、光驱、U盘等)启动系统。
- BIOS会将MBR的内容加载到内存中指定的区域,并准备执行其中的引导程序。
3. 引导加载
- 加载引导程序:根据启动顺序,计算机会加载第一个含有引导程序的设备上的引导装载程序(如GRUB)。GRUB是CentOS中常用的引导装载程序,它负责加载Linux内核。
- 读取配置文件:GRUB会读取/boot分区上的文件系统驱动,并读取相关的配置文件(如/etc/grub.d/、/etc/default/grub和/boot/grub2/grub.cfg),这些配置文件定义了引导菜单、内核参数等重要信息。
4. 内核加载
- 加载内核:GRUB根据配置加载Linux内核文件(vmlinuz)和初始内存文件系统(initramfs或initrd)。
- 内核初始化:内核开始初始化,探测可识别的硬件设备,加载硬件驱动程序(可能会借助于ramdisk加载驱动)。内核还会以只读方式挂载根文件系统,并准备运行用户空间的第一个应用程序(在CentOS 7及以后版本中,systemd是第一个进程)。
5. systemd初始化
- 在CentOS 7中,systemd作为系统的初始化进程和服务管理器,负责系统的初始化工作。
- systemd会按照预设的target配置,依次启动各种系统服务和单元。
- 例如,systemd会先执行initrd.target来挂载/etc/fstab中定义的文件系统,然后从initramfs根文件系统切换到磁盘根目录。
- 接着,systemd会执行默认target配置(通常是graphical.target或multi-user.target),根据配置启动相应的系统服务和程序。
6. 用户登录
- 系统进入多用户模式,允许多个用户通过登录界面输入用户名和密码进行登录。
- 系统通过比对/etc/passwd和/etc/shadow文件中的信息来验证用户的身份。
7. 用户环境初始化
- 验证通过后,系统会运行用户主目录下的初始化文件(如/.bashrc、/.bash_profile等)。
- 用户成功登录后,系统显示bash提示符,用户可以开始交互操作。
8. 系统运行
- 此时,系统已经成功启动并运行,用户可以通过命令行界面与系统交互,执行各种命令和应用程序。
注意事项
- BIOS与UEFI的区别:需要注意的是,虽然BIOS和UEFI都负责启动过程,但它们在实现方式和功能上有所不同。UEFI是BIOS的现代替代品,提供了更快的启动速度和更多的功能。然而,无论是BIOS还是UEFI,在启动过程中都会读取MBR(对于使用MBR分区的硬盘)。
- MBR与GPT的区别:MBR是一种老旧的分区表格式,而GPT(GUID分区表)是一种更现代、更安全的分区表格式。UEFI通常与GPT分区一起使用,而BIOS则与MBR分区一起使用。然而,现代的主板和系统也支持在BIOS模式下使用GPT分区,但这通常需要额外的配置或引导加载程序(如GRUB的EFI版本)。