Linux系统启动(银河麒麟)

您所在的位置:网站首页 linux初始化进程pid Linux系统启动(银河麒麟)

Linux系统启动(银河麒麟)

2023-08-17 02:05| 来源: 网络整理| 查看: 265

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

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

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

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

FILESYSTEMS 文件系统:简称FS,用于管理数据的存储和检索,常见的FS格式有,ext3、ext4、ntfs、fat、xfs、btrfs

应用程序: USER APP、PROGRAMS、UTILITIES、TOOLS

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

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

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

grub菜单

grub第二个选项的子菜单

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

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

• 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) • 微内核:将系统服务的实现与系统的基本操作规则区分开来。将核心功能模块化,划分成几个独立的进程,各自运行。所有的服务进程,都运行在不同的地址空间。

 

vmlinuz启动:

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

 

一、简介

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

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

二、作用

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

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

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

• init脚本文件:

• 驱动模块:显卡模块等

• 依赖库:

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

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

 

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

• Plymouth包括:客户端plymouth和服务端plymouthd

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创建,始终运行在内核空间,负责内核进程的调度和管理

            用户态/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.service是lightdm.service的软连接

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

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

 

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

  ukui-panel:桌面任务栏

  ukui-menu:桌面菜单

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

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

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

• 查看进程:

  

• 查看进程中的线程:

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

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3