说明
本文主要讲解windows系统及linux系统电脑从开机按电源键到操作系统启动完毕的全过程讲解。
Windows系统启动
Windows系统电脑从按下电源键到系统启动完成,这一过程称为"启动过程"或"开机过程"。从按下电源键到Windows系统启动完成,整个过程涉及硬件初始化、引导加载、内核加载、系统服务启动、用户登录和会话初始化等多个步骤。每一个步骤都至关重要,确保系统能够正常启动和运行。如果任何一个步骤出现问题,可能会导致启动失败或系统异常。以下是详细的步骤和解释:
1.按下电源键
- 电源供应:当你按下电源键时,电源供应器(PSU)开始向计算机的各个组件提供电力。
2.BIOS/UEFI 初始化
- 电源自检(POST):BIOS或UEFI固件开始执行电源自检(Power-On Self Test, POST),检查计算机硬件是否正常工作,如内存、硬盘、显卡、键盘等。任何错误会通过蜂鸣声或屏幕信息提示。
- 硬件初始化:初始化硬件设备,如CPU、内存、图形卡等。
- 引导设备选择:根据BIOS/UEFI设置的引导顺序,选择合适的引导设备(通常是硬盘、SSD或光驱)。
3.引导加载程序(Boot Loader)
- MBR/GPT:BIOS系统读取主引导记录(MBR)或UEFI系统读取GUID分区表(GPT)的引导扇区。
- 加载引导加载程序:从引导设备的引导扇区加载引导加载程序。常见的引导加载程序包括Windows Boot Manager(BOOTMGR)和GRUB(用于多系统引导)。
4.Windows Boot Manager
- Windows Boot Manager工作:Windows Boot Manager(BOOTMGR)读取Boot Configuration Data(BCD)存储中的配置信息,确定要启动的Windows操作系统。
- 加载Windows内核和底层驱动程序:BOOTMGR加载Windows内核(ntoskrnl.exe)、硬件抽象层(HAL.dll)以及其他关键文件和驱动程序。
5.Windows内核加载
- 内核初始化:Windows内核开始初始化系统,包括加载核心驱动程序、初始化内存、设置系统进程和线程管理等。
- 加载注册表和驱动程序:内核加载系统注册表和所有必要的驱动程序,以支持硬件设备。
6.Windows启动过程
- 启动用户模式驱动程序:内核启动用户模式驱动程序,负责管理硬件设备和提供系统服务。
- 启动系统服务:启动关键的系统服务和后台进程,如服务控制管理器(SCM)、本地安全授权子系统服务(LSASS)等。
7.用户登录界面
- 启动登录界面:Windows显示登录界面(login screen),等待用户输入登录凭据(用户名和密码)。
- 验证用户身份:系统验证用户输入的登录凭据,确认用户身份。
8.用户会话初始化
- 加载用户配置:系统加载用户个人配置文件,包括桌面设置、用户特定的注册表项等。
- 启动用户进程:启动用户特定的进程和应用程序,如文件资源管理器(explorer.exe),加载桌面、任务栏和开始菜单。
9.完成启动
- 完成启动:Windows桌面环境完全加载,用户可以开始操作系统的正常使用。
Linux系统启动
从按下电源键到Linux系统启动完成,整个过程涉及硬件初始化、引导加载、内核启动、系统服务启动、用户登录和会话初始化等多个步骤。每一个步骤都至关重要,确保系统能够正常启动和运行。如果任何一个步骤出现问题,可能会导致启动失败或系统异常。Linux系统电脑从按下电源键到系统启动完成,整个启动过程大致可以分为以下几个步骤:
1.按下电源键
- 电源供应:当你按下电源键时,电源供应器(PSU)开始向计算机的各个组件提供电力。
2.BIOS/UEFI 初始化
- 电源自检(POST):BIOS或UEFI固件开始执行电源自检(Power-On Self Test, POST),检查计算机硬件是否正常工作,如内存、硬盘、显卡、键盘等。任何错误会通过蜂鸣声或屏幕信息提示。
- 硬件初始化:初始化硬件设备,如CPU、内存、图形卡等。
- 引导设备选择:根据BIOS/UEFI设置的引导顺序,选择合适的引导设备(通常是硬盘、SSD或光驱)。
3.引导加载程序(Boot Loader)
- MBR/GPT:BIOS系统读取主引导记录(MBR)或UEFI系统读取GUID分区表(GPT)的引导扇区。
- 加载引导加载程序:从引导设备的引导扇区加载引导加载程序。常见的引导加载程序包括GRUB(Grand Unified Bootloader)、LILO(Linux Loader)等。
4.GRUB 引导加载程序
- GRUB菜单:GRUB显示引导菜单,允许用户选择要启动的操作系统或内核版本。
- 加载内核和initramfs:GRUB加载选定的Linux内核(vmlinuz)和初始内存盘(initramfs/initrd),它们包含启动所需的基本驱动程序和文件系统。
5.内核启动
- 内核解压和初始化:Linux内核解压并开始初始化各个子系统,包括内存管理、进程管理、设备驱动程序等。
- 挂载initramfs:内核挂载初始内存盘(initramfs)为临时根文件系统,执行其内的初始脚本(init)。
- 设备检测和驱动加载:内核检测硬件设备并加载相应的驱动程序。
6.init进程启动
- 启动init进程:内核查找并启动系统的第一个进程,即init进程。传统上,init进程是PID为1的进程,通常是SysV init(/sbin/init),但现代系统多使用systemd(/lib/systemd/systemd)或其他替代方案如Upstart。
- 执行启动脚本:init进程根据配置文件执行启动脚本或启动单元,初始化系统服务和守护进程。
7.系统服务启动
- 启动系统服务:init进程启动各种系统服务和守护进程,如网络服务、日志服务、数据库服务等。具体启动的服务取决于系统配置和启动目标(runlevel或target)。
- 挂载文件系统:启动过程中,系统会挂载所有需要的文件系统,包括根文件系统、/home、/var等。
8.登录界面
- 启动登录管理器:对于桌面环境,init进程会启动显示管理器(如gdm、lightdm、sddm等),提供图形化登录界面。对于服务器或纯文本模式,启动getty进程提供文本登录界面。
- 用户登录:用户输入用户名和密码,登录管理器或getty验证用户凭据。
9.用户会话初始化
- 启动用户会话:验证成功后,系统启动用户的会话,加载用户配置文件、环境变量等。
- 启动桌面环境或命令行:对于桌面环境,系统会启动相应的桌面环境(如GNOME、KDE等),加载桌面、任务栏和应用程序。对于纯文本模式,系统会启动shell(如bash、zsh等)。
10.完成启动
- 系统准备就绪:用户会话完全加载,系统启动完成,用户可以开始使用操作系统。