操作系统之前
Power-On –> BIOS –> 主引导记录(grub) –> OS
操作系统
OS –> /boot –> init进程 –> 运行级别 –> /etc/init.d –> 用户登录 –> login shell
- 加载内核:操作系统接管硬件之后,首先读取/boot目录下的内核文件。
- 启动init进程:内核文件加载后,运行第一个程序/sbin/init(初始化系统环境), PID=1,其他所有进程都是他的子进程。
- 加载运行级别: 由init进程根据运行级别(7种
/etc/inittab),加载相应运行程序/etc/rc[0-6].d/(K01sysstat|S01cron|S01dbus|S01docker|S01rsync|S01ssh等)。 - 加载服务: 运行级别目录下(例如
/etc/rc2.d)都是指向/etc/init.d/下的链接文件2024-04-22-Linux基础-启动流程.md。 - 用户登录:开机启动程序加载后,用户进行登录。命令行登录(init进程调用gtty,让用户输入name+pwd -> init调用login核对密码 –> 从/etc/pwd读取指定shell并启动)、ssh登录(sshd服务取代getty和login)、图形界面登录。
- 打开bash:读入
/etc/profile(全局),然后读取~/.bash_profile|~/.bash_login|.profile(当前用户,这三个文件有一个存在则不会读另外两个)。
init进程在上面2、3、4阶段
用户登录后的配置读取:/etc/profile为系统通用设置;~/.profile为个人且需要被子进程继承的设置;~/.bashrc为个人不需要继承的设置;