0
点赞
收藏
分享

微信扫一扫

内核在Linux启动中的中流砥柱

       内核时操作系统中最基本的部分,它在系统启动时被加载到内存里面,然后留在内存中管理系统的资源、调度进程等。

  •  内核可以管理进程、用户、内存等主要部分。
  • 在编译过程中静态链接到主机的内核模块中。
  • 有一种可加载的内核模块,在编译时没有链接到主机,但是在系统启动时或启动后被加载到动态加载到内核中。分析图如下:

 

                                           内核在Linux启动中的中流砥柱_加载

           内核在/boot目录下,引导顺序期间的内核处理由引导加载程序GRUB2加载到内核中,内核执行自解压,然后在内核中初始化。之后解压在内存中加载到inittramfs文件,内核会重新执行systemd程序。

          inittramfs是一个小型的根文件系统,在引导时回加载到内存中。系统顺利运行之后会写在掉它,挂载系统真正的根目录。实际上inittramfs是载入到系统启动过程中会用到的一个模块。

        内核在初始化时做了以下事情:

  1. 检测计算机里面的设倍。
  2. 发现设备后将设备的驱动程序初始化并加载内核中。
  3. 载入必要的驱动程序后,以只读的方式挂载到根目录文件系统中。
  4. 内核将载入第一个Linux内核中。

                                                    systemd守护进程

          systemd是内核主动调用的第一个程序,它的主要功能就是准备软件环境,为用户使用系统做准备。在systemd的启动序列中可以通过default.target来设置系统启动到图形目标(graphical.tartget)还是多用户目标(muti-user.target)。图形目标将显示登录界面,用户可以登录到桌面环境;多用户目标将显示命令提示符,用户可以在没有桌面环境的情况下登录到GUI环境。

        target可以为系统提供不同的目标服务,相当于Linux之前System V的运行级别。除了之前两个目标,还有rescue.target等不同的目标。systemd的启动顺序如下图:

                                           内核在Linux启动中的中流砥柱_加载_02

         systemd的目标扩展单元的扩展名是“.target”它取代了之前的运行级别(runlevel),允许用户在启动时只启动某一个特定的服务。运行级别可以用来定义操作系统当前正在运行的功能级别,级别从0到6具有不同的功能。另外,系统启动完成之后,会创建很多的进程。而systemd的目标单元之间的对应关系。

目标

说明

运行级别

default.target

系统启动时的默认目标

——

sysinit.target

在系统启动时进行初始化的设置目标

——

rescue.target

管理员在发生故障或者维护时的使用目标,管理员输入root密码登录来执行维护工作

1

basic.target

系统启动时进行基本设置的目标

——

muti-user.target

基于文本的多用户设置目标

3

graphical.target

图形界面登录目标

5

      如果你想查看自己系统中的目标是哪一个,可以使用systemctl命令查看,不过要在这个命令后边加一个子命令get-default才行。那如果想修改这个默认的目标该怎么办。可以利用另一个子命令set-default就可以。结果如下:

                                           内核在Linux启动中的中流砥柱_系统启动_03

从上面可以看出属于图形化界面。

如果将当前正在运行的目标迁移到另外一个目标,需要执行systemctl命令的子命令isolate和init命令。

目标迁移

systemctl isolate

init5

至graphical.target

systemctl isolate graphical.target

init3

移至muti-user.target

systemctl isolate muti-user.target

init3

转到rescue。target

systemctl isolate rescue.target

init1


举报

相关推荐

0 条评论