Linux系统架构理解

Linux系统架构理解

Linux SDK 编译 U-Boot、Kernel、RootFS
是在生成一套“能让板子从上电到跑应用”的完整系统


一、嵌入式 Linux 的完整启动链

RK356X 为例:

上电
 ↓
ROM(芯片内置)
 ↓
Loader / SPL
 ↓
U-Boot(bootloader)
 ↓
Linux Kernel(内核)
 ↓
Root Filesystem(Buildroot / Ubuntu)
 ↓
应用程序

SDK 的作用,就是 把这条链上每一段都编译出来


Bootloader

把系统从“上电”带到“操作系统运行”

典型职责:

  • 初始化最基本硬件(时钟、DDR、串口)
  • 选择启动介质(eMMC / SD / NAND / 网络)
  • 加载内核(Linux Kernel)
  • 传递参数(DTB / bootargs)

二、SDK 里每一部分

SDK 里的典型目录

u-boot/
kernel/
buildroot/ 或 debian/
rkbin/
tools/

三、U-Boot

U-Boot 是“板子的 BIOS + 引导程序”

它负责:

  • 初始化 DDR
  • 初始化 串口 / 时钟 / 电源
  • 选择从哪里启动(eMMC / SD / USB / 网络)
  • 加载 Linux 内核
  • 把启动参数(cmdline / DTB)传给内核

为什么要编译 U-Boot?

  • 换板卡 / DDR
  • 改启动介质
  • 调试早期启动问题
  • 支持 fastboot / recovery / adb

没有 U-Boot,Linux 根本起不来


四、Kernel(内核)

Kernel 是操作系统的核心

负责:

  • 进程调度
  • 内存管理
  • 中断处理
  • 驱动(GPIO / I2C / SPI / USB / 网卡 / 显示)
  • 文件系统
  • 网络协议栈

为什么要编译 Kernel

  • 加/改驱动
  • 打开内核选项(menuconfig
  • 修改 DTS(设备树)
  • 匹配不同硬件

写的 .ko 驱动,最终都是跑在 Kernel 里的


五、RootFS(Buildroot / Ubuntu)

RootFS 是“用户能看到的 Linux 世界”

包括:

  • /bin /sbin /usr
  • busybox
  • systemd / init
  • ssh / scp
  • 应用程序

Buildroot vs Ubuntu

项目 Buildroot Ubuntu
体积 极小 很大
启动速度
可裁剪 非常强
调试友好 一般 非常好
适合 产品 开发

** adb / ssh / insmod,都是 RootFS 提供的**


六、rkbin / loader

rkbin/

Rockchip 提供的闭源二进制

  • DDR 初始化
  • Boot ROM 交互
  • 安全启动相关

是 RK 芯片启动的“最底层”


七、SDK 编译产出什么

一次完整 SDK 编译,通常会产出:

u-boot.img
kernel.img / Image
dtb
rootfs.img
update.img

这些一起,才能刷进板子。


八、为什么“驱动开发只编译 Kernel 模块”

因为:

  • U-Boot:只在启动时用
  • Kernel:长期运行
  • RootFS:应用层
Kernel 模块开发(*.ko)

所以:

  • 不用每次全量编 SDK
  • 只要内核源码 + 交叉编译器

九、

U-Boot   → 管启动
Kernel   → 管硬件 & 驱动
RootFS  → 管命令 & 应用

下一步可以

1️⃣ 深入驱动

  • platform_driver
  • DTS
  • GPIO / LED

2️⃣ 启动流程

  • U-Boot 环境变量
  • bootargs
  • DTB 加载

3️⃣ 系统定制

  • Buildroot menuconfig
  • 裁剪 rootfs
  • 开机自启
posted @ 2026-02-03 23:11  沁拒离  阅读(9)  评论(0)    收藏  举报