Linux内核启动流程

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81

本文仅作为个人笔记使用,方便进一步记录自己的实践总结。
看完 Linux 内核的顶层 Makefile 以后再来看 Linux 内核的大致启动流程,Linux 内核的启动流程要比 uboot 复杂的多,涉及到的内容也更多,因此本章我们就大致的了解一下 Linux 内核的启动流程。

链接脚本vmlinux.lds

要分析 Linux 启动流程,同样需要先编译一下 Linux 源码,因为有很多文件是需要编译才会生成的。首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的。vmlinux.lds 中有如下代码:

待补充。

第 493 行的 ENTRY 指明了了 Linux 内核入口,入口为 stext,stext 定义在文件arch/arm/kernel/head.S 中 , 因 此 要 分 析 Linux 内 核 的 启 动 流 程 , 就 得 先 从 文 件arch/arm/kernel/head.S 的 stext 处开始分析。

此处贴下几个重要函数,具体参看正点原子手册。

Linux 内核入口 stext

start_kernel 函数

start_kernel 通过调用众多的子函数来完成 Linux 启动之前的一些初始化工作

init 进程

kernel_init 函数就是 init 进程具体做的工作,定义在文件 init/main.c 中

更多参看正点原子手册。
Linux 内核最终是需要和根文件系统打交道的,需要挂载根文件系统,并且执行根文件系统中的 init 程序,以此来进去用户态。这里就正式引出了根文件系统,根文件系统也是我们系统移植的最后一片拼图。Linux 移植三巨头:uboot、Linuxkernel、rootfs(根文件系统)。关于根文件系统后面章节会详细的讲解,这里我们只需要知道 Linux内核移植完成以后还需要构建根文件系统即可。

待补充。

相关推荐
H_oRIZoN_37 分钟前
Linux入门DAY45 IMX6ULL 裸机开发笔记:汇编点灯、C 语言点灯、GIC 中断梳理
linux·单片机·嵌入式硬件
M哥支付1 小时前
商户池是什么?
服务器·网络·其他·微信·金融
捷烽1 小时前
光纤熔接机是什么?工作原理与马达结构(2026)
运维·网络·信息与通信
当下新鲜事1 小时前
空调机房水泵常见问题解答:赛莱默B&G冷冻泵与冷却泵技术说明
大数据·运维·物联网·业界资讯
Wang's Blog1 小时前
Java 项目实战: 外卖平台-修改分类与新增窗口复用
服务器·项目开发
临期冰淇淋1 小时前
Unisoc 展锐平台Camera摄像头分辨率适配
linux·c语言·驱动开发
吉甫作诵2 小时前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列
Web极客码2 小时前
抵御隐蔽的慢速连接攻击:我用 Claude 编写 nftables 规则,精准压制 HTTP Slo
服务器·copilot
流浪0012 小时前
Linux系统篇36——线程(一) 线程的概念、本质和Linux的实现方式
linux·面试·操作系统·线程
桌面运维家2 小时前
云桌面一个点位多少钱:IDV 云桌面按终端数还是并发数算预算
运维·虚拟化·云桌面