搜索
您的当前位置:首页正文

Linux运维基础(九):Linux的引导过程

来源:榕意旅游网

  • 初始化BIOS
  • 执行启动加载程序
  • 载入内核
  • 启动systemd服务

BIOS

    BIOS由两部分组成:POST代码和运行时服务。当POST完成之后,它被从内存中清理出来,但是BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。

    通常,Linux系统都是从硬盘上引导,其中主引导记录(MBR)中包含主引导加载程序。MBR是一个512B大小的扇区。位于磁盘上第一个扇区(0道,0柱面,1扇区),当MBR被加载到RAM中之后,BIOS就会将控制权交给MBR。

启动加载程序

    在单一MBR中只能存储一个操作系统的引导记录,当需要多个操作系统时就会出现问题,这时就需要更加灵活的引导加载程序。
    Linux系统支持两种常用的引导加载程序: LILO和GRUB,其中GRUB使用更加广泛。

    相比于LILO,GRUB的功能更多,其拥有交互式界面,支持网络引导,同时其使用更加安全,避免因配置文件出错而出现系统无法启动的问题。

载入内核

内核(Kernel)是操作系统最重要的组件,用来管理计算机中所有的软硬件组件,以使操作系统具有基本能力。
Centos的许多功能,比如软件磁盘阵列LVM,磁盘配额等,都是由内核提供的。

载入内核的过程就是将内核映像加载到内存中,内核镜像不是一个可执行的内核。内核映像的前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压缩,然后将其放入高端内存中。然后该历程会调用内核,开始启动内核引导过程。

Linux内核启动后,将依次完成四项工作:

  • 检查所有硬件设备
  • 驱动硬件设备
  • 以只读方式挂载根文件系统
  • 启动systemd服务

systemd 服务

在Centos7系统中,systemd进程是系统中所有进程的起点,是第一个运行的,而在Centos6中,第一个运行的进程是init。

systemd服务任务

  • 建立系统使用环境。Centos7中所有的环境都是由systemd服务管控的,比如提供,切换到其他Target等。
  • 确保系统正常运行。Centos7上所有的进程都可视为systemd服务的衍生后代,如果Linux上出现了僵尸进程(Orphan Process),则systemd服务必须结束这些僵尸进程,以确保Linux系统正常运行。
  • 监控串行端口的周边设备。systemd服务也会监控通过串行端口连接到的外部设备,比如UPS,调制解调器等。
  • 扮演终结父进程的角色。系统总是可以确信systemd进程的存在,当出现孤儿进程的时候,孤儿进程会以systemd作为他们的父进程。

systemd服务的特点

  • PID永远为1,由于systemd服务是Centos7启动后第一个被启动的程序,因此,systemd服务第一个特性就是其进程标识符(Process ID,PID)永远为1。
  • 无法被root用户终止。Centos7系统上所有的进程都可视为systemd的子进程,如果systemd可以被任意终止的话,那么系统中所有的进程都将会被结束掉。为避免这种情况发生,systemd服务被设计为无法被任何用户终止,包括超级用户(root)。

初始化系统环境

一般来说默认的default.target只是一个软链接,它所指向的是一个服务集合。
一个服务集合一般依赖于另外一个或多个服务集合。
可以通过 systemctl list-dependencies <target> 进行查看

部分target的分析

local-fs.target 和 swap.target

这两个target 主要用于管理本机 /etc/fstab 文件所记录的相关设备的挂载动作

sysinit.target

该target主要用于侦听硬件,载入所需核心模块。例如特殊文件系统的挂载,包括dev-hugepages.mount,dev-mqueue.mount等,RAID磁盘阵列,iSCSI存储,LVM逻辑卷等也使用该target管理,以及其他日志,终端字体,额外的核心参数等都用到该target

basic.target

该target用于加载主要的硬件驱动和防火墙等时,牵扯到firewalld防火墙,SELinux的安全设置,开机日志等模块的加载

multi-user.target

因篇幅问题不能全部显示,请点此查看更多更全内容

Top