369|1

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

《Linux内核深度解析》初见 - 第一章 内核引导和初始化 [复制链接]

本帖最后由 大壮嘎嘎壮 于 2025-1-19 17:26 编辑

.globl   _start

_start:

    岁聿云暮,一元复始,最近终于得空抽出时间来阅读这本《Linux内核深度解析》。

    一、Boot阶段

    在嵌入式系统中,BOOT(引导加载程序)扮演着至关重要的角色,它负责初始化硬件、加载操作系统内核或其他应用程序,并为系统的正常运行做好准备。

    本文介绍的是嵌入式设备常用的U-Boot引导程序,U-Boot分为SPL和正常的U-Boot程序两部分。SPL(Secondary Program Loader)意为第二段程序加载器,明明作为引导程序首先出场的角色为什么要叫第二段呢,这个第二段是相对于固化在芯片内部的bootrom来说的。处理器启动时首先执行的是芯片内部固化的程序,固化程序加载SPL,SPL加载正常的U-Boot程序。由于芯片内部寸土寸金,片上内存比较小,所以才采用这种方式进行初始化内存和储存设备及一些外设,为内核的加载或者固件的更新下载做准备。Uboot最后调用boot_Jump_linux函数,跳转到linux内核。至此,uboot使命结束,CPU控制权交给内核。

  

                                                                                                                             

 

    二、Kernel阶段

    1.初始化

    内核初始化分为汇编语言和C语言部分。

    汇编语言中主要执行了以下几个函数进行了一些基本的初始化流程:

        (1)el2-setup:配置执行内核的异常级别。

        (2)__create_page_tables:页表映射

        (3)__primary_switch:开MMU

        (4)__primary_switched:栈、异常向量表。数据段等初始化,调用start_kernel函数

    内核初始化的C语言的入口函数是start_kernel函数,start_kernel函数的主要职责如下:

        (1)设置页表和内存管理:
            初始化页表,确保内核能够正确地管理内存。设置内存管理单元(MMU)的配置。
        (2)初始化硬件:
            初始化处理器和硬件架构相关的设置。设置中断和异常处理。
        (3)内核数据结构初始化:
            初始化各种内核数据结构,如调度器、进程控制块(task_struct)、内存管理等。
        (4)设备驱动初始化:
            初始化设备驱动框架,为内核支持的设备做好准备。
        (5)文件系统初始化:
            初始化虚拟文件系统(VFS)和根文件系统。
        (6)启动内核线程:
            启动内核守护进程和必要的内核线程,如 kswapd(内存回收守护进程)、kworker(工作线程)等。
        (7)用户空间启动:
            挂载根文件系统。启动第一个用户空间进程(通常是 init 进程)。

    2.init进程

    init进程是用户空间的第一个进程,主要有以下作用:

    (1)启动系统服务:

        init进程负责启动各种系统服务,如网络服务、打印服务等。这些服务通常通过运行级别(run levels)来管理,不同的运行级别对应不同的系统状态和服务组合。
    (2)管理用户登录:

        init进程还负责启动getty进程,用于用户登录。在系统完全启动后,init会为每个用户已退出的终端重启getty,以便下一个用户可以登录。
    (3)处理孤儿进程:

        当一个进程启动了一个子进程并且在子进程之前终止时,这个子进程会成为孤儿进程。init进程会接管这些孤儿进程,确保它们不会成为僵尸进程(zombie process)。
    (4)系统初始化:

        init进程还承担挂载文件系统、初始化属性系统和Klog、selinux的初始化等重要任务。它通过解析init.rc脚本来初始化系统daemon服务进程。

此帖出自Linux开发论坛

最新回复

流程图画的不错   详情 回复 发表于 2025-1-20 07:30
点赞 关注

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

流程图画的不错

此帖出自Linux开发论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表