感谢Linuxcast,感谢苏勇(nash_su)老师!

系统启动流程

Linux系统启动详解

1、BIOS启动

  • BIOS(Basic Input Output System)我们称之为基本输入输出系统,一般保存在主板上的BIOS芯片中。
  • 计算机启动的时候第一个运行的就是BIOS,BIOS负责检查硬件并且查找可启动设备。
  • 可启动设备在BIOS设置中进行定义,如:USB、CDROM、HD。

2、MBR

  • BIOS找到可启动设备后执行其引导代码。
  • 引导代码为MBR的前446字节。

3、GRUB

  • GRUB是现在Linux使用的主流引导程序。
  • 可以用来引导现在几乎所有的操作系统。
  • GRUB的相关文件保存在/boot/grub目录中
  • GRUB配置文件为/boot/grub/grub.conf
  • 配置格式:
    Linux系统启动详解

4、KERNEL

  • MBR的引导代码将负责找到并加载Linux内核。
  • Linux内核保存在/boot/vmlinuz-2.6.32-279.el6.i686
  • 一般还会加载内核模块打包文件:/boot/initramfs-2.6.32-279.el6.i686.img
  • Linux为何保持kernel的精简将一些不常用的驱动、功能编译成为模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件。
  • 早期版本Linux使用initrd文件,initramfs是initrd的替代优化版本,比initrd更加节省空间、更加灵活。
  • 命令dmesg可以查看本次启动时内核的输出信息。
    Linux系统启动详解
    同样的信息也保存在/var/log目录下的dmesg文件中:
    Linux系统启动详解

5、INIT

  • init是Linux中系统中运行的第一个进程。
  • 调用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务

6、Linux运行级别:Linux系统启动详解

  • 可以通过/etc/inittab配置文件修改默认的运行级别
    Linux系统启动详解
  • 每个级别对应的启动服务保存在/etc/rc.d/rc[0123456].d中
    Linux系统启动详解
  • 命令runlevel可以显示当前及上一个运行级别
    Linux系统启动详解
  • 命令init可以修改当前的运行级别
    例如:init 3 :可以进入命令行界面

补充:

我们利用上面讲到的机制和Linux运行级别可以在忘记root用户密码的情况下修改root密码,以及对这种情况的规避措施,但由于篇幅过长,我将在把它写在其他的文章中,可以在其他的文章中查看。

That’s all.


环境:
  软件版本:VMware® Workstation 14 Pro
  Linux系统版本:CentOS 7 ×86_64 1511

如有纰漏,望不吝指出,不胜感激。

相关文章: