开机启动流程图如下:
1、开机启动详细流程
第一步:开机启动(power on)会进行自检,post开机自检,主要检测主板上面的信息;而(打开计算机电源,计算机硬件会自动加载BIOS,读取BISO内相关硬件信息以硬件系统的自检,随后根据BIOS配置找到第一个有引导程序的设备),BISO主要是对磁盘上面的硬件进行检查。如果没有问题就启动bash,(如果有问题就会发出蜂鸣声)。
第二步:/boot启动顺序检查,以第一启动顺序进行启动,这里系统的是以硬盘启动。
启动顺序:第一是硬盘。
第三步:看硬盘第一个扇区是否有MBR(硬盘上第0磁道第一个扇区被称为MBR,即主引导程序,大小是512字节,存放了预启动信息、分区表信息),系统找到BIOS所指定的硬盘的MBR后,采用MBR中的grub2引导程序去找到系统的驱动文件在哪里(存放/boot里)。(grub的功能:提供一个菜单,允许用户选择要启动的系统或不同的内核版本;把用户选定的内核转载到RAM中的特定空间中,解压、展开)。系统读取内存中的grub配置信息(一般为menu.lst或grub.conf),并依照此配置信息来加载指定内核,加载内核中的vmlinuz initramfs 文件。
这个文件中会产生一个0号进程,0号进程会产生一个1号进程(7:systemd)和2号进程(应该不重要在这里)。
- pid为0 表示所有进程的祖宗
- pid为2表示为内核进程(服务内核)
- pid为1的为用户创建的进程(为用户服务)
第四步:加载这个内核文件中的systemed进程之后,启动相应的运行级别。之后启动相应的运行服务。
第五步: 启动的驱动中的完全的多用户状态(有NFS),检测运行级别中的/etc/rc.local或者加载一下配置文件/etc/fstab,登录根据/etc/passwd和/etc/shadow检测用户名和密码是否正确,登录后进入控制台命令行模式。
第六步:最后加载用户的环境变量(~/.bashrc、/etc/bashrc)和初始化文件(~/.bash_profile、/etc/profile),加载bash提示符。
runlevel:查看运行级别。
重装系统:需要将引导顺序调整:将CD移到前面,想要通过哪种方式重装系统,就将那种方式放在最前面。
2、开机的运行级别
开机的运行级别(init +级别)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动(关机)。
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录;单例模式。
运行级别2:多用户模式(没有NFS)
运行级别4:系统未使用,保留。
运行级别5:X11控制台,登录后进入图形GUI模式。
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。
systemd 7和 8 的1号进程,以前是init进程,centos6是init进程。
systemd除了干以前init的活,还集成了其他功能 比如说开机自启服务的管理。
查看当前的运行级别:less /etc/inittab
[root@localhost etc]# less /etc/inittab # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target
查看运行级别:
[root@localhost etc]# systemctl get-default
rc.local存放想记录的。
加载etc/fstab