Linux系统启动(银河麒麟)

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

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

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

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

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

应用程序 USER APPPROGRAMSUTILITIESTOOLS

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值