Linux内核移植 | 认识Linux内核

本文深入解析Linux内核作为操作系统核心的重要性,涵盖内核的免费、开源特性,以及其在嵌入式产品开发中的优势。详细介绍了Linux内核的子系统,包括进程管理、内存管理、文件系统、网络协议和设备管理。同时,阐述了内核的编译过程及启动流程,为读者提供了全面的Linux内核知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux内核概念

从技术上说 linux 是一个内核,而一个内核不是一套完整的操作系统。通常我们使用的 linux 系统是一个集 linux 内核、工具集、各种库、桌面管理器、应用程序等一体的一个发布包 (发行版)‏。


对于一个嵌入式产品,应用要在系统上运行。小公司看中成本,中小级别公司产品是否可以二次开发,大型公司更看中产品提供的服务是否安全稳定。而Linux内核的免费、开源、高可靠性、支持硬件平台广泛恰好符合都有要求。

linux 各个版本下载地址 Index of /pub/linux/kernel/

Linux内核子系统

  • 进程管理
  • 内存管理
  • 文件系统
  • 网络协议
  • 设备管理

Linux源码的目录结构

内核编译(使用已经移植好了的内核源码)

分别对内核和设备树进行编译,设备树是描述芯片与外围硬件的配置信息的一类数据结构。

make uImage  编译内核,生成镜像文件uImage

make dtbs       编译设备树,生成.dtb文件

启动流程

在嵌入式系统中,由Bootloader引导加载内核,然后运行内核,挂载根文件系统,运行应用程序。

在开发调试阶段,通过tftp网络引导内核,产品开发成功之后,还需要将uImage ramdisk等放到EMMC上,通过EMMC启动就可以了。内核启动流程:

  1. 自解压内核 decompess     (arch/arm/boot/compressed/head.S)
  2. 运行内核汇编部分 head.S 入口stext  (arch/arm/kernel/head.S)
  3. 检测合法性(CPU 类型,机器类型)
  4. 运行内核C部分  start_kernel  (init/main.c)
    1.         CPU,机器参数的安装   setup_arch
    2.         中断,定时,终端,内存等最基本的初始化
    3.         创建核心进程 kernel_init运行,启动多任务调度
  5. 挂载rootfs
  6. 运行第一个应用程序init  (一般是 linuxrc)
     

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hinzer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值