为什么了解开机启动流程?
排查服务器启动不了的故障,了解原因(trouble shooting)
开机->post开机自检->BIOS对硬件进行检测->boot启动顺序检查->硬盘->MBR->grub2引导程序->文件系统驱动->内核文件vmlinuz/intramfs->systemd进程->启动对应的运行级别的服务->登录->检查用户信息是否正确->运行家目录下的环境变量文件。
开机自检是主板上的BOIS(基本输入输出系统)程序会自动检测硬件。
boot引导顺序,第一启动顺序是可以调整的(在哪里启动可以在CD/等)
硬盘里面0磁道0柱面1扇区有个MBR(本质就为一个扇区)存放了linux的启动程序grub2
(PS:一个盘片可以分为很多磁道,磁道上面有63个扇区一个扇区是512字节)
grub2会去读取boot分区将一些程序加载进内存,例如vmlinuz(是linux的内核程序)initramfs(是为vmlinuz服务的程序提供一些在运行过程中需要的命令以及配置环境)
接下来内核启动systemd进程,systemd是放在intiramfs里的一个程序去启动对应运行的级别
linux系统:
单用户模式、多用户模式、完全多用户模式、图形界面
一般是3(字符界面),5(图形界面)–(常用)
命令:runlevel 查看当前的运行级别 N 3;–》N代表最开始进入的模式
init 0 关机
init 6重启 === reboot
init 5图形界面
init 3字符界面
systemctl get-default 查看默认级别
检查用户信息是涉及的文件 /etc/passwd /etc/shadow
运行用户家目录的环境变量初始化文件:~/.bashrc ~/bash_profile /etc/bashrc /etc/profile
将自己编写的程序设置为开机自启动的方式:
1. 变成服务放在system里面
2. 放在rc.local里面
3. 放在四个登录相关的脚本里
在 /usr/lib/systemd里面的system里面有很多服务是连接文件
当这些启动完了之后 还会启动/rtc/rc.loacl 这个脚本会在其他服务启动之后在执行
用yum命令安装的文件都是如此所以可以用systemctl命令启动