1.了解开机启动流程的意义
1.掌握让某个软件开机自动运行,即使得以后自己开发的程序可以具备自动开机启动的能力。
2.当服务器出现故障无法开机,或者服务启动不了时,能够查看到是在开机哪个环节出现了问题,具备一定的故障排除的能力。
3.同时也可以查看在开机过程中是否有木马病毒潜伏,查询黑客可能会把木马放在哪些地方,与此同时,可以更好地预防木马病毒的入侵。
2.关于开机关机的命令
1. 开机命令:boot 启动 、 init 6 (重启);
2.关机命令:init 0 、 poweroff 、 half 、 shutdown -h -now (立即关机) 、 shutdown (一分钟后关机) 、 shutdown -c (取消关机)
3.开机启动详细流程
首先,我们先有一张图片了解一下开机启动的流程,上面是详解版,下面的是简版。后文进行详细讲解。
3.1 开机自检
第一步,通电开机启动(power on)首先就会进行自检(POST),由已固化在主板上的BIOS程序来完成自检的工作(打开计算机电源,计算机硬件会自动加载BIOS),检测主板上的各个硬件是否存在,若不存在就会给出相应提示(主板motherboard: 是所有硬件的载体,插到主板上,所有的硬件之间的数据传输靠主板传送)。
3.2 /boot启动顺序检查
若没有问题,会启动第二步,/boot启动顺序检查,会以第一启动顺序进行启动,这里系统的第一顺序是以硬盘启动 。
扩展:以下是系统默认的引导顺序,可以人为的调整:第一引导顺序——hard drive(硬盘)、第二引导顺序——cdrom(光驱)、第三引导顺序——removable devices(可移动设备,u盘,移动硬盘)、第四引导顺序——Network boot(从网络启动)。
3.3 硬盘、MBR
第三步,看硬盘的第一个扇区是否有主引导记录(MBR),系统找到BIOS所指定的MBR后采用MBR中的grub2引导程序加载文件系统的驱动文件(存放在/boot中),系统读取内存中的grub配置信息(一般为menu.lst或grub.conf),并依据此配置来加载指定内核,加载内核中的vmlinuz文件和initramfs文件。
扩展:1.MBR全称为master boot record,即主引导记录。 2.第一个扇区(0柱面0磁道1扇区)是磁道里的一个非常重要的位置(磁盘最开始的位置),是固定的,占一个扇区的位置,一个扇区是512个字节。 3.vmlinuz文件是linux的内核文件,是一个可执行的程序 ,相当于皇上。 4.initramfs文件是一个压缩文件,给vmlinuz提供很多程序和驱动的文件,在内存里形成一个临时的根文件系统。
3.4 systemd进程
第四步,加载这个内核文件的systemd进程之后,会启动对应的运行级别里的服务。运行级别(run level):是比较老的概念,在centos6中非常流行,到了centos7以后这种说法就不常见了。
一共有一下几种运行级别:0: 关机; 1:单用户模式; 2:多用户模式,但不能使用网络资源(NFS) ;3:字符界面(完全多用户模式,有NFS); 5:图形界面; 6:系统正常关闭并重启。 现在常见的是两种运行级别,一种是运行级别3:multi-user(字符界面),这个级别消耗资源和内存相对较小;另一种是运行级别5:graphical(图形界面),这个级别消耗资源和内存相对较大。这个运行级别的命令设置格式是:init 运行级别(例:init 0 关机;init 6 重启)。
扩展:1.使用命令行yum install runlevel先下载命令runlevel,然后就可以使用runlevel命令查看当前的运行级别(N 3 , N表示NO 开机直接进入运行级别3 没有其他的级别;5 3 , 开机的时候进入的是运行级别5 现在是运行级别3); 2.systemctl get-default 查看默认的启动模式(运行级别); 3.systemctl set-default multi-user.target 设置为多用户模式; 4.systemctl set-default graphical.target 图形界面模式
3.5 /etc/rc.local、/etc/fstab
第五步, 启动驱动中的完全多用户模式(字符界面,即mutil-user)后,运行/etc/rc.local这个脚本里的命令,加载一下配置文件/etc/fstab,然后输入用户名密码之后,系统根据/etc/passwd和/etc/shadow文件检查用户名和密码是否正确,然后进入控制台命令行模式
3.6 运行初始化文件
最后,加载用户的环境变量初始化文件(~/.bashrc、~/.bash_profile、/etc/bashrc、/etc/profile),加载bash提示符之后,开机启动流程就成功完成了。
扩展:四个用户环境变量的配置文件,1.影响某个用户: ~/.bashrc、~/.bash_profile
2.影响所有的用户:/etc/bashrc、/etc/profile