Linux系统启动(银河麒麟)

Linux系统一般有4个主要部分:

内核、shell、文件系统、应用程序

Linux系统启动(银河麒麟)_第1张图片

KERNEL 内核:负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

SHELL系统的用户界面,提供了用户与操作系统进行交互操作的一种接口,是一个命令解释器

FILESYSTEMS 文件系统:简称FS,用于管理数据的存储和检索,常见的FS格式有,ext3ext4ntfsfatxfsbtrfs

应用程序 USER APPPROGRAMSUTILITIESTOOLS

Linux系统启动(银河麒麟)_第2张图片

Linux系统启动的几个重要阶段

1. BIOS:基本输入输出系统 , 硬件主板固件
2. GRUB :引导程序 , 主要引导内核启动
3. Kernel : 内核
4. Initrd :虚拟根文件系统,启动中的跳板
5. systemd :系统 init 进程,初始化系统
6. lightdm :负责显示管理

BIOS(Basic Input Output System):基本输入输出系统。BIOS都存放在ROM中,通过烧录的方式烧录进ROM,其中的内容只能读不能改。BIOS的更新指重新烧录BIOS的内存。

上电自检:(POST:Power-On-Self-Test)是BIOS功能的一个主要部分。它负责完成对CPU、主板、内存、软硬盘子系统、显示子系统、串并行接口、键盘、CD-ROM光驱等的检测。当计算机上的某一个硬件出现问题时,BIOS阶段就会报错,无法启动系统。
Boot Squence:在完成POST自检后,BIOS将按照系统中设置启动顺序搜寻软硬盘驱动器及CDROM、网络服务器等有效的启动驱动器 ,继续读入操作系统的 GRUB 引导,将系统控制权交给 GRUB 引导。

系统启动流程—BIOS

Linux系统启动(银河麒麟)_第3张图片Linux系统启动(银河麒麟)_第4张图片

GRUB是GRand Unified Bootloader的缩写,它是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。

主要流程:解析GRUB程序的配置文件grub.conf,并依配置文件决定是否显示系统启动菜单。 然后加载内核和initrd文件至内存中,而后把系统控制权交给内核。
grub 需要引导分区( boot ), boot 分区会存放内核镜像( vmlinuz ,initrd 镜像( initrd.img ,grub 配置文件( grub.cfg

Linux系统启动(银河麒麟)_第5张图片

grub菜单

Linux系统启动(银河麒麟)_第6张图片

grub第二个选项的子菜单

Linux系统启动(银河麒麟)_第7张图片

e进入编辑模式,ctrl+x或者F10进入系统引导

grub的启动配置文件(/boot/grub/grub.cfg),相关参数:

Linux系统启动(银河麒麟)_第8张图片

Linux系统启动(银河麒麟)_第9张图片

boot 分区: set root='hd0,msdos1'

           hd0 中的 0 代表第 1 块硬盘,msdos1 中的 1 代表硬盘的第 1 个分区

linux : 加载内核 vmlinux 和内核参数
initrd : 加载 initrd.img
启动参数: root=UUID=e78cf7f9-b..... (rootfs 主系统地址)

            quiet (等价于loglevel=4),日志参数

             splash启动屏幕显示动画

             security 麒麟系统安全功能

简介:

      内核(Kernel:负责管理系统的进程、内存、设备驱动程序、文件和网络系统

内核是image镜像文件,版本号为:5.4.18-32,体系结构为X86

二、微内核Microkernel 宏内核Monolithic Kernel

宏内核(集成式内核、单体式内核):运行在单一地址空间的单一的进程。内核提供的所有服务,都以特权模式在内核地址空间中运作,这个地址空间被称为内核态(kernel space)
微内核:将系统服务的实现与系统的基本操作规则区分开来。将核心功能模块化,划分成几个独立的进程,各自运行。所有的服务进程,都运行在不同的地址空间。

 Linux系统启动(银河麒麟)_第10张图片

vmlinuz启动

初始化系统中各种设备的相关配置工作,其中包括CPU、I/O、存储设备等
解压 Initrd, 调用虚拟根文件系统的 init 脚本。
创建内核态 kernel_init 进程,等待 initrd 调用执行用户态的 init 进程

 Linux系统启动(银河麒麟)_第11张图片

、简介

      initrd(Initial RAM Disk)grub阶段被拷贝到了内存中,在内核中被解压,是一个临时的虚拟根文件系统。

initrd(Initial RAM Disk)与 initramfs (Init Ram filesystem) 区别在于 initrd 将磁盘作为虚拟根文件系统,而 initramfs 将内存直接作为虚拟根文件系统。 Linux2.6 以后,均是以内存作为虚拟根文件系统,只是 Initrd 的名称被保留了下来。
initrd.img cpio 格式的压缩文件,解压缩后会得到 cpio 格式的文件。

Linux系统启动(银河麒麟)_第12张图片

二、作用

  内核为了精简,只保留了最基本的模块,并没有各种硬件的驱动程序,而initrd虚拟根文件系统装载了必要的驱动模块当Kernel启动时,内核从initrd中必要的驱动模块,完成硬件的初始化。直到挂载真正的rootfs主系统将控制权转交给rootfs主系统

initramfs系统:(grub参数中加上”break=initconsole=tty1”可在屏幕上显示。如下图)

内容:init脚本文件,必要驱动模块,基本的依赖库

Linux系统启动(银河麒麟)_第13张图片

init脚本文件:

驱动模块:显卡模块等

依赖库:

initrd文件中init脚本(/usr/share/initramfs-tools/init)的主要启动流程:

挂载虚拟根文件系统 /proc /sys /dev /dev/pts
init-top 阶段:加载内核驱动, udev 事件处理。
init-bottom 阶段:运行安全脚本, plymouth 动画显示
init 阶段: 跳转到真正的 rootfs 主系统,执行一号 init 进程,即 systemd

 Linux系统启动(银河麒麟)_第14张图片

Plymouth 提供美化启动图形界面的功能,它依靠内核设置显示器的原始分辨率,显示开关机动画。在系统开机、关机过程中生效,主要用于遮盖枯燥的系统log输出及后台流程,提升用户体验。

Plymouth包括:客户端plymouth和服务端plymouthd
Linux系统启动(银河麒麟)_第15张图片

Linux系统启动(银河麒麟)_第16张图片

Linux下有三个特殊进程:

idle进程(pid=0)

    idle进程其前身是系统创建的第一个进程,0号进程,也唯一一个没有通过fork或者kernel_thread产生的进程,由系统自动创建,运行在内核态。0号进程在创建了init进程后,演变成为idle进程。

init进程(pid=1)

    init进程由0号进程创建。内核态调用用户态init程序,从而进入用户空间。init进程继续完成系统的初始化,是第一个用户进程,也是其他所有用户进程的父进程。

kthreadd进程(pid=2)

    kthreadd进程由idle通过kernel_thread创建,始终运行在内核空间,负责内核进程的调度和管理

Linux系统启动(银河麒麟)_第17张图片

            用户态/sbin/init进程与systemd的关系

 

简介:

systemd(system daemon):是一个 Linux 系统基础组件的集合,提供了系统和服务管理。是运行为 PID 1的进程并负责启动其它进程。

内核初始化的最后一步就是启动 PID 为 1 的 init 进程。这个进程是系统的第一个进程。它负责产生其他所有的用户进程。init进程以守护进程(也就是服务)的方式存在,是所有其他进程的祖先。它负责组织和运行许多独立的或相关的初始化工作,如启动网络、声音、显示等等。从而让计算机系统进入某种用户预定义的运行模式,比如命令行模式或图形界面模式。

systemd的功能

提供按需启动能力:某个服务被真正请求的时候才启动它。
跟踪和管理进程的生命周期:当进程创建子进程时,子进程会继承父进程的资源。当停止进程时,systemd 可以确保找到所有的相关进程。
启动挂载点和自动挂载的管理: 确保 挂载点在系统启动过程中被挂载。
实现事务性依赖关系管理:系统启动过程是由很多的独立工作共同组成的,保证所有相关的服务都可以正常启动而不会出现互相依赖,以至于死锁的情况。
日志服务:systemd 自带日志服务 journald, 用二进制格式保存所有日志信息,用户使用 journalctl 命令来查看日志信息。

lightdm(Light Display Manager):是一个全新的、轻量的Linux桌面的桌面显示管理器

                 display-manager.servicelightdm.service的软连接

Linux系统启动(银河麒麟)_第18张图片

systemd将系统启动和运行相关的对象,表示为各种不同类型的单元。并用target进行进行逻辑分组(依赖关系和顺序关系)

sysinit.target:为系统运行环境做初始化
basic.target:  在环境初始化完成后执行一些基本任务
default .target :default.target是一个软链接,链接到不同的target表示进入不同的运行级别。 图形终端的graphical.target 和多用户字符终端multi-user.target

 

Linux系统启动(银河麒麟)_第19张图片

Xorg 负责屏幕的绘制
lightdm-greeter: lightdm 子进程,专门创建 ukui-greeter
ukui-greeter 登录界面进程
ukui-session 桌面环境管理器

  ukui-panel:桌面任务栏

  ukui-menu:桌面菜单

  ukui-kwin-*:桌面窗口管理器

进程是操作系统资源调度的基本单位,线程是任务的调度执行的基本单位

       简单理解:进程是程序运行的过程,线程是程序运行中进行的任务

查看进程:

  

查看进程中的线程:

线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。

资源开销:每个进程都有独立的代码和数据空间,程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行

你可能感兴趣的:(linux,linux)