流程图
1、开机自检
首先,计算机通电后会启动BIOS(Basic Input/Output System)程序,BIOS首先检查计算机硬件能否满足运行的基本条件,这叫做"硬件自检"POST(Power-On Self-Test)。如果硬件出现问题,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。
2、检查启动顺序
接着BIOS按照启动顺序,把控制权转交给排在第一位的存储设备,并读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。而这最前面的512个字节,就叫做"主引导记录"MBR(Master boot record),他主要作用是告诉计算机到硬盘的哪一个位置启动操作系统。
3、启动管理器加载操作系统
计算机读取"主引导记录"前面446字节的机器码之后,不再把控制权转交给某一个分区,而是运行事先安装的"启动管理器"(boot loader),由用户选择启动哪一个操作系统,然后把操作系统从硬盘放到内存中去让cpu执行操作系统。这里的启动管理器是grub2
4、确认运行级别,启动开机自启程序
控制权转交给操作系统后,先载入/boot目录下面的内核文件,内核加载成功后会再启动第一个进程systemd,再通过它根据运行级别runlevel启动开机自启的程序
5、用户输入账户密码登录
如果runlevel3,则进入命令行登录程序login,用户输入账号密码,login程序会根据/etc/passwd和/etc/shadow检查是否正确,如果正确就从/etc/passwd读取该用户指定的shell,运行用户家目录下的环境变量和初始化文件(/etc/profile、/etc/bashrc、~ /.bashrc、~/.bash_profile)